CloakBrowser 实战:30 秒绕过 Cloudflare Turnstile
从安装到第一个 Cloudflare Turnstile PASS 的全流程,3 行代码替换 Playwright,对接住宅代理与 GEOIP。
安装
只需一行命令:
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 installDocker 一键运行
无需安装,直接测试:
docker run --rm cloakhq/cloakbrowser cloaktest3 行代码替换 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 Enterprise:
headless=False - 结合 humanize:
headless=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 v3 | 0.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:port,Connection: Close 控制 IP 切换 |
| API 代理 | 自定义提取策略 | 先提取 IP,再动态传入 proxy 参数 |
| 独享代理 | 长期会话,固定出口 | proxy=http://user:pass@host:port,launch_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 错误
这是代理认证失败。参照亿牛云帮助文档中的排障流程:
- 核对域名、端口、用户名、密码是否与后台一致
- 确认代码中代理认证配置正确
- 使用示例代码最小链路验证
需要企业代理方案?
我们可根据目标站点、并发规模与稳定性目标提供定制方案。