CloakFetch:让Coding Agent穿透Cloudflare反爬保护

CloakFetch通过伪装真实浏览器帮Coding Agent绕过反爬系统拦截
开源工具CloakFetch解决了Coding Agent被Cloudflare等反爬系统拦截的痛点。其原理分三步:检测Agent请求失败后,自动启动带反爬补丁的真实Chromium浏览器重新抓取页面,再用Trafilatura提取正文并转为干净Markdown回传给Agent。整个过程对Agent透明,支持Claude Code等多种主流Coding Agent。
文章正文
当你让 Claude Code 或其他 Coding Agent 抓取一个网页时,最令人沮丧的场景莫过于:Agent 两手一摊,告诉你「403 Forbidden」或「Just A Moment」,然后任务就卡住了。这背后的原因是 Cloudflare 等反爬系统识破了 Agent 的机器人身份,直接把它挡在了门外。
开源工具 CloakFetch 正是为解决这个问题而生。它的核心思路很巧妙——在 Agent 被拦截的瞬间,悄悄派出一个「看起来像真人」的浏览器替它重新敲门,拿到内容后清理干净再交还给 Agent。整个过程,Agent 自己甚至都不知道刚才那扇门曾经关过。
为什么 Coding Agent 需要 CloakFetch?
互联网上大量内容站点的门口,都站着一个看不见的「保安」。Cloudflare、Datadome、Akamai、PerimeterX、Imperva、Kasada、AWS WAF……这些反爬产品就是不同公司的保安系统,它们的核心工作是分辨敲门的是真人还是机器人。
这些系统的识别能力远比表面看起来复杂。以 Cloudflare 为例,它通过多维度指纹识别来区分真人与机器人:TLS 指纹(JA3/JA4)是其中最难伪造的一层——不同的 HTTP 客户端在建立加密连接时,会因为支持的加密套件顺序、TLS 扩展列表等细节产生独特的「握手签名」,curl 和 Python requests 的签名与 Chrome 浏览器截然不同。此外,这些系统还会检测 HTTP/2 帧顺序、浏览器特有的 JavaScript API(如 navigator.webdriver 属性)、Canvas/WebGL 渲染指纹,以及是否正确执行了注入的混淆 JS 挑战。

普通的 HTTP 客户端——包括 curl、Python 的 requests 库、以及各家 Coding Agent 自带的 WebFetch 工具——到了这些保安面前,相当于带着塑料假胡子的机器人,对方一眼就能识破。Science.org、很多新闻站、不少学术出版商都部署了这类保护。结果就是你让 Agent 去查个资料,它回来只有一句冷冰冰的 HTTP 403 Forbidden,然后整个任务链就断了。
对于做研究、做信息聚合、做爬虫流水线的开发者来说,这是一个高频痛点。CloakFetch 支持 Claude Code、Codex、OpenCode、OpenClaude 等多种主流 Coding Agent,提供了一套优雅的自动化解决方案。
CloakFetch 的工作原理:三步救援
第一步:失败检测
一个轻量级脚本守在 Agent 的工具调用旁边,每次 WebFetch 执行完毕后都会扫一眼返回结果。它用正则表达式检查内容中是否包含 403、Forbidden、Cloudflare、Just A Moment 等关键字。如果没有匹配到,就当什么都没发生;一旦扫到了,它就知道刚才那次请求又被保安挡了,立即触发救援流程。

