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


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


上周有个读者在群里甩了张截图,reCAPTCHA v3的,0.90。

群里没人信。做爬虫的兄弟们被这玩意折磨太久了,0.90是什么概念你去问问Multilogin用户,他们花几百美元年费,跑出来0.3到0.5,偶尔0.7能高兴半天。0.90基本等于Google觉得你比大多数人更像人。

截图底下跟了个GitHub链接,feder-cr/invisible_playwright,5月13号刚开源的,两周不到一千颗star。

我点进去翻了翻README,头一个念头是这人是不是在哪儿搞了假截图。CreepJS 0 lies,FingerprintPro全线not detected,BrowserLeaks WebRTC没泄露。我自己拿真实Firefox跑了同样的检测,CreepJS还报了1 lie呢。一个打了补丁的浏览器比我手动操作还干净?


我得先把一件事交代清楚,不然后面的技术细节你看着没感觉。

浏览器指纹这件事,跟大多数人想的完全不是一回事,远不止换个UA那么简单。你去FingerprintJS的网站跑一下,它会给你生成一个visitor ID,这个ID基于几十个信号,Canvas渲染的像素差异,WebGL要不要走GPU渲染以及走哪块GPU,AudioContext处理音频的浮点精度,Fonts列表的组合哈希,Screen对象长宽加色深加缩放比,WebRTC要不要暴露真实IP,navigator里platform加上language加上hardwareConcurrency加上deviceMemory,一堆东西叠在一起,基本上每台机器都是唯一的。

商业反检测浏览器的做法是在Chromium上跑JS,把这些指纹挨个改掉。这个策略从根上就有问题。你用Object.defineProperty改了navigator.platform,原生函数的toString()还是返回原始代码字符串,人家一查就对不上。你改了configurable属性,原生的configurable是false,你改完变成true,又是痕迹。CreepJS就是这么抓你的,它有一整套谎言检测器,你改一个属性它记一个,全部汇总起来告诉你撒了几个谎。这个检测逻辑非常聪明,你越改暴露越多,跟撒谎一个道理。

还有个更底层的事。Chromium在爬虫圈里太常见了,2024年住宅代理流量里Chromium占比超过90%,检测系统看到Chromium形态的东西就直接加怀疑分。Chrome还有闭源组件,Widevine、Google Update、Safe Browsing端点,开源fork永远追不上Chrome的发布节奏,差几天版本号就对不上,检测系统专门锁这种差异。


好了,现在说invisible_playwright怎么做的。

它改的是Firefox的C++源码。

我再说一遍,跟写段JS注入到页面完全不同,跟运行时覆盖什么API也完全不同,是把Gecko渲染引擎的C++代码改了,改完重新编译。页面调用navigator.platform,走的是浏览器原生的代码路径,返回的值就是你配的那个值,中间没有任何JS层的拦截和伪造。

从页面的视角看,这个浏览器没有在撒谎,因为它真的是那个人。

所有指纹配置通过Firefox的preference系统驱动,改一个pref值,对应的指纹就变了。每个会话可以独立配置,互不关联。指纹数据从真实的Firefox遥测数据里贝叶斯采样,大约400个字段,GPU型号、音频设备、字体列表这些,全部从真实用户的数据分布里抽样。统计学上合理的组合,你不会抽到一块RTX 4090配着2GB内存和Windows XP,因为真实世界里这种配置从来没出现过。

鼠标轨迹用的是贝塞尔曲线,烘焙进浏览器底层的C++实现里。不是JS在页面上模拟mousemove事件那种东西。


我又去翻了翻作者。

feder-cr,真名Federico Elia,热那亚大学计算机科学本科。GitHub两千粉丝,不算大V,但他去年有个项目你大概率刷到过,AIHawk,自动投简历的AI Agent,29.8k stars,霸榜GitHub Trending好一阵子。

一个人写出两个爆款。一个替你找工作,一个替你藏身份。我看着这两个项目并排放在他的GitHub主页上,总觉得有点说不出来的滋味。技术两面性这种老生常谈我就不展开了,但这两个项目摆在一起确实比别人写十篇伦理论文更有冲击力。


我试着装了一下。

pip install git+https://github.com/feder-cr/invisible_playwright.git,然后跑一下invisible_playwright fetch下载一个大约100MB的补丁Firefox二进制文件,SHA256校验通过才能用。两步搞定,没什么坑。

代码迁移就改两行。from playwright.sync_api import sync_playwright换成from invisible_playwright import InvisiblePlaywright,with sync_playwright()变成with InvisiblePlaywright(),剩下的代码一行不动。100% Playwright兼容,同步异步都行。你要是原来就有一套Playwright脚本跑着,迁移成本约等于零。

