[Go to site: main page, start]

crawlbaseDocs
Se connecter

Deux statuts, deux questions

La plupart des API HTTP renvoient un seul code de statut. Crawlbase en renvoie deux, car le crawling implique deux couches : l'infrastructure de Crawlbase et le site cible derrière celle-ci.

Statut HTTP
int
Le statut de votre requête vers Crawlbase. 200 signifie que nous l'avons traitée ; 4xx/5xx signifie que nous n'avons pas pu.
cb_status
intheader
Le statut de la requête de Crawlbase vers le site cible. 200 signifie que nous avons obtenu une page propre ; les autres codes décrivent ce qui a échoué en amont.
original_status
intheader
Le statut HTTP brut renvoyé par le site cible. Utile lorsque le site lui-même renvoie un code non-200 que vous devez gérer (404, 403, etc.).
Le modèle mental

Vérifiez toujours d'abord le statut HTTP. S'il est à 200, vérifiez ensuite cb_status. Si celui-ci est à 200, vérifiez alors original_status pour les erreurs côté site.

Codes de statut HTTP

Ce que Crawlbase lui-même a renvoyé à votre client.

CodeSignificationAction
200Requête traitée. Vérifiez cb_status pour le résultat.Passez à cb_status
401Token manquant ou invalide.Vérifiez le token ; assurez-vous qu'il n'a pas été réinitialisé
402Crédits épuisés ou période d'essai expirée.Rechargez le compte
403Le token n'a pas accès à ce produit.Utilisez le bon type de token (Normal ou JS)
422Requête mal formée : généralement une URL manquante ou non encodée.Encodez en URL le paramètre url
429Limite de concurrence atteinte.Patientez puis réessayez ; voir Rate Limits
500Erreur interne Crawlbase. Rare et passagère.Réessayez avec un backoff ; consultez la page de statut
503Service temporairement indisponible.Réessayez avec un backoff

Codes cb_status

Ce qui s'est passé durant le crawl proprement dit. Renvoyé sous forme d'en-tête de réponse cb_status sur chaque requête en 200 OK. Anciennement nommé pc_status.

Succès

CodeSignification
200Page crawlée avec succès. Le body contient le HTML ou le JSON de la page cible.
201Requête async acceptée. Le résultat sera livré à votre webhook ou stocké sous le rid.

Le site cible a renvoyé une erreur

Crawlbase a atteint le site, mais le site lui-même a renvoyé un code non-2xx. Le body contient ce que le site a renvoyé.

CodeSignification
404La page cible n'existe pas.
410La page cible a été supprimée définitivement.
451Page bloquée pour des raisons légales dans la zone géographique cible.

Bloqué ou filtré

CodeSignificationQue faire
520Le site cible a renvoyé une réponse vide ou invalide.Réessayez ; passez au token JS si ce n'est pas déjà fait
521Le site cible a refusé la connexion.Vérifiez que l'URL est correcte ; le site est peut-être hors service
522Crawlbase n'a pas pu joindre le site cible (timeout).Réessayez ; envisagez d'ajuster page_wait
523Le site cible a renvoyé une erreur de handshake TLS.Le site a peut-être un problème de certificat ; signalez-le au support
525Le défi anti-bot n'a pas pu être résolu automatiquement.Passez au token JS ; certains sites peuvent nécessiter un traitement personnalisé
599Échec générique en amont.Réessayez avec un backoff

Lire la réponse

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 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['cb_status'] != 200:
    raise RuntimeError(f"Crawl failed: {res['cb_status']}")


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


print(res['body'])

Étapes suivantes

Modèles pour les retries, les files de messages morts et l'observabilité.
Conseils spécifiques sur les 429 et la concurrence.