A Firecrawl oferece diferentes tipos de proxy para ajudar você a extrair dados de sites com variados níveis de proteção contra bots. O tipo de proxy pode ser especificado usando o parâmetro proxy.

Tipos de proxy

Firecrawl oferece suporte a três tipos de proxy:
  • basic: Proxies para fazer scraping de sites sem ou com soluções anti-bot básicas. Rápido e geralmente funciona.
  • stealth: Proxies stealth para fazer scraping de sites com soluções anti-bot avançadas. Mais lento, mas mais confiável em certos sites.
  • auto: O Firecrawl tentará automaticamente novamente com proxies stealth se o proxy basic falhar. Se a nova tentativa com stealth for bem-sucedida, 5 créditos serão cobrados pelo scraping. Se a primeira tentativa com basic for bem-sucedida, apenas o custo regular será cobrado.
Se você não especificar um proxy, o Firecrawl usará auto por padrão.

Usando o modo stealth

Ao fazer scraping de sites com proteção anti-bot avançada, você pode usar o modo de proxy stealth para aumentar a taxa de sucesso.
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')
Observação: Requisições com proxy stealth custam 5 créditos cada vez que forem usadas.

Usando o modo stealth como mecanismo de nova tentativa

Um padrão comum é primeiro tentar o scraping com as configurações padrão de proxy e, em seguida, refazer a tentativa no modo stealth se você receber códigos de status de erro específicos (401, 403 ou 500) no campo metadata.statusCode da resposta. Esses códigos podem indicar que o site está bloqueando sua solicitação.
# 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}")
Essa abordagem ajuda a otimizar o uso de créditos, utilizando o modo stealth apenas quando necessário.