CloakBrowser 实战:30 秒绕过 Cloudflare Turnstile

从安装到第一个 Cloudflare Turnstile PASS 的全流程,3 行代码替换 Playwright,对接住宅代理与 GEOIP。

亿牛云技术团队2026年4月11日3 分钟阅读

安装

只需一行命令:

pip install cloakbrowser

首次运行时,CloakBrowser 会自动下载定制的 Chromium 二进制文件(约 200MB,命中缓存后不再重复下载)。

如需自动从代理 IP 检测时区和语言环境,安装 geoip 扩展:

pip install cloakbrowser[geoip]

验证安装

python -m cloakbrowser info

你会看到类似输出:

Version:  146.0.7680.177.5
Platform: linux-x64
Installed: True
Path:      /home/user/.cloakbrowser/chromium-146.0.7680.177.5/chrome

如果安装有问题,可强制下载:

python -m cloakbrowser install

Docker 一键运行

无需安装,直接测试:

docker run --rm cloakhq/cloakbrowser cloaktest

3 行代码替换 Playwright

如果你已经在用 Playwright,改动量极小:

- from playwright.sync_api import sync_playwright
- pw = sync_playwright().start()
- browser = pw.chromium.launch()
+ from cloakbrowser import launch
+ browser = launch()
 
page = browser.new_page()
page.goto("https://example.16yun.cn")
# ... 其余代码完全不变

launch() 返回的是标准 Playwright Browser 对象,所有原生 API(new_page()new_context()close() 等)照常使用。

带上代理

from cloakbrowser import launch
 
browser = launch(
    proxy="http://user:pass@proxy.16yun.cn:8888",  # 亿牛云爬虫代理
    geoip=True,    # 自动匹配时区和语言
    headless=False,
    humanize=True, # 人机行为模拟
)
 
page = browser.new_page()
page.goto("https://example.16yun.cn")

代理参数格式与 16YUN 帮助文档中的爬虫代理一致——使用 http://用户名:密码@域名:端口 格式。

无头模式的注意点

即使 CloakBrowser 有 C++ 级别的 patch,部分检测服务仍然会对 headless=true 做额外校验。建议:

  • 日常采集headless=True 可通过大多数检测
  • 目标为 Cloudflare Turnstile 或 reCAPTCHA v3 Enterpriseheadless=False
  • 结合 humanizeheadless=False + humanize=True 通过率最高

测试 Turnstile 通过

用 CloakBrowser 自带的测试命令验证:

docker run --rm cloakhq/cloakbrowser cloaktest

或在代码中访问测试页面:

from cloakbrowser import launch
 
browser = launch(headless=False)
page = browser.new_page()
 
# Cloudflare Turnstile 官方测试页
page.goto("https://example.16yun.cn")
page.wait_for_timeout(3000)
 
# 验证是否通过
status = page.text_content(".challenge-result")
print(f"Turnstile: {status}")  # 应输出 PASS
 
browser.close()

实际测试结果(CloakBrowser Chromium 146):

检测服务结果备注
Cloudflare Turnstile(无感)是 PASS自动通过
Cloudflare Turnstile(托管)是 PASS单次点击通过
reCAPTCHA v30.9 分服务器验证为人类
BrowserScan是 正常(4/4)四项检测全部通过
FingerprintJS是 未标记demo.fingerprint.com 正常

通过 16YUN 代理提升通过率

CloakBrowser 解决"你是谁",代理解决"你在哪里"。两者配合才能达到最高通过率。

from cloakbrowser import launch
 
browser = launch(
    proxy="http://user:pass@proxy.16yun.cn:8888",
    geoip=True,          # 根据代理 IP 自动设定时区/语言
    headless=False,
    humanize=True,
)
 
page = browser.new_page()
page.goto("https://httpbin.org/ip")
print(page.text_content("body"))  # 确认出口 IP 已变更

geoip=True 的作用是让浏览器时区和语言与代理 IP 的地理位置一致。例如代理 IP 在日本,浏览器自动设定为 Asia/Tokyo 时区和日语。这会消除一个重要的指纹不一致信号——想象一下,出口 IP 在东京,但浏览器时区是北京时间,检测系统会标记为可疑。

配合亿牛云各产品的推荐配置

代理产品推荐场景CloakBrowser 配置要点
爬虫代理(隧道)大批量页面采集proxy=http://user:pass@host:portConnection: Close 控制 IP 切换
API 代理自定义提取策略先提取 IP,再动态传入 proxy 参数
独享代理长期会话,固定出口proxy=http://user:pass@host:portlaunch_persistent_context() 保持会话

常见问题

运行时报错找不到二进制文件

python -m cloakbrowser install

手动下载后重新运行。

代理已配置但出口 IP 没变

先确认代理参数格式是否正确。可用 curl 验证:

curl -x http://user:pass@proxy.16yun.cn:8888 http://httpbin.org/ip

如果 curl 返回了代理出口 IP 但 CloakBrowser 没有,说明浏览器未正确使用代理。检查 proxy 参数是否传递到了 launch()

Turnstile 仍然拦截

  • 确认已关闭 headless 模式
  • 开启 humanize=True
  • 确认代理是住宅 IP,而非数据中心 IP
  • 目标网站可能使用了 Turnstile 托管模式(需要点击),CloakBrowser 可以配合 humanize 模拟点击

返回 407 错误

这是代理认证失败。参照亿牛云帮助文档中的排障流程:

  1. 核对域名、端口、用户名、密码是否与后台一致
  2. 确认代码中代理认证配置正确
  3. 使用示例代码最小链路验证

需要企业代理方案?

我们可根据目标站点、并发规模与稳定性目标提供定制方案。