一个打了0.90分reCAPTCHA的开源浏览器,正在改写反检测游戏的规则


原文地址:https://github.com/feder-cr/invisible_playwright


昨天刷GitHub Trending,看到一个项目,两行字把我钉住了。

AI Browser, Stealth Firefox that passes every bot detection test. Drop-in Playwright replacement.

我当时想,又是哪个野鸡反检测浏览器在吹牛?这赛道我看过太多了,Multilogin、GoLogin、AdsPower、Dolphin Anty,个个都号称「过检测」,实测reCAPTCHA得分0.3到0.5徘徊,CreepJS一跑满屏红字,FingerprintJS的tampering标记亮得跟圣诞树似的。

但这个项目不一样,我往下翻了翻测试截图,reCAPTCHA v3得了0.90,FingerprintPro全线not detected,CreepJS显示0 lies。

0 lies。

我做了三年AI工具,跑过无数自动化脚本,被反爬系统拦过上千次。0 lies这东西我从没在任何反检测浏览器上见过,商业的没有,开源的更没有。

这个项目叫invisible_playwright,作者feder-cr,真名Federico Elia,热那亚大学计算机科学本科,GitHub上2k粉丝。你可能没听过他的名字,但他另一个项目你大概率见过,AIHawk,自动投简历的AI Agent,29.8k stars,一度霸榜GitHub Trending。

一个人,写出了两个爆款,一个帮你找工作,一个帮你不被发现是机器。说出来有点黑色幽默。


先说个背景,为什么反检测浏览器这件事这么难。

你现在看到的几乎所有商业反检测浏览器,不管是Multilogin的Mimic、GoLogin的Orbita、AdsPower还是Dolphin Anty,底层都是Chromium。策略也一样,在Chromium上面注入JS脚本,覆盖navigator属性、WebGL参数、Canvas API、AudioContext,反正浏览器能暴露的指纹,都用JS给它改掉。

听起来挺合理的对吧?但这个方案有两个致命问题。

头一个,JS补丁本身就是明显的指纹。反爬系统不是傻子,它们会检查原生函数的toString()输出,查属性描述符的configurable状态,对比属性枚举顺序,监控原型链有没有被篡改。你但凡用Object.defineProperty改了一个属性,就在页面上留下了痕迹。CreepJS有一整套「谎言检测器」就是干这个的,专门抓你在JS层面动了什么手脚。

第二个问题更深层,Chromium本身就可疑了。2024年以来,住宅代理爬虫流量里Chromium占比超过90%,检测系统已经默认Chromium形状的东西更可能是机器人。Chromium开源自研的部分干净没问题,但Chrome有闭源组件,Widevine、专有编解码器、Google Update、Safe Browsing端点,这些会翻转JS层面的特征标志和网络信号,开源fork追不上Chrome的发布节奏,差几天就暴露出版本特征行为。检测系统专门锁死这些差异。

你用Chromium做反检测,从起跑线就输了。裁判看你穿的衣服就知道你是哪边的。


invisible_playwright做了什么不一样的事?

它从Firefox的C++源码层面打补丁。

不是JS注入,不是运行时覆盖,是把Gecko渲染引擎的C++代码改了,让伪造的值直接通过浏览器的原生路径返回。从页面的视角看,这个浏览器就是在说真话。反爬系统的谎言检测器没有任何东西可以抓。

这听起来只是一句话的区别,但技术路线的差异巨大。JS层面的修改是「告诉浏览器撒一层谎」,C++层面的修改是「让浏览器真的变成那个人」。一个是贴胡子戴眼镜的伪装,一个是整容手术。

而且所有伪造都是通过preference驱动的,不是硬编码在二进制文件里。你改一个pref值,对应的指纹就变了。每个会话都可以有独立的指纹配置,互相完全不关联。

指纹数据的来源也有讲究。它用了一个贝叶斯采样器,从真实的Firefox遥测数据里抽取指纹配置。GPU型号,音频设备,字体列表、大约400个字段,全部从真实用户的数据分布里采样。统计学上合理的组合,不是随机拼凑。你不会看到一块RTX 4090配着2GB内存和Windows XP这种一眼假的配置。

鼠标轨迹也做了处理。贝塞尔曲线弧线运动,不是直线,直接烘焙进浏览器的底层实现里。不是用JS模拟mousemove事件那种假得不能再假的方式。


测试结果是硬核证明。

reCAPTCHA v3得分0.90,满分1.0。Google把你归类为「极可能是人类」。大多数反检测栈在0.3到0.7之间挣扎。0.9是什么概念,我用真实浏览器正常浏览有时候都拿不到这个分数。

FingerprintJS Pro的Smart Signals全套检测,bot标记not detected,VPN标记false,tampering标记false,dev tools标记not detected。浏览器被正确识别为Firefox 150 on Windows 10,置信度0.9。所有标记全绿,一个警告都没有。

CreepJS,0 lies。对,0。没有任何不一致,没有headless暗示和伪装值之间的矛盾,没有渲染输出和声称配置的冲突。这个「0 lies」是杀死大多数反检测浏览器的关键,一个不一致就能让你的信任分数崩塌。

