jsonscraper
Markeder
Tilbake til journalen

IG: Slik avdekker du feil i offentlige profiler før kampanjestart

Kontroller status, personvern og grunnleggende profilstatistikk via API-et, og gjør manuell kontroll av en kontoliste om til en rapport som kan gjentas

Redaksjonelle retningslinjer Meld fra om en feil

Før en kampanje starter, kan du behandle en liste med IG-kontoer med et skript og få en JSON-rapport med API-svaret for hvert navn. Endepunktet IG Scraper API fra jsonscraper returnerer en ekstern status og et profilobjekt; det observerte skjemaet inneholder brukernavn, opplysninger om personvern og verifisering, samt antall innlegg, følgere og kontoer som følges. Disse feltene gjør det enklere å velge ut oppføringer for manuell kontroll, men forklarer ikke i seg selv hvorfor et svar mangler eller er uventet.

Artikkel: IG: Slik avdekker du feil i offentlige profiler før kampanjestart
Sammendrag: Kontroller IG-profiler automatisk før kampanjestart: hent data via jsonscraper, lagre svarene og opprett en liste over kontoer som trenger manuell kontroll.
Bildets rolle: omslagsbilde — hovedideen
Seksjon: 
Visuelt motiv: Redaksjonelt bilde av en sjekkliste for en kampanjekonto ved siden av en telefon som viser en generisk IG-profilkontur, avkryssede verifiseringsbokser og et lite JSON-datakort; ingen re
En forhåndskontroll gjør en navneliste om til oppføringer med API-svar og felt som kan kontrolleres.© jsonscraper · laget med KI

Problemet: Listen over kontoer ser riktig ut, men er den klar til bruk?

Et regneark for en kampanje kan inneholde kontoer som har byttet navn, skrivefeil og private profiler. Hvis teamet begynner å analysere listen uten en forhåndskontroll, må noen åpne kontoene én etter én. En automatisert gjennomgang reduserer det manuelle arbeidet og gir en samlet logg over hva API-et faktisk returnerte for hvert forespurte navn.

Formålet med denne arbeidsflyten er avgrenset: gå gjennom listen, lagre de faktiske HTTP-svarene og JSON-dataene, og sende profiler med relevante kampanjefelt til manuell kontroll. Rapporten registrerer observerte data; den fastslår ikke hvorfor en profil ikke ble returnert, eller hvorfor forespørselen mislyktes.

Hva forespørselen kontrollerer

I dokumentasjonen fra jsonscraper er endepunktet GET /v1/user/by/username oppført. Den obligatoriske parameteren er username; nøkkelen sendes som license_key. Den valgfrie parameteren cache_timeout aktiverer hurtigbufring i et angitt antall sekunder, mens verdien 0 lar den være deaktivert. Det observerte skjemaet for vellykkede svar inneholder en ytre status og et ig-objekt med profilfelt.

Skill mellom tre forhold i diagnostikken: om HTTP-forespørselen ble utført; om den analyserte JSON-en inneholder et ig-objekt; og hvilke felt som finnes i dette objektet. Hvis et trinn ikke går som forventet, kan skriptet logge det tekniske resultatet og det opprinnelige svaret. Et slikt resultat viser at noe bør kontrolleres, men fastslår ikke årsaken til feilen.

Gjør klar inndata og nøkkel

Opprett filen usernames.txt med ett brukernavn per linje, uten tegnet @. Fjern tomme linjer og duplikater, og behold bare kontoer som hører til kampanjen. Lagre kontrolldato og prosjekt-ID separat, slik at resultatene kan sammenlignes senere.

Lagre nøkkelen i miljøvariabelen JSONSCRAPER_INSTAGRAM_LICENSE_KEY, ikke i kildekoden eller et kodearkiv:

export JSONSCRAPER_INSTAGRAM_LICENSE_KEY="din_nøkkel"
python3 check_profiles.py

Eksemplet bruker standardbiblioteket i Python 3.8+ og krever ingen installasjon av HTTP-pakker.

Eksempel: Hent profiler og skriv en rapport

