跳转到主要内容
Firecrawl 提供多种代理类型,帮助你抓取不同复杂度的网站。可以通过 proxy 参数指定代理类型。

代理类型

Firecrawl 支持三种代理类型:
  • basic:用于抓取大多数网站的代理。速度快,通常能正常工作。
  • stealth:用于在保持隐私的同时抓取复杂网站的隐身代理。速度较慢,但在某些站点更可靠。
  • auto:若 basic 代理失败,Firecrawl 会自动使用隐身代理重试抓取。若隐身重试成功,该次抓取计费 5 点额度;若首次使用 basic 即成功,则仅收取常规费用。
如果未指定代理,Firecrawl 默认使用 auto。

使用 stealth 模式

在抓取复杂网站时,可以使用 stealth 代理模式,在提高成功率的同时保护隐私。
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')
注意: 使用 stealth 代理时,每次请求消耗 5 个积分。

将 Stealth 用作重试机制

一种常见做法是先使用默认代理设置进行抓取;如果在响应的 metadata.statusCode 字段中遇到特定错误状态码(401、403 或 500),则改用 stealth 模式重试。这些状态码可能表明网站正在拦截你的请求。
# 用 pip 安装 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}")
这种方法可以让你仅在必要时启用 stealth 模式,从而更高效地使用额度。