jsonscraper
Markkinat
Takaisin lehteen

IG: näin tunnistat julkisten profiilien ongelmat ennen kampanjaa

Tarkista profiilin tila, yksityisyys ja perustiedot API:n kautta ja muuta tilien manuaalinen tarkistus toistettavaksi raportiksi

Toimituksellinen linjaus Ilmoita virheestä

Ennen kampanjaa IG-tilien luettelo voidaan käsitellä skriptillä, joka muodostaa JSON-raportin API:n vastauksesta kullekin käyttäjänimelle. jsonscraperin IG Scraper API -reitti palauttaa ulkoisen tilan ja profiiliobjektin; havaittuun skeemaan kuuluvat käyttäjänimi, yksityisyyden ja vahvistuksen ilmaisimet sekä julkaisujen, seuraajien ja seurattujen tilien määrät. Näiden kenttien avulla voidaan poimia tietueet manuaaliseen tarkistukseen, mutta ne eivät yksin selitä puuttuvan tai odottamattoman vastauksen syytä.

Artikkeli: IG: näin tunnistat julkisten profiilien ongelmat ennen kampanjaa
Yhteenveto: Tarkista IG-profiilit automaattisesti ennen kampanjaa: hae tiedot jsonscraperin kautta, tallenna vastaukset ja kokoa luettelo tileistä, jotka vaativat manuaalista tarkistusta.
Kuvan rooli: kansikuva — keskeinen ajatus
Osio: 
Visuaalinen aihe: toimituksellinen valokuva kampanjatilin tarkistuslistasta puhelimen vieressä. Puhelimessa näkyy yleisluontoinen IG-profiilin siluetti, valintamerkeillä merkityt tarkistuskohdat ja pieni JSON-tietokortti; ei re
Esitarkistus muuttaa käyttäjänimiluettelon tietueiksi, joissa on API-vastaus ja tarkistettavat kentät.© jsonscraper · luotu tekoälyllä

Ongelma: käyttäjätilien luettelo näyttää oikealta, mutta onko se valmis käyttöön?

Kampanjan työtaulukossa voi olla uudelleennimettyjä tilejä, kirjoitusvirheitä ja yksityisiä profiileja. Jos tiimi alkaa analysoida luetteloa ilman esitarkistusta, jonkun on avattava tilit yksitellen. Automaattinen läpikäynti vähentää manuaalista työtä ja jättää yhtenäisen lokin siitä, mitä API palautti kullekin pyydetylle käyttäjänimelle.

Tämän työnkulun tavoite on rajattu: käydä luettelo läpi, tallentaa todelliset HTTP-vastaukset ja JSON sekä nostaa manuaaliseen tarkistukseen profiilit, joissa on kampanjan kannalta tarvittavia ominaisuuksia. Raportti tallentaa havaintotiedot; se ei määritä, miksi profiilia ei palautettu tai miksi pyyntö epäonnistui.

Mitä pyyntö tarkistaa

jsonscraperin dokumentaatiossa mainitaan reitti GET \/v1\/user\/by\/username. Pakollinen parametri on username; avain välitetään parametrina license_key. Valinnainen parametri cache_timeout ottaa välimuistin käyttöön määritetyksi sekuntimääräksi, ja arvolla 0 se pysyy poissa käytöstä. Onnistuneen vastauksen havaittuun skeemaan kuuluvat ulkoinen status ja profiilikenttiä sisältävä ig-objekti.

Pidä diagnostiikassa erillään kolme asiaa: onnistuiko HTTP-pyyntö, sisältääkö jäsennetty JSON ig-objektin ja mitä kenttiä objektissa on. Jos jokin vaihe ei pääty odotetusti, skripti voi kirjata teknisen tuloksen ja alkuperäisen vastauksen. Tulos ilmaisee tarkistustarpeen, mutta ei määritä virheen syytä.

Valmistele syötetiedot ja avain

Luo tiedosto usernames.txt, jossa on yksi käyttäjänimi kullakin rivillä ilman @-merkkiä. Poista tyhjät rivit ja kaksoiskappaleet ja jätä mukaan vain kampanjaan liittyvät tilit. Säilytä tarkistuspäivä ja projektin tunniste erillään tuloksista, jotta niitä voi verrata myöhemmin.

