Status Codes
Crawlbase liefert bei jeder Response zwei Statussignale: den standardmäßigen HTTP-Status und einen pc_status-Header, der beschreibt, was Crawlbase getan hat. Hier erfahren Sie, was jede Kombination bedeutet.
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.
200 bedeutet, wir haben ihn verarbeitet; 4xx/5xx bedeutet, wir konnten es nicht.200 bedeutet, wir haben eine saubere Seite erhalten; andere Codes beschreiben, was upstream schiefgelaufen ist.Prüfen Sie immer zuerst den HTTP-Status. Wenn er 200 ist, prüfen Sie pc_status. Wenn dieser 200 ist, prüfen Sie original_status auf seitenseitige Fehler.
HTTP-Statuscodes
Was Crawlbase selbst an Ihren Client zurückgegeben hat.
| Code | Bedeutung | Aktion |
|---|---|---|
200 | Request verarbeitet. Prüfen Sie pc_status für das Ergebnis. | Weiter zu pc_status |
401 | Token fehlt oder ist ungültig. | Token überprüfen; sicherstellen, dass es nicht zurückgesetzt wurde |
402 | Keine Credits mehr oder Testphase abgelaufen. | Konto aufladen |
403 | Token hat keinen Zugriff auf dieses Produkt. | Den richtigen Token-Typ verwenden (Normal vs. JS) |
422 | Fehlerhafter Request, in der Regel fehlende oder nicht kodierte URL. | Den url-Parameter URL-kodieren |
429 | Concurrency-Limit erreicht. | Zurückfahren und erneut versuchen; siehe Rate Limits |
500 | Interner Crawlbase-Fehler. Selten und vorübergehend. | Mit Backoff erneut versuchen; Statusseite prüfen |
503 | Dienst vorübergehend nicht verfügbar. | Mit Backoff erneut versuchen |
pc_status-Codes
Was während des eigentlichen Crawls passiert ist. Wird als pc_status-Response-Header bei jedem 200-OK-Request zurückgegeben.
Erfolg
| Code | Bedeutung |
|---|---|
200 | Seite erfolgreich gecrawlt. Der Body enthält das HTML oder JSON der Zielseite. |
201 | Async-Request akzeptiert. Das Ergebnis wird an Ihren Webhook geliefert oder unter der rid gespeichert. |
Zielseite hat mit einem Fehler geantwortet
Crawlbase hat die Seite erreicht, aber die Seite selbst hat einen Nicht-2xx-Status zurückgegeben. Der Body enthält das, was die Seite zurückgesendet hat.
| Code | Bedeutung |
|---|---|
404 | Zielseite existiert nicht. |
410 | Zielseite wurde dauerhaft entfernt. |
451 | Seite aus rechtlichen Gründen in der Zielregion blockiert. |
Blockiert oder gefiltert
| Code | Bedeutung | Was Sie versuchen können |
|---|---|---|
520 | Zielseite hat eine leere oder ungültige Response zurückgegeben. | Erneut versuchen; auf JS Token wechseln, falls noch nicht geschehen |
521 | Zielseite hat die Verbindung verweigert. | URL auf Korrektheit prüfen; Seite ist möglicherweise nicht erreichbar |
522 | Crawlbase konnte die Zielseite nicht erreichen (Timeout). | Erneut versuchen; page_wait-Anpassung erwägen |
523 | Zielseite hat einen TLS-Handshake-Fehler gesendet. | Seite hat möglicherweise Zertifikatsprobleme; an den Support melden |
525 | Bot-Challenge konnte nicht automatisch gelöst werden. | Auf JS Token wechseln; einige Seiten benötigen möglicherweise eine individuelle Behandlung |
599 | Allgemeiner Upstream-Fehler. | Mit Backoff erneut versuchen |
Die Response lesen
curl -i 'https://api.crawlbase.com/?token=YOUR_TOKEN&url=https%3A%2F%2Fexample.com'
# HTTP/1.1 200 OK
# pc_status: 200
# original_status: 200
# url: https://example.com/
# content-type: text/htmlfrom crawlbase import CrawlingAPI
api = CrawlingAPI({'token': 'YOUR_TOKEN'})
res = api.get('https://example.com')
# Layer 1: did Crawlbase accept the request?
if res['status_code'] != 200:
raise RuntimeError(f"Crawlbase: {res['status_code']}")
# Layer 2: did Crawlbase succeed in fetching the page?
if res['pc_status'] != 200:
raise RuntimeError(f"Crawl failed: {res['pc_status']}")
# Layer 3: did the target site return content?
if res['original_status'] != 200:
print(f"Site returned {res['original_status']}")
print(res['body'])
