Instagram liefert einem einfachen Skript kaum etwas Nützliches. Die öffentlichen Seiten werden über JavaScript gerendert, die API-Oberfläche ist abgesperrt, und der Anti-Bot-Stack erkennt innerhalb von Sekunden eine einzelne Datacenter-IP, die wiederholte Anfragen stellt. Ein funktionierender Instagram-Scraper ist daher eigentlich zwei aufeinandergestapelte Probleme: eine IP zu beschaffen, die die Plattform als echte Person liest, und einen Browser zu haben, der die Seite tatsächlich rendert, bevor man sie ausliest. Proxys lösen die erste Hälfte. Allein lösen sie die zweite nicht.

Dieser Beitrag handelt vom Scrapen öffentlicher Instagram-Daten: Post-Captions, öffentliche Profil-Metadaten und Like- sowie Kommentarzahlen auf ohne Login sichtbaren Posts. Er behandelt keine privaten Konten oder login-gesperrten Inhalte, und der Ethik-Abschnitt am Ende ist kein Boilerplate. Mit diesem Rahmen im Kopf: Warum Instagram blockt, welcher Proxy-Typ passt und ein Code-Pfad, der echte Daten statt einer leeren Hülle zurückgibt.

Warum Instagram Scraper blockt

Instagram ist eine datenreiche, stark monetarisierte Plattform, daher sind ihre Abwehrmechanismen darauf ausgerichtet, automatisierten Traffic schnell zu unterbinden. Vier Mechanismen erledigen den Großteil der Arbeit, und zu wissen, welcher einen erwischt hat, zeigt, was zu ändern ist.

  • Rate limiting. Zu viele Anfragen von einer IP in einem kurzen Zeitfenster lösen eine temporäre oder permanente Einschränkung aus. Das ist die billigste Verteidigung und die erste, auf die man trifft.
  • IP reputation. Bereiche, die zu bekannten Hosting-Anbietern (Datacenter-ASNs) gehören, werden auf Anhieb markiert, oft bevor die Anfrage die Seite überhaupt erreicht. Ein sauberes Skript von einem Cloud-Server sieht selten echten Inhalt.
  • JavaScript rendering. Die gewünschte Seite wird clientseitig aufgebaut. Ein roher HTTP-Abruf gibt eine Hülle mit leeren Feldern zurück, sodass selbst eine nicht geblockte Anfrage nichts Nützliches liefert, wenn ein Browser die Seite nicht zuerst ausgeführt hat.
  • Behavioral and session analysis. Schnelle, repetitive, identische Anfragemuster sehen überhaupt nicht wie ein Mensch aus, der scrollt, und Instagram achtet genau auf diese Signatur.

Ein Proxy adressiert die ersten beiden direkt: Er ändert die IP, über die der Traffic ausgeht, und die Rotation über viele IPs verteilt die Last, sodass keine einzelne Adresse ein Ratenlimit auslöst. Er rendert kein JavaScript und erzeugt kein menschlich anmutendes Verhalten. Das sind separate Aufgaben, weshalb ein bloßer Proxy notwendig, aber hier selten ausreichend ist.

Welche öffentlichen Daten tatsächlich erreichbar sind

Setzen Sie Erwartungen, bevor Sie Code schreiben. Ausgeloggt stellt Instagram eine begrenzte Auswahl bereit: öffentliche Profil-Metadaten (Benutzername, Bio, Follower- und Post-Anzahl), die Medien auf öffentlichen Posts, Captions und die öffentlichen Like- und Kommentarzahlen. Stories, Direktnachrichten, private Konten und alles hinter einer authentifizierten Sitzung sind außerhalb des Rahmens und außerhalb der Grenzen. Wenn Ihr Anwendungsfall diese benötigt, ist Scraping das falsche Werkzeug.

Selbst die erreichbaren Daten kommen mit einem Haken: Sie laden über JavaScript. Rufen Sie eine Post-URL mit einem einfachen HTTP-Client ab, erhalten Sie HTML mit leeren Inhaltsfeldern, weil noch nichts gerendert wurde. Das ist der häufigste Grund, warum ein Instagram-Scraper "funktioniert", aber leere Objekte zurückgibt, und es erklärt, warum der Proxy allein nicht das Ziel ist.

Wie Proxys passen und welcher Typ

Ein Proxy ist eine Indirektionsschicht zwischen Ihrem Scraper und Instagram: Er stellt die Anfrage für Sie, sodass die Plattform die IP des Proxys statt Ihrer sieht. Bei einem so defensiven Ziel ist die Art der IP wichtiger als alles andere am Proxy.