第二步:派真浏览器上门
救援脚本会启动一个隐身模式的 CloakBrowser——这是一个真实的 Chromium 浏览器,在底层打了反爬补丁,连 TLS 指纹都跟普通用户的 Chrome 一模一样。
这里涉及一项关键技术:标准 Headless 浏览器(如 Puppeteer、Playwright 的无界面模式)存在大量可被检测的特征,navigator.webdriver 为 true、缺少 GPU 渲染特征、特定 Chrome 扩展列表为空等。CloakBrowser 所使用的「反爬补丁」技术(也称 undetected-chromedriver 或 stealth 模式)通过在浏览器启动时注入 JavaScript 来覆盖这些泄露特征,同时修改 TLS 握手参数使其与真实 Chrome 一致。对保安系统来说,它看起来就是一个正常用户在正常浏览网页。
它会乖乖等 Cloudflare 的 JS 挑战跑完,等页面真正渲染完成,然后把完整的页面内容抓取下来。
第三步:清理战场
一张现代网页动辄几百 KB 起步,其中 90% 是导航栏、推荐位、广告、Cookie 弹窗,正文可能就那么一两屏。直接把整张网页塞给 Agent,等于把一整张报纸连广告夹页都丢进去,既浪费 token 又难以解析。
CloakFetch 使用 Trafilatura 这个解析库专门做内容提取。Trafilatura 是由德国莱比锡大学研究人员开发的 Python 库,其核心算法基于文本密度分析和 DOM 树结构启发式规则:正文段落的文字密度远高于导航栏和广告区域,链接文本比例也明显不同。相比通用的 HTML 解析方案,Trafilatura 在处理新闻文章、博客、学术页面时的准确率更高,能有效过滤评论区、侧边栏推荐、Cookie 声明等噪音内容。它剪掉所有边角料,只留正文,把几百 KB 的 HTML 压缩成几十 KB 的干净 Markdown,最后通过 Hook 的回填通道送回 Agent。对于 AI Agent 来说,这一步的意义不仅是节省 token,更重要的是减少无关信息对模型推理的干扰。
两条安装路径:Hook 模式 vs Skill 模式
CloakFetch 提供了两条安装路径,区别在于救援是如何触发的。
Hook 模式:全自动秘书
Hook 模式目前主要在 Claude Code 上验证过,因为 Hook 这套机制最早就是 Claude Code 引入的。
Hook 是 Claude Code 在工具调用生命周期中提供的拦截点机制,类似于软件开发中的中间件或 AOP(面向切面编程)概念。开发者可以在工具调用的前置(pre-hook)或后置(post-hook)阶段注入自定义脚本,脚本可以读取工具的输入输出、修改结果,甚至完全替换返回值。CloakFetch 巧妙地利用了后置 Hook——在 WebFetch 返回结果后立即检查,如果发现失败特征就悄悄替换成真实浏览器抓取的结果,整个过程对 Agent 的主推理循环完全透明。
Hook 像是给 Agent 配了一个秘书,每次 Agent 调用 WebFetch,秘书都在旁边盯着。一看到失败,立刻自动补救。Agent 自己根本不知道发生过失败,看到的永远是抓取成功的结果。
具体安装三步走:
- 把仓库里的两个 Hook 脚本复制到 Claude Code 的 Hooks 目录
- 在配置里写一行环境变量,告诉它 CloakBrowser 的虚拟环境装在哪
- 在 Claude Code 的配置文件里登记这个 Hook,把它绑定
相关推荐
产品体验Qoder vs Cursor实测对比:同样20美金谁更强?
实测对比Qoder和Cursor两款AI IDE,从Agent自主修复能力、人工沟通次数、架构决策等维度评测。Qoder仅需2次沟通完成任务,Cursor需8次。详细分析两者差异,帮你选择最适合的AI编程工具。
产品体验Cursor云Agent演示:打通软件开发全链路瓶颈
深度解析Cursor云Agent最新Demo,展示如何通过云端虚拟机、自动测试产物和全链路控制平面,系统性消除软件开发生命周期中的人类瓶颈,让Agent自主运行、人按需介入。
产品体验Cursor 3.0深度解析:多Agent并行、Design Mode与Best-of-N模型对比
Cursor 3.0正式发布,从AI辅助编程工具进化为Agent舰队指挥中心。本文详解多智能体并行、Design Mode可视化编辑、Best-of-N多模型择优等核心功能,解读AI编程新范式。