Säilytä avain ympäristömuuttujassa JSONSCRAPER_INSTAGRAM_LICENSE_KEY, älä lähdekoodissa tai repositoriossa:

export JSONSCRAPER_INSTAGRAM_LICENSE_KEY="oma_avaimesi"
python3 check_profiles.py

Esimerkissä käytetään Python 3.8:n tai uudemman vakiokirjastoa, eikä HTTP-paketteja tarvitse asentaa.

Esimerkki: hae profiilit ja tallenna raportti

Skripti käy luettelon läpi yksi käyttäjänimi kerrallaan. Kun JSON-vastaus onnistuu, se tallentaa vastauksen varsinaisen sisällön ja saatavilla olevat profiilikentät; HTTP- tai verkkovirheen sattuessa se kirjaa teknisen lopputuloksen. Puuttuvat kentät jäävät arvoon null, ja raaka vastaus tallennetaan, jos sen lukeminen onnistuu.

import json
import os
import time
from datetime import datetime, timezone
from urllib.error import HTTPError, URLError
from urllib.parse import urlencode
from urllib.request import Request, urlopen

API_KEY = os.environ.get("JSONSCRAPER_INSTAGRAM_LICENSE_KEY")
if not API_KEY:
    raise SystemExit("Aseta JSONSCRAPER_INSTAGRAM_LICENSE_KEY")

BASE_URL = "https:\/\/ig.jsonscraper.com\/v1\/user\/by\/username"

with open("usernames.txt", encoding="utf-8") as f:
    usernames = list(dict.fromkeys(
        line.strip().lstrip("@") for line in f if line.strip()
    ))

results = []
for username in usernames:
    params = urlencode({"username": username, "license_key": API_KEY})
    request = Request(f"{BASE_URL}?{params}", method="GET")
    checked_at = datetime.now(timezone.utc).isoformat()

    try:
        with urlopen(request, timeout=30) as response:
            http_status = response.status
            raw_body = response.read().decode("utf-8")
        try:
            payload = json.loads(raw_body)
            json_error = None
        except json.JSONDecodeError as exc:
            payload = None
            json_error = str(exc)

        profile = payload.get("ig") if isinstance(payload, dict) else None
        record = {
            "requested_username": username,
            "checked_at": checked_at,
            "http_status": http_status,
            "api_status": payload.get("status") if isinstance(payload, dict) else None,
            "check_result": "profile_returned" if isinstance(profile, dict) else "unexpected_or_missing_profile_object",
            "response": payload if payload is not None else raw_body,
        }
        if json_error:
            record["json_error"] = json_error
        if isinstance(profile, dict):
            record["returned_username"] = profile.get("username")
            record["is_private"] = profile.get("is_private")
            record["is_verified"] = profile.get("is_verified")
            record["media_count"] = profile.get("media_count")
            record["follower_count"] = profile.get("follower_count")
            record["following_count"] = profile.get("following_count")
        results.append(record)
    except HTTPError as exc:
        body = exc.read().decode("utf-8", errors="replace")
        results.append({
            "requested_username": username,
            "checked_at": checked_at,
            "check_result": "http_error",
            "http_status": exc.code,
            "response": body,
        })
    except (URLError, TimeoutError) as exc:
        results.append({
            "requested_username": username,
            "checked_at": checked_at,
            "check_result": "request_error",
            "detail": str(exc),
        })

    time.sleep(0.5)

with open("profile-check.json", "w", encoding="utf-8") as f:
    json.dump(results, f, ensure_ascii=False, indent=2)

print(f"Tallennettuja tuloksia: {len(results)}")

Tämä on integraatioesimerkki, ei raportti suoritetusta testistä. Avain välitetään license_key-parametrina, mutta sitä ei tulosteta. Täydellinen vastaus voi sisältää tietoja, joiden käyttöoikeuksia on rajattava tiimin tietojen säilytyssääntöjen mukaisesti.

Tulosten tulkinta

Tietue profile_returned tarkoittaa, että skripti sai JSON-muotoisen ig-objektin. Vertaa kenttiä requested_username ja returned_username ja tarkista kampanjaprosessin kannalta olennaiset merkit. Jos kampanja esimerkiksi edellyttää julkista profiilia, is_private: true voidaan merkitä manuaaliseen tarkistukseen.

