jsonscraper
Märkte
Zurück zum Journal

IG: Fehler in öffentlichen Profilen vor dem Kampagnenstart erkennen

Status, Privatsphäre und grundlegende Profilkennzahlen per API prüfen – und so aus der manuellen Kontrolle einer Kontenliste einen reproduzierbaren Bericht machen

Redaktionsrichtlinie Fehler melden

Vor dem Start einer Kampagne lässt sich eine Liste von IG-Konten per Skript verarbeiten und ein JSON-Bericht mit der API-Antwort für jeden Namen erstellen. Der Endpunkt der IG Scraper API von jsonscraper liefert einen übergeordneten Status und ein Profilobjekt; das beobachtete Schema umfasst den Benutzernamen, Angaben zu Privatsphäre und Verifizierung sowie die Anzahl von Beiträgen, Followern und gefolgten Konten. Diese Felder helfen dabei, Einträge für eine manuelle Prüfung auszuwählen, erklären für sich genommen aber nicht, warum eine Antwort fehlt oder unerwartet ausfällt.

Artikel: IG: Fehler in öffentlichen Profilen vor dem Kampagnenstart erkennen
Zusammenfassung: Prüfen Sie IG-Profile vor dem Kampagnenstart automatisch: Rufen Sie Daten über jsonscraper ab, speichern Sie die Antworten und erstellen Sie eine Liste der Konten, die manuell überprüft werden müssen.
Bildrolle: Titelbild – die zentrale Idee
Abschnitt: 
Visuelles Motiv: Redaktionelles Foto einer Checkliste für Kampagnenkonten neben einem Smartphone mit einer generischen IG-Profil-Silhouette, markierten Prüffeldern und einer kleinen JSON-Datenkarte; keine re
Bei der Vorabprüfung wird aus einer Namensliste eine Reihe von Datensätzen mit API-Antworten und überprüfbaren Feldern.© jsonscraper · KI-generiert

Das Problem: Die Kontenliste sieht korrekt aus – ist sie einsatzbereit?

In einer Kampagnen-Tabelle können umbenannte Konten, Tippfehler und private Profile stehen. Beginnt das Team die Liste ohne Vorabprüfung auszuwerten, muss jemand die Konten einzeln öffnen. Ein automatisierter Durchlauf verringert den manuellen Aufwand und erstellt ein einheitliches Protokoll darüber, was die API für jeden angefragten Namen zurückgegeben hat.

Der Zweck dieses Ablaufs ist klar begrenzt: die Liste durchgehen, die tatsächlichen HTTP-Antworten und das JSON speichern und Profile mit für die Kampagne relevanten Merkmalen zur manuellen Prüfung markieren. Der Bericht hält die Beobachtungsdaten fest; er ermittelt nicht, warum ein Profil nicht zurückgegeben wurde oder eine Anfrage fehlgeschlagen ist.

Was die Anfrage prüft

In der Dokumentation von jsonscraper ist der Endpunkt GET /v1/user/by/username angegeben. Der Pflichtparameter lautet username; der Schlüssel wird als license_key übergeben. Mit dem optionalen Parameter cache_timeout lässt sich das Caching für eine festgelegte Anzahl von Sekunden aktivieren; bei 0 bleibt es ausgeschaltet. Das beobachtete Schema einer erfolgreichen Antwort enthält einen übergeordneten status und ein ig-Objekt mit Profilfeldern.

Unterscheiden Sie bei der Diagnose drei Sachverhalte: ob die HTTP-Anfrage erfolgreich ausgeführt wurde, ob das geparste JSON ein ig-Objekt enthält und welche Felder in diesem Objekt vorhanden sind. Wird ein Schritt nicht wie erwartet abgeschlossen, kann das Skript das technische Ergebnis und die ursprüngliche Antwort protokollieren. Das weist auf Prüfbedarf hin, belegt aber nicht die Ursache des Fehlers.

Eingabedaten und Schlüssel vorbereiten

Erstellen Sie die Datei usernames.txt mit einem Benutzernamen pro Zeile, ohne das Zeichen @. Entfernen Sie leere Zeilen und Duplikate und behalten Sie nur Konten, die zur Kampagne gehören. Speichern Sie für spätere Ergebnisvergleiche das Prüfdatum und die Projektkennung separat.

Speichern Sie den Schlüssel in der Umgebungsvariable JSONSCRAPER_INSTAGRAM_LICENSE_KEY, nicht im Quellcode oder Repository:

export JSONSCRAPER_INSTAGRAM_LICENSE_KEY="ihr_schlüssel"
python3 check_profiles.py

Das Beispiel verwendet die Python-Standardbibliothek ab Version 3.8 und erfordert keine Installation von HTTP-Paketen.

Beispiel: Profile abfragen und einen Bericht speichern