代理支持SOCKS5和HTTP/HTTPS,DNS走代理通道不掉漏。这点很关键,很多反检测浏览器在DNS查询环节漏了真实IP,等于白费。SOCKS5认证是修改的nsProtocolProxyService.cpp,不走JS中间层,省了一个攻击面。


拿到的分数确实让人愣了一下,0.90,0 lies,全线绿。然后我做了一件事,拿Multilogin跑同样的检测套件,reCAPTCHA 0.4,CreepJS报了6个lies,FingerprintPro直接标红bot detected。一套一套的,跟在invisible_playwright面前的差距大到有点侮辱性。你要是花了年费买Multilogin来跑这个,心里大概会骂出来。


有人会问,Camoufox呢?

对,daijiro做的Camoufox也是开源反检测Firefox项目。invisible_playwright在README里写了,站在Camoufox肩膀上。但路径不同,Camoufox修补面广、自带指纹数据库,invisible_playwright更接近原版Firefox、用贝叶斯采样驱动。两个思路各有取舍。不过invisible_playwright有个Camoufox没有的优势,它100%兼容Playwright API,迁移成本为零,Camoufox用的是自己的启动接口。


我想跳出产品评测的视角聊点别的。

过去两年AI Agent公司扎堆做一件事,让模型操控浏览器替你完成任务。AutoGPT那么火就是这个逻辑,AIHawk那么火也是这个逻辑。但所有Agent方案终究撞上的墙都一样,反爬系统把你拦在外面了。

模型能力早就过了瓶颈期了,流程设计也一样,真正卡住的是浏览器看起来不像人在操作。它弹个reCAPTCHA出来,你的Agent就歇了。这个瓶颈不在算法层,在基础设施层。你模型再聪明,门都进不去,聪明有什么用。

invisible_playwright刚好补这个缺口。它是给开发者用的编程组件,不是给运营人员用的GUI工具。你把Agent脚本里的Playwright换成InvisiblePlaywright,两行代码,你的Agent突然就能过检测了。不需要买商业方案,不需要折腾虚拟机,不需要维护浏览器指纹库,改两个import就行。

AIHawk加invisible_playwright,一个解决AI替你干活,一个解决AI干活时不被发现是AI。前一个补能力,后一个补信任。合一块就是一套完整的Agent基础设施。


但局限得说。

Firefox的市场份额比Chromium小得多,有些网站的Firefox用户少到几乎没有,这时候你用Firefox反而比用Chromium更显眼。不过技术社区Firefox使用率还行,不算特别突兀。

macOS和ARM架构没支持。MacBook开发者得切虚拟机。项目才两周,0.1.8版本,跨域iframe回归这种边界bug上周刚修(issue #20)。基于Firefox 150.0.1打的补丁,每次上游大版本升级都可能要重新适配C++代码改动,这份维护活量不小。

反检测是猫鼠游戏,不存在终局。今天0.90,下次Cloudflare升级挑战机制说不定就掉了。C++层的补丁确实让JS层检测系统很难抓破绽,但如果检测转向TCP/IP指纹或TLS指纹或二进制哈希,就得再来一轮攻防。这东西没有一劳永逸的可能。


灰色的事也摆到台面上。

电商多店铺防关联封店,这个需求完全合规,很多正经商家就靠这个活。广告投放行业模拟不同地区用户看不同素材,日常操作,甲方乙方都这么干。安全团队做威胁情报收集,天天干的活,养家糊口的手艺。这些都是正当用途。

刷单,薅羊毛,价格操纵,虚假流量,也是真实在使用场景。工具本身中性,MIT开源,流向管不了。

还有个事值得细想。上个月TrapDoor供应链攻击,34个恶意包同时出现在npm、PyPI和Crates.io,专门偷加密钱包和AI开发者凭证。你把自动化脚本跑在闭源商业反检测浏览器里,代理凭证、Cookie、登录态全部灌进去了,底层代码你一行都看不到。出了事你连排查入口都没有。你的凭证可能早就被发到了某个Telegram频道上,你还在纳闷为什么账号被盗。

invisible_playwright至少开源,改了哪些C++代码你一条一条能对上。


我觉得这项目值得持续关注。技术上是C++层补丁加贝叶斯采样加贝塞尔鼠标的组合,目前开源领域还没见到比这更深的掩饰深度。生态位上填补了可编程反检测工具的空白,之前确实没有这种面向开发者的方案。用途上自己评估边界,合规场景放心用,灰色场景自己掂量。

开源反检测这件事本身就有意义。商业闭源产品你只能信它说没后门,但代码一行看不到,代理凭证Cookie登录态全灌进去了,TrapDoor事件证明供应链攻击是真实威胁。invisible_playwright至少让你能审计每一行改动,出问题有排查入口。

如果你在做AI Agent、自动化测试或者数据采集,值得一试

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

两行代码,试试看你能不能也跑出0.90。

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

作者 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] — 开源浏览器谎言检测工具
阅读全文