Artikkeli: IG: näin tunnistat julkisten profiilien ongelmat ennen kampanjaa
Yhteenveto: Tarkista IG-profiilit automaattisesti ennen kampanjaa: hae tiedot jsonscraperin kautta, tallenna vastaukset ja kokoa luettelo tileistä, jotka vaativat manuaalista tarkistusta.
Kuvan rooli: täydentävä kuvitus 2 — erillinen yksityiskohta
Osio: Tulosten tulkinta
Visuaalinen aihe: suomenkielinen infografiikka: käyttäjänimiluettelo → GET IG-profiili-API → HTTP- ja JSON-tarkistus → profiiliobjekti ja käyttäjänimikentät
Kaavio näyttää etenemisen käyttäjänimiluettelosta raporttiin ja erottaa saadut profiilitiedot teknisistä virheistä.© jsonscraper · tekoälyllä luotu kuvitus

Tulokset http_error, request_error ja unexpected_or_missing_profile_object ilmaisevat vain vaiheen, jossa skripti ei saanut odotettua rakennetta. Ne eivät todista, että tili olisi poistettu, yksityinen tai saavuttamattomissa tietystä syystä. Tallenna vastaus, tarkista käyttäjänimi ja avain, tee sitten uusi pyyntö tai ota yhteyttä palvelun viralliseen tukeen.

Jos kenttä puuttuu, jätä sen arvo tuntemattomaksi — älä tulkitse puuttumista nollaksi tai arvoksi false. Profiilin laskurit kuvaavat pyyntöhetkellä palautettua tilannetta. Aikaleiman avulla tämän tilannekuvan voi erottaa seuraavan ajon tuloksista.

Automatisoi säilyttäen havaittavuus

Siirrä suoritus ajastettuun tehtävään tai nykyisen ETL-prosessin vaiheeksi. Tallenna tarkistuspäivä, pyydetty käyttäjänimi, tulos, tila ja vastausrunko. Erillisessä vaiheessa JSON voidaan ladata taulukkoon ja lähettää asiantuntijalle vain tarkistusta vaativat tietueet.

Muutosten havaitsemiseksi vertaa saman profiilin tilannekuvia valittujen kenttien perusteella. Julkaisujen määrän muutos on syy avata profiili ja tarkistaa se, ei tarkka tieto julkaisun ilmestymisajankohdasta. Myös seuraajien määrä kuvaa pyyntöhetkeä, joten havaintohistoria muodostuu tallennetuista tilannekuvista.

Jos luettelo on suuri, määritä hallittu pyyntötahti, lisää rajattu määrä uudelleenyrityksiä ja pidä virhelokia. Älä sisällytä avainta URL-osoitteen lokeihin. Syöteluettelon ja tulosten säilyttäminen erillään helpottaa sen selvittämistä, mitkä tilit on jo käsitelty.

Odotettu tulos

Tuloksena on JSON-tiedosto, jossa on kunkin annetun käyttäjänimen käsittelytulos, aikaleima, saatavilla olevat ominaisuudet ja tallennettu vastaus. Ennen luettelon siirtämistä kampanjaan voit suodattaa siitä täsmäävät käyttäjänimet, yksityiset profiilit ja tekniset tapaukset manuaalista tarkistusta varten. Tiimi määrittää itse seuraavan vaiheen kriteerit.

Reitti ja parametrit kuvataan IG API -dokumentaatiossa; tuotetiedot löytyvät IG Scraper API -sivulta. Aloita pienellä otoksella, tarkista vastausten todellinen rakenne ja mukauta raportointisäännöt omaan prosessiisi.

Ihmiset

Tämän artikkelin luettelossa ei ole vielä ihmisiä.

Jatka lukemistaMuunna IG-profiilit päivittäiseksi muutosseurannaksi
Lue seuraava artikkeli

Muuta lukemasi toimivaksi integraatioksi

Tutustu jsonscraperin sosiaalisen datan rajapintoihin, testaa pyyntöjä ja rakenna seuraava työnkulkusi.

Tutki API:t