Firecrawl propose différents types de proxy pour vous aider à extraire des sites web présentant des niveaux variés de protection antibot. Le type de proxy peut être indiqué à l’aide du paramètre proxy.

Types de proxy

Firecrawl prend en charge trois types de proxy :
  • basic : Proxys pour le scraping de sites avec peu ou pas de solutions anti-bot. Rapides et généralement efficaces.
  • stealth : Proxys furtifs pour le scraping de sites avec des solutions anti-bot avancées. Plus lents, mais plus fiables sur certains sites.
  • auto : Firecrawl réessaiera automatiquement avec des proxys furtifs si le proxy basic échoue. Si le nouvel essai en stealth réussit, 5 crédits seront facturés pour le scraping. Si la première tentative en basic réussit, seul le coût standard sera facturé.
Si vous ne spécifiez pas de proxy, Firecrawl utilisera le mode auto par défaut.

Utiliser le mode furtif

Pour l’extraction de sites web avec une protection anti-bot avancée, vous pouvez utiliser le mode proxy furtif afin d’améliorer votre taux de réussite.
from firecrawl import Firecrawl

firecrawl = Firecrawl(api_key='fc-YOUR-API-KEY')

# Choose proxy strategy: 'basic' | 'stealth' | 'auto'
doc = firecrawl.scrape('https://example.com', formats=['markdown'], proxy='auto')

print(doc.warning or 'ok')
Remarque : Les requêtes en proxy furtif coûtent 5 crédits chacune.

Utiliser Stealth comme mécanisme de retry

Un schéma courant consiste à tenter d’abord le scraping avec les paramètres de proxy par défaut, puis à réessayer avec le mode stealth si vous rencontrez des codes d’erreur spécifiques (401, 403 ou 500) dans le champ metadata.statusCode de la réponse. Ces codes peuvent indiquer que le site bloque votre requête.
# pip install firecrawl-py

from firecrawl import Firecrawl

firecrawl = Firecrawl(api_key="YOUR_API_KEY")

# First try with basic proxy
try:
    content = firecrawl.scrape("https://example.com")
    
    # Check if we got an error status code
    status_code = content.get("metadata", {}).get("statusCode")
    if status_code in [401, 403, 500]:
        print(f"Got status code {status_code}, retrying with stealth proxy")
        # Retry with stealth proxy
        content = firecrawl.scrape("https://example.com", proxy="stealth")
    
    print(content["markdown"])
except Exception as e:
    print(f"Error: {e}")
    # Retry with stealth proxy on exception
    try:
        content = firecrawl.scrape("https://example.com", proxy="stealth")
        print(content["markdown"])
    except Exception as e:
        print(f"Stealth proxy also failed: {e}")
Cette approche permet d’optimiser votre consommation de crédits en n’activant le mode stealth que lorsque c’est nécessaire.