Skriptet går gjennom listen, ett navn om gangen. Ved et vellykket JSON-svar lagrer det den faktiske responsen og tilgjengelige profilfelt; ved HTTP- eller nettverksfeil registrerer det feilen som et teknisk resultat. Manglende felt forblir null, og den rå svarteksten lagres hvis den kunne leses.

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("Angi 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"Antall lagrede resultater: {len(results)}")

Dette er et integrasjonseksempel, ikke en rapport om en gjennomført test. Nøkkelen sendes i parameteren license_key, men skrives ikke ut. Det fullstendige svaret kan inneholde opplysninger som bør beskyttes i tråd med teamets regler for datalagring.

Slik tolker du resultatet

En oppføring med profile_returned betyr at skriptet mottok et JSON-objekt med ig. Sammenlign requested_username med returned_username, og se på opplysningene som er viktige for kampanjeprosessen. Hvis kampanjen krever en offentlig profil, kan for eksempel is_private: true sendes til manuell kontroll.

Artikkel: IG: Slik avdekker du feil i offentlige profiler før kampanjestart
Sammendrag: Kontroller IG-profiler automatisk før kampanjestart: hent data via jsonscraper, lagre svarene og opprett en liste over kontoer som trenger manuell kontroll.
Bildets rolle: illustrasjon som utdyper et annet konkret aspekt
Seksjon: Slik tolker du resultatet
Visuelt motiv: Infografikk på russisk: liste over navn → GET IG-profil-API → kontroll av HTTP og JSON → profilobjekt og feltene username
Diagrammet viser veien fra brukerliste til rapport og skiller mottatte profildata fra tekniske feil.© jsonscraper · KI-generert illustrasjon

Resultatene http_error, request_error og unexpected_or_missing_profile_object viser bare hvilket trinn skriptet ikke fikk den forventede strukturen fra. De beviser ikke at kontoen er slettet, privat eller utilgjengelig av en bestemt grunn. Lagre svaret, kontroller navnet og nøkkelen, og prøv deretter forespørselen på nytt eller kontakt tjenestens ordinære kundestøtte.

Hvis et felt mangler, la det stå som ukjent — ikke tolk mangelen som null eller false. Profilens tellere beskriver tilstanden da forespørselen ble sendt. Tidsstempelet gjør det mulig å skille dette øyeblikksbildet fra resultatene av neste kjøring.

Automatiser uten å miste oversikten

Legg kjøringen inn i en oppgaveplanlegger eller et eksisterende ETL-trinn. Lagre kontrolldato, forespurt navn, resultat, status og svarinnhold. Som et eget trinn kan du laste JSON-filen inn i et regneark og bare sende oppføringene som trenger kontroll, til en fagperson.

For å oppdage endringer kan du sammenligne øyeblikksbilder av én profil ut fra utvalgte felt. En endring i antall innlegg er en grunn til å åpne profilen og kontrollere den, ikke en nøyaktig dato for når innlegget ble publisert. Følgertallet er også en verdi fra tidspunktet forespørselen ble sendt, så historikken bygges opp av lagrede øyeblikksbilder.

Hvis listen er stor, bør du angi et kontrollert tempo, legge til et begrenset antall nye forsøk og føre en feillogg. Ikke ta med nøkkelen i URL-logger. Ved å lagre inndata og resultater hver for seg blir det enklere å se hvilke kontoer som allerede er behandlet.

Forventet resultat

Resultatet er en JSON-fil med behandlingsresultat for hvert oppgitte navn, tidsstempel, tilgjengelige attributter og det lagrede svaret. Før listen brukes i en kampanje, kan du filtrere ut navn som stemmer overens, private profiler og tekniske tilfeller som krever manuell kontroll. Teamet bestemmer selv kriteriene for neste trinn.

Endepunktet og parameterne er beskrevet i dokumentasjonen for IG API-et; produktinformasjon finnes på siden for IG Scraper API. Begynn med et lite utvalg, kontroller den faktiske formen på svarene, og tilpass rapportreglene til arbeidsflyten deres.

Mennesker

Ingen personer er oppført for denne artikkelen ennå.

Fortsett å leseSlik gjør du IG-profiler om til en daglig endringslogg
Les neste artikkel

Gjør det du leser til en fungerende integrasjon

Utforsk jsonscrapers API-er for sosiale data, test forespørsler og bygg neste arbeidsflyt.

Utforsk API-er