BrowserLeaks WebRTC,没有公网IP泄露。连mDNS hostname的问题都解决了,原版Firefox会暴露一个稳定的per-session mDNS主机名作为host ICE候选,这本身就是一个可以被指纹追踪的信号。invisible_playwright用合成的私有局域网IP替换了host候选,匹配伪造的网络配置。

bot.sannysoft.com,所有检查全部通过。WebDriver不存在,Chrome专属属性缺席,plugin/mime/languages数组一致,Permissions API正确,iframe和source窗口检查通过。

我之前测过Multilogin Mimic和GoLogin,在同样的检测套件下,Multilogin的reCAPTCHA得分大概0.3到0.6,FingerprintPro直接标红bot detected和tampering detected,CreepJS报多个lies。差距不是一点半点。


用法更是离谱地简单,两行代码替换。

你原来用Playwright,from playwright.sync_api import sync_playwright,改成from invisible_playwright import InvisiblePlaywright。然后with InvisiblePlaywright() as browser,其他代码一行不用改。

100% Playwright兼容,同步异步都支持,所有方法都能用。你已经有Playwright脚本的话,迁移成本接近零。

每个会话自动生成唯一的、连贯的指纹,从真实Firefox遥测数据里贝叶斯采样。你也可以指定seed来复现某个指纹,或者pin特定的字段比如强制使用某块GPU同时其他字段仍然来自seed。

代理支持SOCKS5、SOCKS4、HTTP、HTTPS,认证在所有协议上都能用。DNS默认走代理通道不掉漏。SOCKS5认证通过修改nsProtocolProxyService.cpp实现,不是那种靠JS中间层的歪路子。

安装也就两步,pip install然后fetch一下,下载一个大约100MB的补丁Firefox二进制文件,SHA256校验。

整个项目5月13日首次公开,两周内迭代到0.1.8版本,57次commit,104个fork,1002颗star。作者更新极其密集,基本上每天都能看到新的fix和release。目前支持Windows x86_64和Linux x86_64。


说到这儿你可能想问,开源的反检测Firefox不是已经有Camoufox了吗?

对,Camoufox是daijiro做的,应该是目前知名度很高的开源反检测Firefox项目。invisible_playwright在README里也明确承认站在了Camoufox的肩膀上,设计目标类似但实现路径不同。Camoufox打了更广的修补面,自带指纹数据库,而invisible_playwright更靠近原版Firefox,用贝叶斯采样器驱动伪装。

还有两个相关的但不同方向的Firefox项目也值得了解。一个是arkenfox/user.js,这是Firefox隐私安全加固的标配配置文件,通过preference来锁定隐私设置。读arkenfox你才能理解哪些user.js的旋钮真正重要。invisible_playwright走得更远,在preference不够用的时候直接改C++源码,Canvas噪声、WebGL参数覆盖、字体白名单、WebRTC IP替换、DevTools检测绕过,这些光靠pref搞不定。

另一个是LibreWolf,一个自带合理隐私默认值的Firefox发行版。受众重叠,但分发模式不同,LibreWolf是打包好的浏览器,invisible_playwright是源码补丁加自动化wrapper。


聊到反检测浏览器,就不得不聊聊谁在用它,以及为什么这件事没那么简单。

反检测浏览器的主要用户画像很杂。做电商的用它开多店铺管理多账号,防止平台找到账号关联封店。做广告的用它做素材审核和竞品调研,模拟不同地区用户看不同广告。做数据采集的用它爬虫不被拦。做安全研究的用它做威胁情报收集。

但也有灰色的用途,刷单,薅羊毛,价格操纵、虚假流量,这些我不展开你也明白。

所以每次聊反检测技术,我都觉得这不是一个非黑即白的事。工具本身是中性的,就像Tor和VPN,你可以用它保护隐私,也可以用它做违法的事。invisible_playwright选择了MIT开源协议,任何人都能用,包括好人也包括坏人。

作者feder-cr在LinkedIn上展示的身份是正面的,IoT和AI方向的研究者,AIHawk帮人找工作也是正当用途。但这个工具一旦放出,流向确实不可控。

上个月还有一个跟这个赛道相关的新闻,一个叫TrapDoor的协调供应链攻击同时袭击了npm、PyPI和Crates.io,涉及34个恶意包,专门偷加密货币钱包和AI开发者的凭证。AI助手本身正在成为新型攻击面。你写代码靠AI补全,AI给你推荐的包可能是投毒的,你跑自动化脚本靠反检测浏览器,浏览器本身的安全你怎么验证?

invisible_playwright好歹是开源的,patch了什么代码你能看得见。那些闭源的商业反检测浏览器呢?你把代理凭证、Cookie、登录状态全部交给它们,它们在底层做了什么你根本不知道。


我再从一个更深的层面说说为什么这个项目让我觉得有意思。

过去几年,AI Agent这个词越来越热。从AutoGPT到AIHawk到各种Computer Use方案,核心诉求都是一样的,让AI帮你操作浏览器完成任务。

但所有Agent方案都卡在同一个点上,反爬系统不认你。

