Firecrawl は、ボット対策の強度が異なるウェブサイトをスクレイピングできるよう、複数のプロキシタイプを提供しています。プロキシタイプは proxy パラメータで指定できます。

プロキシタイプ

Firecrawl は 3 種類のプロキシをサポートしています:
  • basic: ボット対策がない、または基本的な対策のみのサイト向けプロキシ。高速で、たいてい問題なく動作します。
  • stealth: 高度なボット対策を行うサイト向けのステルスプロキシ。速度は遅めですが、特定のサイトではより信頼性があります。
  • auto: basic プロキシが失敗した場合、Firecrawl がステルスプロキシで自動的に再試行します。ステルスでの再試行が成功した場合、そのスクレイプには 5 クレジットが請求されます。最初の basic が成功した場合は、通常のコストのみが請求されます。
プロキシを指定しない場合、Firecrawl は既定で auto を使用します。

ステルスモードの使用

高度なボット対策が施されたウェブサイトをスクレイピングする場合は、ステルスプロキシモードを使うことで成功率を高められます。
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')
注: ステルスプロキシのリクエストは、使用時に1リクエストあたり5クレジットがかかります。

リトライ手段としてのステルスの活用

一般的なパターンとして、まずはデフォルトのプロキシ設定でスクレイピングを試し、レスポンスの metadata.statusCode フィールドに特定のエラーステータスコード(401、403、500)が含まれている場合に、ステルスモードで再試行します。これらのステータスコードは、サイト側でリクエストがブロックされている可能性を示します。
# 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}")
この方法により、必要な場合にのみステルスモードを使うことで、クレジットの消費を最適化できます。