使用场景
受保护的电商网站
从受 Cloudflare、DataDome 或 PerimeterX 保护的网站抓取产品数据
社交媒体平台
从具备复杂机器人检测的平台提取公开数据
金融数据网站
从受保护的来源获取市场数据、股票价格和金融信息
受限速的 API
通过指纹轮换绕过激进的速率限制
地理屏蔽的内容
通过您自备的代理访问受地区限制的内容
高安全性测试
使用先进的规避技术测试您自己的反机器人系统
Endpoint
/api/v1/tools/stealth_modeParameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
operation | string | Optional | configure | 要执行的隐身操作:scrape、configure、create_context、create_page、get_stats 或 cleanup。`scrape` 是一次调用完成的路径——它创建隐身上下文、导航到 `url`、返回请求的 `formats`,然后拆除上下文,全部计入一次计费调用。先 create_context 再 create_page 是一次导航与验证页检查:`create_page` 加载 `urlToTest`,报告其状态、标题以及任何验证页,并在调用返回前关闭该页面,因此页面上的任何内容都不会延续到之后的调用。需要在同一页面上跨多次调用完成的工作(先登录再读取;先点击再读取),请使用 [browser_session](/docs/api-reference/tools/browser-session) 并设置 `stealth: true`。`configure` 只校验 `stealthConfig`,并在补全默认值后连同一条 `note` 一起返回——它不保存任何内容,因此需要在每次应使用该配置的 `scrape` 或 `create_context` 调用中传入 `stealthConfig`。 Example: create_context |
stealthConfig | object | Optional | - | 详细的隐身选项。键:level(basic | medium | advanced,默认 medium)、randomizeFingerprint、hideWebDriver、blockWebRTC、spoofTimezone、randomizeHeaders、useRandomUserAgent、simulateHumanBehavior(均为布尔值,默认 true)、customUserAgent、customViewport({ width 800-1920, height 600-1080 })、locale(默认 "en-US")和 timezone。该配置只作用于传入它的那次调用,不会在调用之间保留。在 `camoufox` 引擎上,`customUserAgent` 和 `customViewport` 不会生效,`locale` 在浏览器启动时即已固定;使用代理时,`locale` 和 `timezone` 取决于出口 IP。`scrape` 和 `create_context` 会在 `warnings` 中逐项报告这些情况。 Example: {"level": "advanced", "blockWebRTC": true} |
engine | string | Optional | playwright | 浏览器引擎:"playwright"(默认)或 "camoufox"(基于 Firefox,反检测能力更强;仅在后端已安装时可用)。 Example: camoufox |
contextId | string | Optional | - | 由 create_context 调用返回的浏览器上下文 ID。将其传给 create_page,以在该隐身上下文中打开页面。 Example: ctx_ab12cd34ef56 |
urlToTest | string | Optional | - | create_page:要导航并检查的 URL。页面会在调用返回前关闭。 Example: https://protected-site.com |
url | string | Optional | - | 要抓取的 URL。`operation: "scrape"` 必填;其他操作会忽略它,改用 `urlToTest`。 Example: https://protected-site.com/product/42 |
formats | array | Optional | ["markdown"] | `operation: "scrape"` 返回的格式:`markdown`、`html`、`text`、`links`、`metadata` 或 `screenshot`。截图以 `crawlforge://screenshot/{id}` 资源 URI 的形式返回,而不是内联 base64;此 REST 端点会原样透传该 URI 而不解析它,因此目前 `screenshot` 只能通过能够读取该资源的 CrawlForge MCP 服务器使用。 Example: ["markdown", "links"] |
wait_for | number | Optional | - | 页面加载后的额外等待时间,单位毫秒(0-30000)。用于在 DOMContentLoaded 之后才渲染的内容;隐身运行本身已包含类人延迟,因此请从较小的值开始。 Example: 2000 |
verbose | boolean | Optional | false | 返回 create_context 生成的完整指纹,而不是摘要。在排查目标为何仍能检测到浏览器时很有用。 Example: false |
respect_robots | boolean | Optional | true | 遵守目标站点的 robots.txt。省略该参数时按合规默认值(`true`)执行:robots.txt 对 `CrawlForge` 禁止的 URL 会在启动任何浏览器之前被拒绝,此端点不会为此扣费,每一次导航也会同样检查。即使隐身浏览器使用随机化的 User-Agent,该规则仍按 `CrawlForge` 产品令牌匹配,因此站点所有者的 `User-agent: CrawlForge` 指令同样约束隐身流量。仅在您与目标站点另有约定时才设为 `false`——此时响应会带上一条 `warnings`,并且该覆盖会记录到您的 API key 上。 Example: true |
max_inline_chars | number | Optional | 40000 | 内联返回的最大结果大小,以其 JSON 的字符数计(1,000-10,000,000)。超过后,响应会携带 `preview`(结果主文本字段的前 `max_inline_chars` 个字符)、`result_handle`、`total_chars`、`truncated: true` 和 `expires_at`,其余部分由 [read_result](/docs/api-reference/tools/read-result) 读取,每次调用 1 credit。已存储的结果保留 1 小时。适用于 `scrape` 操作。 Example: 40000 |
redact_pii | boolean | object | Optional | false | 在结果被存储或返回之前,从本次调用返回的文本中移除个人数据。 仅作用于 `operation: "scrape"`,这是唯一返回页面的操作;管理类操作没有可脱敏的文本。 `true` 是 `{ mode: "fast" }` 的简写:四个正则类别全开,以标签替换。只要请求了脱敏,响应就会在 `data` 内带上 `redaction: { entities, count, mode }`,即使没有任何匹配(`count: 0`)也会带上,因此“什么都没找到”永远不会被误认为“参数被忽略了”;没有命中的类别会被省略,而不是报成 `0`。脱敏在结果存储**之前**执行,因此超出阈值、之后再用 [read_result](/docs/api-reference/tools/read-result) 读回的结果本身就已脱敏。两条刻意的边界:地址类字段(`url`、`link`、`href`、`canonical_url`)从不脱敏;由文本派生的计数(`content_length`、`word_count`、`character_count`)描述的是抽取时的文本,即脱敏之前的文本。 Example: true |
各操作及其费用
5 credits 对应浏览器工作;事务性操作每次 1 credit。因此一次调用完成的 scrape 为 5 credits,而 create_context → create_page → cleanup 这条路线需要 11 credits。
url、返回请求的 formats 以及页面标题和最终 URL,然后拆除上下文。请从这里开始。contextId。当多个页面需要共享同一指纹和 cookie 存储时使用。contextId 内导航到 urlToTest。调用返回时页面会关闭,上下文保留。stealthConfig,并在补全默认值后返回,同时附带一条说明这一点的 note。不保存任何内容,后续调用也不会沿用它——请在每次 scrape 或 create_context 调用中传入 stealthConfig。其中不发生浏览行为,因此按事务性操作计费。activeContexts、totalFingerprintsSaved、browserRunning、humanBehaviorActive 和 proxyStatus(enabled、currentProxy、totalProxies)。不涉及浏览。隐身模式不做的事
隐身模式使用随机化的浏览器指纹渲染 JavaScript。它不解决 CAPTCHA、不伪造挑战令牌,也不会绕过登录或付费墙,更不能用于规避专门针对 CrawlForge 的封锁。robots.txt 在每一次导航时仍然生效,并按 CrawlForge 产品令牌匹配。如果目标仍然拒绝,正确的做法是使用有文档的 API 或取得站点所有者的许可,而不是调高隐身级别。
隐身流量从哪里出口
托管 API 从数据中心地址运行 stealth_mode。CrawlForge 不运营任何住宅代理池,在运行 JavaScript 之前就对网络评分的站点(Cloudflare、DataDome)仍可能对托管渲染发起挑战。在 stealthConfig.proxyRotation 中传入您自己的住宅或移动代理,每个隐身上下文都会使用它。代理仅在 Chromium(playwright)引擎上按上下文生效:camoufox 会拒绝单次调用的 proxyRotation,因为它在启动浏览器时就应用代理,并在多次调用之间共享该浏览器;自行托管时,可通过 CRAWLFORGE_STEALTH_PROXIES 为 Camoufox 设置出口。如果您自行托管 MCP 服务器,CRAWLFORGE_STEALTH_PROXIES 可设置服务器级出口,CRAWLFORGE_BROWSER_BACKEND=browserbase 则把隐身会话交给 Browserbase 账户,由该账户在其自身条款下提供住宅出口和 CAPTCHA 破解。
引擎选择
stealth_mode 支持两种底层浏览器引擎。请根据目标网站的检测难度进行选择。
引擎示例
curl -X POST https://crawlforge.dev/api/v1/tools/stealth_mode \
-H "X-API-Key: cf_test_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"operation": "create_context",
"engine": "camoufox",
"stealthConfig": {
"level": "advanced"
}
}'隐身级别
请求示例
# 1. Create a stealth browser context
curl -X POST https://crawlforge.dev/api/v1/tools/stealth_mode \
-H "X-API-Key: cf_test_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"operation": "create_context",
"engine": "playwright",
"stealthConfig": {
"level": "advanced",
"randomizeFingerprint": true,
"blockWebRTC": true
}
}'
# 2. Open a page in that context (use the contextId from step 1)
curl -X POST https://crawlforge.dev/api/v1/tools/stealth_mode \
-H "X-API-Key: cf_test_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"operation": "create_page",
"contextId": "ctx_ab12cd34ef56",
"urlToTest": "https://protected-site.com"
}'响应示例
{ "success": true, "data": { "operation": "create_context", "contextId": "ctx_ab12cd34ef56", "engine": "playwright", "stealthConfig": { "level": "advanced", "randomizeFingerprint": true, "hideWebDriver": true, "blockWebRTC": true, "spoofTimezone": true, "locale": "en-US" }, "message": "Stealth context created" }, "credits_used": 5, "credits_remaining": 995, "processing_time": 1200}data.contextId将其传给 create_page,以在此隐身上下文中打开页面data.operation已执行的隐身操作data.stealthConfig应用于该上下文的已解析隐身配置credits_used浏览器工作(scrape、create_context、create_page)消耗 5 credits;事务性操作消耗 1 creditprocessing_time启动隐身上下文的耗时(毫秒)错误处理
浏览器运行时未配置(503 TOOL_NOT_AVAILABLE)
隐身模式需要浏览器运行时。当托管执行后端未配置时,调用会立即返回 503,且不扣除 credits。
超出速率限制(429 Too Many Requests)
您已超出所属方案的速率限制。请稍候,或升级方案以获得更高上限。
无效操作(400 Bad Request)
操作必须为以下之一:scrape、configure、create_context、create_page、get_stats 或 cleanup。
执行后端超时(504 MCP_UPSTREAM_TIMEOUT)
目标站点未能在执行后端的时间预算内加载完成。防护严密的站点是常见原因。失败不计费。
被 robots.txt 阻止(502 TOOL_ERROR)
目标站点的 robots.txt 对 CrawlForge 禁止了该 URL,因此没有启动任何浏览器,也没有产生任何费用。若您与目标站点另有约定,可设置 respect_robots: false 予以覆盖——该覆盖会记录到您的 API key 上。该覆盖不适用于列入 CrawlForge 永久排除名单的主机——无论 respect_robots 取何值,这类主机一律被拒绝。
请先从 "medium" 隐身级别开始。仅对屏蔽 medium 级别的网站使用 "advanced"。在多次 create_page 调用中重用同一个上下文以摊薄初始化开销——在进行批量操作时请据此做好规划。
Credit 费用
scrape、create_context 或 create_page——与隐身级别无关。configure、get_stats 和 cleanup 这些事务性操作不进行浏览,每次仅 1 credit,因此一次调用完成的 scrape 全程只需 5 credits。包含内容:
指纹随机化(所有级别)
人类行为模拟
反检测技术
WebDriver 检测规避(medium 及以上)
Canvas/WebGL 遮蔽(medium 及以上)
先进的 TLS 指纹(advanced)
套餐推荐:
Free 套餐: 1,000 个一次性试用 credits = 200 次隐身请求
Hobby 套餐: 5,000 credits = 1,000 次隐身请求($19/mo)
Professional 套餐: 100,000 credits = 20,000 次隐身请求($99/mo)
相关工具
准备好试用 stealth_mode 了吗?免费注册,获取 1,000 credits,开始构建。