你写了一个完美的AI Agent,能自动填表、自动下单、自动采集数据,流程丝滑无比。然后你一跑,reCAPTCHA弹出来了,Cloudflare Challenge转圈了,FingerprintJS把你的会话标红了。

所以Agent要真正落地,模型已经够聪明了,问题是浏览器看起来不像人。这基础设施层面的缺失,不是算法层面能解决的。

invisible_playwright恰恰在解决这个基础设施问题。它是Playwright的drop-in replacement,你原来用Playwright写Agent自动化脚本,换两行import就够了。它是面向开发者设计的,不是面向「反检测浏览器用户」的,它是一个编程工具,不是一个浏览器产品。

这个定位差异很重要。Multilogin和GoLogin是面向运营人员的工具,你打开一个GUI界面,配置指纹参数,手动操作浏览器。invisible_playwright面向的是写代码的人,你要的是API,是程序化控制,是跟你的Agent框架无缝集成。

从这个角度看,AIHawk和invisible_playwright其实是同一条线上的两个节点,AIHawk解决「AI替你干活」,invisible_playwright解决「AI干活时不被发现是AI」。前一个解决能力问题,后一个解决合法性感知问题。

合在一起就是一个完整的AI Agent基础设施栈。


当然,这个项目也有它的局限。

只支持Firefox。如果你的目标网站有Firefox用户极少的情况(比如某些内部企业系统只在Chrome上测试过),你的会话反而会更显眼。不过从全球浏览器份额的趋势看,Firefox在技术社区的使用率不低,不算特别异常。

平台支持目前只有Windows和Linux的x86_64,macOS还没有,ARM架构也没有。对于在MacBook上开发的开发者来说,跑这个得切到Linux虚拟机或者CI环境。

也是因为太新了,两周的项目,0.1.8版本,很多边界情况还在修。近期一个fix就是跨域iframe回归,pref-only修复,issue #20。长期稳定性还需要时间验证。

另外它是基于Firefox 150.0.1打的补丁,Firefox每次大版本升级,补丁都可能需要重新适配。如果上游改动频繁,维护成本会很高。作者目前看来精力充沛,每天更新,但开源项目的持续性你懂的,取决于作者的个人状态。


我自己的判断是这个项目值得关注,但使用上要谨慎。

从技术角度看,C++层补丁 + 贝叶斯指纹采样 + 贝塞尔鼠标轨迹,这个组合确实是目前反检测领域高水平的开源实现。测试数据的说服力很强,reCAPTCHA 0.90和CreepJS 0 lies是实打实的结果,不是靠吹牛。

从生态位角度看,它填补了一个空白,面向开发者的、可编程的、开源的反检测浏览器。这在之前确实没有。Camoufox更接近一个独立浏览器产品,而invisible_playwright是一个自动化工具链的组件。

从风险角度看,开源意味着透明,也意味着你用的时候要自己评估场景。做合规的数据采集和安全研究没问题,灰色地带的用途你自己掂量。

反检测这个赛道永远是一个动态博弈的过程。今天0.90的得分,半年后检测系统升级可能就变成了0.60。invisible_playwright的优势在于它的掩饰深度够深,C++层的补丁让检测系统很难从JS层面找到破绽,但如果检测系统开始分析更底层的信号,比如TCP/IP指纹、TLS指纹、或者是浏览器二进制的哈希值,这场猫鼠游戏就会进入下一个回合。

说实话我觉得这个博弈不会终结。就像锁和撬锁工具永远在进化一样,检测系统和伪装系统的升级永远不会停。但至少现在,invisible_playwright给出了一套目前很优雅的解法,从根上解决了JS层补丁可被检测的根本缺陷。


好了,如果你在做AI Agent、爬虫、自动化测试,或者就是对反检测技术好奇,可以去看看这个项目。代码质量不错,README写得也很清楚,作者lit.linkedin.com/in/federico-elia-5199951b6上也有联系方式。

pip install git+https://github.com/feder-cr/invisible_playwright.git

两行代码替换就能试。

以上,既然看到这里了,如果觉得不错,随手点个赞,在看,转发三连吧,如果想立刻收到推送,也可以给我个星标⭐~
谢谢你的阅读,下次再见。

作者 AISet


来源

  1. [feder-cr/invisible_playwright — GitHub] — github.com/feder-cr/invisible_playwright,2026年5月13日首次发布
  2. [feder-cr (Federico Elia) — GitHub Profile] — github.com/feder-cr
  3. [feder-cr/invisible_firefox — GitHub] — github.com/feder-cr/invisible_firefox(C++补丁源码)
  4. [daijro/camoufox — GitHub] — github.com/daijro/camoufox(同类项目参考)
  5. [arkenfox/user.js — GitHub] — github.com/arkenfox/user.js(Firefox隐私配置参考)
  6. [LibreWolf — librewolf.net] — librewolf.net(Firefox隐私发行版)
  7. [Google reCAPTCHA v3 Score Reference] — developers.google.com/recaptcha/docs/v3
  8. [FingerprintJS Pro Smart Signals] — fingerprint.com/products/smart-signals
  9. [CreepJS — abrahamjuliot.github.io/creepjs] — 开源浏览器谎言检测工具
阅读全文