メインコンテンツへスキップ
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')

# プロキシの方式を選択: '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")

# まずは basic プロキシで試す
try:
    content = firecrawl.scrape("https://example.com")
    
    # エラーのステータスコードかを確認
    status_code = content.get("metadata", {}).get("statusCode")
    if status_code in [401, 403, 500]:
        print(f"ステータスコード {status_code} を受け取りました。stealth プロキシで再試行します")
        # stealth プロキシで再試行
        content = firecrawl.scrape("https://example.com", proxy="stealth")
    
    print(content["markdown"])
except Exception as e:
    print(f"エラー: {e}")
    # 例外発生時は stealth プロキシで再試行
    try:
        content = firecrawl.scrape("https://example.com", proxy="stealth")
        print(content["markdown"])
    except Exception as e:
        print(f"stealth プロキシでも失敗しました: {e}")
この方法により、必要な場合にのみステルスモードを使うことで、クレジットの消費を最適化できます。