dots:给 AI Agent 配一个不会被拦的浏览器,模型随便换

让 AI 去操作网页,难点往往不在模型身上,而在浏览器:页面没加载出来、跳出人机验证、登录态过期、点击没落在该点的地方——这些事都发生在模型开始思考之前。开源项目 dots 就是冲着这一点来的:它不是又一个”提示词套壳”,而是给 Agent 配了一个真正属于它自己、且不容易被网站识别的浏览器。仓库上线没几天就拿到 2400+ Star,是近期相当亮眼的一个 Python 项目。

为什么浏览器才是关键

按作者在 README 里的说法,一个网页 Agent 失败时,很少是因为模型不够聪明。页面根本没加载、突然弹出一个挑战页、登录悄悄失效、点击事件没被页面接受——这些全都发生在浏览器里,在模型能介入之前。

所以 dots 把重心压在了浏览器上。它的一句话总结是:”每个 AI Agent 都由一个模型和一个浏览器组成。模型用一个参数就能换,浏览器才是网站真正看到的东西。”换句话说,模型可以随便挑,但”网站眼里的你是谁”由浏览器决定,而这恰恰是大多数方案最薄弱的一环。

dots 到底怎么做的

根据仓库 README,dots 的隐身能力来自一个经过 C++ 层补丁的 Firefox 引擎,主要特点包括:

  • 真正的 Firefox 内核,C++ 层补丁。指纹是在引擎内部决定的,而不是靠一层 JavaScript 去”涂抹”——那种做法页面本身就能检测出来。
  • 一个 seed 对应一个身份。屏幕、字体、GPU、时区、语言彼此自洽;带上 --seed 每次运行都能回到同一个人。
  • 页面找不到破绽。没有 WebDriver 标志位、没有 DevTools 协议、页面里也不留自动化全局变量。
  • 像真人一样操作。指针会”走”到要点的位置,按键一个一个按下,页面收到的每个事件都是可信事件。
  • 会记住东西的浏览器。--profile-dir 能把登录态和 Cookie 从一次运行保留到下一次。
  • 从哪儿连就是谁。配合 --proxy,时区和语言会跟着出口一起变。

跑起来只要三步

dots 用 uvx 直接运行,不需要先克隆仓库。README 给出的流程大致如下:

  1. 安装 uv 运行器(Windows 用一条 PowerShell 命令,Linux/macOS 用安装脚本)。
  2. 执行 uvx --from git+https://github.com/feder-cr/dots dots --openrouter-key sk-or-...,把密钥换成你自己的 OpenRouter Key。
  3. 打开 http://127.0.0.1:8765:左边是对话,右边是实时浏览器画面。

它要求 Python 3.11 及以上,模型可以是 OpenRouter 上的任意模型,靠 --model 切换。

它适合问什么样的问题

README 里那个例子很能说明问题:让 Agent 打开某个订票网址,查询下个月 12 到 16 号之间每一天的最低价航班,逐个读出价格,没有舱位就如实说”没有”,并且不许猜数字。这类任务的特点是:需要真实点击、真实翻页、真实读取页面数字,而且中途很容易被反爬拦住——正是 dots 想解决的场景。

项目结构与一个有意思的设计

dots 本体非常小。翻开源码会发现,它其实只是 invisible_playwright_mcp 这套浏览器服务的一个”外壳”:dots 就是它的 ui 子命令。作者在 pyproject.toml 里把依赖精确锁到 invisible-playwright-mcp==0.70.2,并在注释中直言:”整个产品就是这一行”——循环、浏览器、页面都来自那个包,这里不重新实现任何东西。之所以用精确版本而不是最低版本,是因为命令行调用了那个包的命令组,而命令组并非稳定公开 API,新版本必须靠测试主动接纳,而不是被解析器自动升级。

更有意思的是它的测试与 CI 策略:仓库里只有四个测试,CI 却专门写了一段逻辑,一旦跑过的测试少于 4 个就直接失败——因为 pytest 的退出码无法区分”全部通过”和”一个都没选中”。它还给 README 加了一道”claims”关卡,确保 README 不会承诺自己支撑不了的东西。对这种小项目来说,这种较真程度相当罕见。

它也能进你自己的助手

如果你用的是 Claude Code、Codex、Gemini CLI 或任何其他 MCP 客户端,同一个浏览器还能作为 MCP 服务器复用:invisible_playwright_mcp 把它以服务形式提供给这些工具,dots 则是它的交互界面,dots --help 会列全部选项。项目采用 MIT 许可,作者也在 README 里注明与 OpenAI 无关联。想深入了解可以看 GitHub 仓库。

© 版权声明
THE END
喜欢就支持一下吧
点赞11 分享