Datacenter-IPs sind schnell und günstig, aber Instagram lässt sie auf Anhieb fallen, weil sie zu Hosting-ASNs aufgelöst werden. Das schließt sie als primäre Option hier aus. Die IPs, die überleben, sind jene, die wie echte Personen wirken: Residential-Proxys gehen über echte Verbraucher-ISP-Verbindungen aus, und mobile Proxys routen über Carrier-Netzwerke, bei denen Carrier-grade NAT eine IP über Tausende von Abonnenten teilt, sodass das Blockieren dieser IP bedeutet, echte Kunden zu sperren. Mobile sind am schwersten zu blockieren und am teuersten; Residential ist die praktische Untergrenze für Instagram. Der vollständige Vergleich findet sich unter Datacenter vs. Residential Proxies.

Vertrauen ist nur die Hälfte davon. Rotation verhindert, dass eine einzelne IP über einen Lauf hinweg ratelimitiert wird. Rotierende Residential-Proxys verteilen Ihre Anfragen über viele echte Nutzeradressen, sodass die Pro-IP-Anfragerate niedrig bleibt, selbst wenn Ihr Gesamtvolumen hoch ist. Der sauberste Weg, das zu nutzen, ist ein Backconnect-Gateway: ein Host und Port, der die Exit-IP im Hintergrund wechselt, pro Anfrage oder klebrig pro Sitzung, sodass Ihr Code auf einen einzelnen Endpunkt zeigt und die Rotation serverseitig stattfindet. Mehr zu diesem Muster unter wie man rotierende Proxys verwendet.

Ein Proxy ist notwendig, nicht ausreichend

Die richtige Residential- oder Mobile-IP lässt Ihre Anfrage akzeptieren. Sie rendert die Seite nicht. Für Instagram müssen Proxy und JavaScript-Rendering zusammen greifen, sonst erhalten Sie eine nicht geblockte Anfrage, die dennoch einen leeren Body zurückgibt. Planen Sie von Anfang an für beides, statt Rendering nachträglich hinzuzufügen, wenn die IPs funktionieren.

Proxy-Typen für Instagram auf einen Blick

Proxy type Wird als echter Nutzer gelesen? Geeignet für Instagram
Datacenter Nein (Hosting-ASN) Wird schnell markiert; nicht als primäre Option verwenden
Residential (rotating) Ja Praktische Untergrenze für öffentliches Scraping
Mobile Ja, am stärksten Am schwersten zu blockieren; teurer, verwenden wenn Residential herausgefordert wird

Ein praktischer Code-Pfad

Das folgende Beispiel verwendet ein rotierendes Residential-Gateway, das auch JavaScript rendert, da Sie bei Instagram beides in einem Aufruf benötigen. Der Endpunkt ist ein Backconnect-Host, auf den ein normaler HTTP-Client zeigt; Rotation und Rendering werden serverseitig erledigt. Sie übergeben Ihr Zugriffstoken als Proxy-Benutzername, und Rendering sowie eine kurze Wartezeit werden über Anfrageparameter aktiviert.

Installieren Sie zunächst die einzige Abhängigkeit.

bash
pip install requests

Ein einfaches GET über das Gateway ändert Ihre Exit-IP, gibt aber bei Instagram eine Hülle mit leeren Inhaltsfeldern zurück, weil noch nichts gerendert wurde. Das ist der Fehlermodus, den man erkennen muss, nicht das Ziel.

python
import requests

# Backconnect gateway: token as the username, rotation server-side.
proxy_url = "http://_USER_TOKEN_:@smartproxy.crawlbase.com:8012"
proxies = {"http": proxy_url, "https": proxy_url}

target = "https://www.instagram.com/p/B5-tZGRAPoR/"
resp = requests.get(target, proxies=proxies, verify=False)

print(resp.status_code)  # 200, but the body is mostly empty

Um echte Daten zu erhalten, weisen Sie das Gateway an, die Seite mit einem Browser zu rendern und einen Moment zu warten, bis der Inhalt aufgefüllt ist. Das geschieht mit Anfrageparametern, die in einem Header übergeben werden: JavaScript-Rendering einschalten, eine kurze Seitewartetime setzen und den eingebauten Instagram-Post-Parser bitten, strukturierte Felder statt rohen HTML zurückzugeben.

python
import requests
import json

proxy_url = "http://_USER_TOKEN_:@smartproxy.crawlbase.com:8012"
proxies = {"http": proxy_url, "https": proxy_url}

# Render with a browser, wait 3s, parse the post into JSON.
params = "scraper=instagram-post&javascript=true&page_wait=3000"
headers = {"CrawlbaseAPI-Parameters": params}

