crawlbaseDocs
Anmelden

Zwei Status, zwei Fragen

Die meisten HTTP-APIs geben Ihnen einen einzelnen Statuscode. Crawlbase gibt Ihnen zwei, weil Crawling zwei Schichten umfasst: die Infrastruktur von Crawlbase und die dahinterliegende Zielseite.

HTTP-Status
int
Der Status Ihres Requests an Crawlbase. 200 bedeutet, der Crawl war erfolgreich; 520 bedeutet, er ist fehlgeschlagen, und cb_status nennt den Grund; andere 4xx/5xx-Codes bedeuten, dass der Request vor jedem Crawl abgelehnt wurde.
cb_status
intheader
Das Urteil von Crawlbase über den Crawl, nach den eigenen Prüfungen auf Blocks, Redirects und Inhalte. 200 bedeutet eine verwendbare Seite; andere Codes beschreiben, was schiefgelaufen ist.
original_status
intheader
Der rohe HTTP-Status, den die Zielseite zurückgegeben hat. Nützlich, wenn die Seite selbst einen Nicht-200-Status zurückgibt, den Sie behandeln müssen (404, 403 usw.).
Das mentale Modell

Prüfen Sie immer zuerst den HTTP-Status. Wenn er 200 ist, prüfen Sie cb_status. Wenn dieser 200 ist, prüfen Sie original_status auf seitenseitige Fehler.

HTTP-Statuscodes

Was Crawlbase selbst an Ihren Client zurückgegeben hat.

CodeBedeutungAktion
200Request verarbeitet. Prüfen Sie cb_status für das Ergebnis.Weiter zu cb_status
400Ungültiger Request: url fehlt, ist nicht URL-kodiert oder zu lang, oder ein Parameter hat einen ungültigen Wert.Request korrigieren; ein unveränderter Retry hilft nicht
401Token fehlt oder ist ungültig.Token überprüfen; sicherstellen, dass es nicht zurückgesetzt wurde
402Dieser Workspace hat sein monatliches Ausgabenlimit erreicht.Limit in der Console erhöhen oder auf den nächsten Zeitraum warten
403Der Account ist gesperrt (zum Beispiel sind die kostenlosen Credits aufgebraucht und keine Abrechnung ist eingerichtet) oder hat sein Ausgabenlimit auf Account-Ebene erreicht.Seite Abrechnung in der Console prüfen
429Rate Limit für diesen Token und diese Zieldomain erreicht.Zurückfahren und erneut versuchen; siehe Rate Limits
500Interner Crawlbase-Fehler. Selten und vorübergehend.Mit Backoff erneut versuchen; Statusseite prüfen
503Dienst vorübergehend nicht verfügbar.Mit Backoff erneut versuchen
504Der Request hat ein Timeout erreicht, bevor der Crawl abgeschlossen war (cb_status ist ebenfalls 504). Wird nicht berechnet.Mit Backoff erneut versuchen
520Der Crawl ist fehlgeschlagen. cb_status nennt den Grund. Wird nicht berechnet.cb_status auslesen und den Tabellen unten folgen

cb_status-Codes

Was während des Crawls passiert ist. Wird bei jeder Crawl-Response, ob erfolgreich oder nicht, als cb_status-Response-Header zurückgegeben (und mit format=json im Body). Früher pc_status genannt, das weiterhin als Alias gesendet wird.

Erfolg

CodeBedeutung
200Seite erfolgreich gecrawlt. Der Body enthält das HTML oder JSON der Zielseite. original_status kann auch 404, 410 oder ein Redirect sein: Das sind gültige Antworten, sie zählen als erfolgreiche Crawls und werden berechnet.
207Die Seite hat mit 200 und leerem Body geantwortet. Zählt als Erfolg und wird berechnet; wenn Sie Inhalt erwartet haben, wiederholen Sie den Request mit dem JavaScript Token.

Zielseite hat mit einem Fehler geantwortet

Crawlbase hat die Seite erreicht, aber die Seite hat den Request abgelehnt. original_status enthält den eigenen Status der Seite, und keiner dieser Fälle wird berechnet. Ein 404 oder 410 ist hier kein Fehler: Er kommt als cb_status 200 zurück.

CodeBedeutung
704Die Seite hat mit einem anderen Nicht-Erfolgsstatus geantwortet. Lesen Sie original_status aus und behandeln Sie ihn als Antwort der Seite, oder tragen Sie ihn in custom_success_codes ein, um den Body trotzdem zu erhalten.
705Die Seite hat mit 403 geantwortet, meist ein Block. Senken Sie Ihre Request-Rate und untersuchen Sie die Ursache, bevor Sie es erneut versuchen.
706Die Seite hat mit 429 geantwortet und drosselt Ihre Requests per Rate Limit. Fahren Sie zurück und senken Sie Ihre Request-Rate.

Blockiert oder fehlgeschlagen

CodeBedeutungWas Sie versuchen können
503Crawlbase hat eine Block- oder CAPTCHA-Seite erkannt.Vom Normal Token zum JavaScript Token wechseln; wenn bereits auf JavaScript, zurückfahren und erneut versuchen
595Das css_click_selector-Element wurde auf der Seite nicht gefunden.Selektor korrigieren oder einen Fallback wie #start-button,body ergänzen
599Interner Crawlbase-Fehler.Mit Backoff erneut versuchen; bei anhaltendem Fehler die rid an den Support senden
5xx-7xxJeder andere 5xx-, 6xx- oder 7xx-Code ist ein interner oder seitenspezifischer Fehler. Keiner davon wird berechnet.Mit begrenzter Anzahl an Versuchen wiederholen; bei anhaltendem Fehler die rid an den Support senden

Die Response lesen

curl -i 'https://api.crawlbase.com/?token=YOUR_TOKEN&url=https%3A%2F%2Fexample.com'


# HTTP/1.1 200 OK
# cb_status: 200
# original_status: 200
# url: https://example.com/
# content-type: text/html
from crawlbase import CrawlingAPI


api = CrawlingAPI({'token': 'YOUR_TOKEN'})
res = api.get('https://example.com')


# Layer 1: did the crawl succeed? 520 means it failed.
if res['status_code'] != 200:
    raise RuntimeError(f"Crawl failed: {res['status_code']}, cb_status {res['cb_status']}")


# Layer 2: did Crawlbase get content? 207 means an empty page.
if res['cb_status'] == 207:
    raise RuntimeError("Empty page; retry with the JavaScript token")


# Layer 3: did the target site return content?
if res['original_status'] != 200:
    print(f"Site returned {res['original_status']}")


print(res['body'])

Nächste Schritte

Muster für Retries, Dead-Letter-Queues und Observability.
Konkrete Hinweise zu 429-Statuscodes und Concurrency.