Das Skript arbeitet die Liste mit jeweils einem Namen ab. Bei einer erfolgreichen JSON-Antwort speichert es den tatsächlichen Inhalt und die verfügbaren Profilfelder; bei einem HTTP- oder Netzwerkfehler protokolliert es diesen als technisches Ergebnis. Fehlende Felder bleiben null, und der rohe Antworttext wird gespeichert, sofern er gelesen werden konnte.

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("Setzen Sie 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"Gespeicherte Ergebnisse: {len(results)}")

Dies ist ein Integrationsbeispiel, kein Bericht über einen durchgeführten Test. Der Schlüssel wird im Parameter license_key übergeben, aber nicht ausgegeben. Die vollständige Antwort kann Informationen enthalten, deren Zugriff gemäß den Datenaufbewahrungsregeln Ihres Teams beschränkt werden sollte.

Ergebnisse interpretieren

Der Eintrag profile_returned bedeutet, dass das Skript ein JSON-Objekt ig erhalten hat. Vergleichen Sie requested_username mit returned_username und prüfen Sie die für den Kampagnenprozess wichtigen Merkmale. Beispielsweise kann is_private: true zur manuellen Prüfung markiert werden, wenn die Kampagne ein öffentliches Profil voraussetzt.

Artikel: IG: Fehler in öffentlichen Profilen vor dem Kampagnenstart erkennen
Zusammenfassung: Prüfen Sie IG-Profile vor dem Kampagnenstart automatisch: Rufen Sie Daten über jsonscraper ab, speichern Sie die Antworten und erstellen Sie eine Liste der Konten, die manuell überprüft werden müssen.
Bildrolle: unterstützende Illustration 2 – ein anderer konkreter Aspekt
Abschnitt: Ergebnisse interpretieren
Visuelles Motiv: Infografik auf Russisch: Namensliste → IG-Profil-API per GET → HTTP und JSON prüfen → Profilobjekt und Felder wie username
Das Diagramm zeigt den Weg von der Benutzerliste zum Bericht und unterscheidet erhaltene Profildaten von technischen Fehlern.© jsonscraper · KI-generierte Illustration

Die Ergebnisse http_error, request_error und unexpected_or_missing_profile_object kennzeichnen lediglich den Schritt, in dem das Skript nicht die erwartete Struktur erhalten hat. Sie belegen nicht, dass ein Konto gelöscht, privat oder aus einem bestimmten Grund nicht verfügbar ist. Speichern Sie die Antwort, überprüfen Sie Namen und Schlüssel und wiederholen Sie anschließend die Anfrage oder wenden Sie sich an den regulären Support des Dienstes.

Fehlt ein Feld, belassen Sie es als unbekannt – interpretieren Sie das Fehlen nicht als Null oder false. Profilzähler beschreiben den Zustand zum Zeitpunkt der Anfrage. Der Zeitstempel hilft, diese Momentaufnahme von den Ergebnissen des nächsten Durchlaufs zu unterscheiden.

Automatisierung ohne Verlust der Nachvollziehbarkeit

Verlegen Sie die Ausführung in einen Aufgabenplaner oder einen Schritt eines bestehenden ETL-Prozesses. Speichern Sie Prüfdatum, angefragten Namen, Ergebnis, Status und Antworttext. In einem separaten Schritt können Sie das JSON in eine Tabelle laden und der zuständigen Person nur die Einträge zur Prüfung senden.

Um Änderungen zu erkennen, vergleichen Sie die Momentaufnahmen eines Profils anhand ausgewählter Felder. Eine Änderung der Beitragszahl ist ein Anlass, das Profil zu öffnen und zu prüfen, aber kein exaktes Datum für das Erscheinen eines Beitrags. Auch die Follower-Zahl gilt nur zum Zeitpunkt der Anfrage; ein Verlauf entsteht daher aus gespeicherten Momentaufnahmen.

Legen Sie bei großen Listen ein kontrolliertes Tempo fest, ergänzen Sie begrenzte Wiederholungsversuche und führen Sie ein Fehlerprotokoll. Nehmen Sie den Schlüssel nicht in URL-Protokolle auf. Getrennt gespeicherte Eingabelisten und Ergebnisse erleichtern es festzustellen, welche Konten bereits verarbeitet wurden.

Erwartetes Ergebnis

Das Ergebnis ist eine JSON-Datei mit dem Verarbeitungsresultat für jeden angegebenen Namen, einem Zeitstempel, den verfügbaren Attributen und der gespeicherten Antwort. Vor der Übergabe der Liste an die Kampagne können Sie übereinstimmende Namen, private Profile und technische Fälle für die manuelle Prüfung herausfiltern. Die Kriterien für den nächsten Schritt legt das Team selbst fest.

Endpunkt und Parameter sind in der Dokumentation der IG-API beschrieben; Produktinformationen finden Sie auf der Seite der IG Scraper API. Beginnen Sie mit einer kleinen Auswahl, überprüfen Sie die tatsächliche Antwortstruktur und passen Sie die Berichtsregeln an Ihren Prozess an.

Menschen

Für diesen Artikel sind noch keine Personen aufgeführt.

Lesen Sie weiterIG-Profile in eine tägliche Änderungsübersicht verwandeln
Lesen Sie den nächsten Artikel

Vom Artikel zur funktionierenden Integration

Entdecke die Social-Data-APIs von jsonscraper, teste Anfragen und entwickle deinen nächsten Workflow.

APIs entdecken