target = "https://www.instagram.com/p/B5-tZGRAPoR/"
resp = requests.get(target, headers=headers, proxies=proxies, verify=False)

data = json.loads(resp.content.decode("latin1"))
print(json.dumps(data, indent=2))

Mit aktiviertem Rendering gibt dieselbe Anfrage die strukturierten Felder des Posts statt einer leeren Hülle zurück.

json
{
  "cb_status": 200,
  "url": "https://www.instagram.com/p/B5-tZGRAPoR/",
  "body": {
    "postedBy": { "accountUserName": "thisisbillgates" },
    "caption": { "text": "Our family loves reading together..." },
    "likesCount": 339131,
    "dateTime": "2019-12-12T16:55:16.000Z"
  }
}

Die Form ist wichtiger als die genauen Felder: Der Unterschied zwischen dem leeren Body und dem befüllten ist das Rendering, nicht die IP. Eine ausführlichere Anleitung zum Aufbau eines Scrapers in diesem Stack finden Sie unter Web-Scraping mit Python und Selenium, und für das allgemeine Playbook unter wie man Websites scrapt, ohne geblockt zu werden.

Tuning, damit man nicht geblockt wird

Einige Gewohnheiten halten einen Lauf über die ersten hundert Anfragen hinaus am Leben. Keine davon ist exotisch; sie machen schlicht den Unterschied zwischen Traffic, der menschlich wirkt, und Traffic, der geskriptet aussieht.

  • Die Pro-IP-Rate niedrig halten. Rotation hilft nur, wenn Ihr Gesamtvolumen tatsächlich dünn über den Pool verteilt ist. Drosseln Sie Anfragen statt sie in einer engen Schleife zu feuern.
  • Realistische Header senden. Ein glaubwürdiger User-Agent und die Header, die ein echter Browser sendet, wirken mehr als man erwartet; eine Anfrage ohne sie ist leicht zu markieren.
  • Nur dann rendern, wenn nötig. JavaScript-Rendering ist langsamer und teurer als ein roher Abruf. Verwenden Sie es für Seiten, die es benötigen (Instagram-Posts tun das), und überspringen Sie es, wenn die Daten bereits im HTML sind.
  • Statuscodes beachten. Ein Lauf, der beginnt, 403- oder Challenge-Seiten zurückzugeben, signalisiert, dass die aktuelle IP-Stufe oder Rate nicht mehr ausreicht. Behandeln Sie Proxy-Statusfehlercodes als Signal, nicht als Rauschen.

Die Zahlen hinter all dem (wie viele Anfragen pro IP vor einem Block, welche Erfolgsrate eine bestimmte Stufe hält) sind Bereiche aus der Praxis, keine festen Konstanten; Ihre Werte variieren mit dem Ziel und dem Anbieter. Kalibrieren Sie gegen Ihren eigenen Traffic statt nach einem veröffentlichten Benchmark.

Der ehrliche Teil: ToS und Rechtslage

Instagrams Nutzungsbedingungen untersagen den nicht autorisierten automatisierten Zugriff auf seine Daten, und Scraping kann gegen diese Bedingungen verstoßen, unabhängig davon, wie sorgfältig Ihr Tooling ist. Zwei Grundsätze sollten eingehalten werden: Erfassen Sie nur öffentliche Daten, und respektieren Sie die angegebenen Regeln der Plattform, einschließlich ihrer robots.txt und Ratenerwartungen. Scrapen Sie keine privaten Konten, login-gesperrten Inhalt oder personenbezogene Daten, für deren Erfassung Sie keine Grundlage haben. Öffentliche Post-Metadaten für Analysen sind eine Sache; das Ernten von Informationen über Personen ist eine andere, und das Zweite ist der Bereich, in dem rechtliche und ethische Risiken liegen.

Dieser Leitfaden beschränkt sich auf öffentliche Daten, weil das die Grenze ist, die die Arbeit vertretbar macht. Wenn ein Projekt mehr benötigt, ist die Antwort eine offizielle API-Vereinbarung, nicht ein ausgefeilterer Scraper.

Crawlbase Smart AI Proxy

Instagram benötigt eine echte Nutzer-IP und eine gerenderte Seite in derselben Anfrage. Smart AI Proxy ist ein Backconnect-Endpunkt, der über einen großen Residential- und Mobile-Pool routet, pro Anfrage rotiert und JavaScript serverseitig rendern kann, sodass Ihr Code auf einen einzelnen Host zeigt statt Pools und eine Headless-Browser-Flotte zu verwalten. Führen Sie zunächst einen öffentlichen Post darüber im kostenlosen Tarif aus.

Zusammenfassung

Wichtigste Erkenntnisse

  • Instagram-Scraping sind zwei Probleme. Eine vertrauenswürdige IP beschaffen und die Seite rendern. Eines ohne das andere zu lösen führt zu Blocks oder leeren Bodies.
  • Die Herkunft ist die Proxy-Entscheidung. Datacenter-IPs werden schnell markiert; rotierende Residential-IPs sind die praktische Untergrenze, Mobile wenn Residential herausgefordert wird.
  • Rendering ist nicht verhandelbar. Öffentlicher Post-Inhalt lädt über JavaScript, sodass ein roher Abruf immer eine Hülle zurückgibt, egal wie sauber die IP ist.
  • Drosselung und Header halten am Leben. Niedrige Pro-IP-Anfragerate plus realistische Header schlagen rohe Geschwindigkeit jedes Mal.
  • Bleiben Sie bei öffentlichen Daten. Respektieren Sie Instagrams ToS und robots.txt; private und login-gesperrte Inhalte sind tabu.

Häufig gestellte Fragen

Warum benötige ich Proxys, um Instagram zu scrapen?

Instagram markiert Datacenter-IPs auf Anhieb und ratelimitiert jede einzelne Adresse, die wiederholte Anfragen stellt. Ein Proxy ändert die IP, über die Ihr Traffic ausgeht, und die Rotation über einen Pool echter Nutzer-IPs verteilt Anfragen, sodass keine einzelne Adresse das Ratenlimit auslöst. Ohne das wird selbst ein korrektes Skript innerhalb weniger Anfragen geblockt.

Welcher Proxy-Typ funktioniert am besten für Instagram?

Rotierende Residential-Proxys sind die praktische Untergrenze, weil sie über echte Verbraucher-ISP-IPs ausgehen, die Instagram als normale Besucher liest. Mobile Proxys sind am schwersten zu blockieren, da Carrier-grade NAT eine IP über viele echte Nutzer teilt, kosten aber mehr. Datacenter-IPs werden zu schnell markiert, um hier als primäre Option zuverlässig zu sein.

Warum gibt mein Instagram-Scraper eine leere Antwort zurück?

Fast immer, weil die Seite nicht gerendert wurde. Instagram baut seinen Inhalt clientseitig mit JavaScript auf, sodass ein einfacher HTTP-Abruf HTML mit leeren Datenfeldern zurückgibt, selbst wenn die Anfrage selbst erfolgreich war. Aktivieren Sie JavaScript-Rendering und fügen Sie eine kurze Seitewartetime hinzu, damit der Inhalt aufgefüllt wird, bevor Sie die Antwort lesen.

Instagrams Nutzungsbedingungen untersagen den nicht autorisierten automatisierten Zugriff, sodass Scraping mit diesen Bedingungen in Konflikt geraten kann. Bleiben Sie nur bei öffentlichen Daten, respektieren Sie die robots.txt und Ratenerwartungen der Plattform, und berühren Sie niemals private Konten oder login-gesperrten Inhalt. Für alles jenseits öffentlicher Daten ist eine offizielle API-Vereinbarung der richtige Weg, nicht ein Scraper.

Kann ich private Instagram-Konten oder Stories scrapen?

Nein, und dieser Leitfaden zeigt das nicht. Private Konten, Stories und Direktnachrichten sitzen hinter einer Authentifizierung, und der automatisierte Zugriff auf sie verletzt Instagrams Bedingungen und wirft reale rechtliche und ethische Probleme auf. Die erreichbaren, vertretbaren Daten sind öffentliche Profil-Metadaten und öffentliche Post-Inhalte.

Benötige ich noch einen Headless-Browser, wenn ich einen Proxy verwende?

Sie benötigen Rendering, aber nicht unbedingt Ihre eigene Browser-Flotte. Der Proxy übernimmt die IP; das Rendering kann Ihr eigener Headless-Browser oder ein Gateway sein, das serverseitig rendert. Ein verwalteter Endpunkt, der beides in einer Anfrage erledigt, ist einfacher als das parallele Betreiben eines Proxy-Pools und einer Selenium-Flotte, besonders im großen Maßstab.

Jetzt loslegen

Crawlen Sie jede Website im großen Maßstab, ohne gegen die Infrastruktur zu kämpfen.

Crawlbase übernimmt Proxys, Fingerprints und CAPTCHAs, damit Ihr Team Datenpipelines ausliefert, statt Crawl-Infrastruktur zu pflegen. 1.000 Anfragen kostenlos, keine Karte erforderlich.

Self-Service · Kein Verkaufsgespräch erforderlich · Enterprise-Crawl-Volumen verfügbar