dots:让 AI Agent 拥有自己的反检测浏览器的开源工具
dots 是一个开源 AI Web Agent 项目,2026 年 10 月 1 日刚刚上榜 GitHub Trending,2 天冲到 2.4k stars。它解决了一个长期被忽视的问题:AI agent 浏览器自动化失败的原因,90% 不在模型,而在于浏览器指纹、WebDriver 暴露、登录状态丢失等底层环境因素。dots 的解法是让 AI agent 拥有自己的 stealth patched-Firefox 浏览器——指纹由 C++ 层引擎决定而非 JS 注入,无 WebDriver 标志,一次性设置后开箱即用。
功能与设计原则
dots 的核心定位是”AI Agent + 自有浏览器”一体化,而非让 AI 操作已有的 Chrome/Firefox 实例。它遵循三个设计原则:
- 反检测优先:指纹在引擎层(C++ patch)生成,页面无法通过 JavaScript 检测到自动化框架
- 真实交互模拟:指针移动到目标元素再点击,逐字输入按键——每个事件都是”可信任”的浏览器原生事件
- 持久化会话:通过
--profile-dir保存登录状态和 Cookie,重启后不丢上下文
认可度
- GitHub stars:约 2,400+(截至 2026-10-02,Trending 榜单实况,2 天快速上涨)
- 2026-10-01 入选 GitHub Trending 日榜,属新上榜项目
- 10 月 1 日当天涨星 +572(ghtrends.dev 数据)
- 属近 7 天内创建的新生项目(Newborn Stars 类别),处于极早期爆发阶段
链接
GitHub:https://github.com/feder-cr/dots
原作者
- 作者:feder-cr(GitHub 个人账号)
- 同项目还维护了
AIHawk(反检测浏览器 MCP server)、invisible_playwright_mcp(MCP 协议的 stealth browser server)等一系列浏览器自动化工具链,在 Agent 开发者圈子里已有一定知名度
介绍
dots 的 README 开篇一句话道出核心洞察:”Every AI agent is a model and a browser.”——但几乎所有项目都在卷模型,极少有人认真对待浏览器这半边。
传统浏览器自动化(无论是 Playwright/Puppeteer + AI,还是市面上的 Web Agent 产品)面临的共同问题是:页面会主动检测自动化框架。WebDriver 标志、DevTools 协议、automation globals 等指纹会在页面加载时就被暴露,导致登录失败、挑战弹窗、页面拒绝等连锁失败。dots 的答案是换掉整个浏览器层:用一个经 C++ patch 过的 Firefox 引擎,浏览器指纹从内核生成,不依赖任何 JS 注入伪装手段。
使用体验上,用户只需要一条命令启动 Agent + 浏览器:Linux 下 uvx --from git+https://github.com/feder-cr/dots dots --openrouter-key sk-or-...,然后打开 http://127.0.0.1:8765,左侧对话、右侧实时浏览器,AI 在浏览器里自主操作,完成任务后退出。All in one,不需要额外配置浏览器或安装驱动。
特点
- Stealth Firefox 引擎:指纹由 C++ patch 决定,页面无法检测到自动化框架
- 无 WebDriver / DevTools 暴露:不依赖任何可被页面识别出的自动化协议
- 可信事件流:指针移动 + 逐字按键,每个 DOM 事件都是原生触发
- 身份一致性:
--seed N保证同一随机种子每次生成相同指纹(屏幕、字体、GPU、时区、语言一致),适合需要稳定身份的测试场景 - 会话持久化:
--profile-dir保存登录状态,跨重启保留 Cookie 和认证信息 - 代理感知:
--proxy参数让出口 IP、时区、语言随代理自动切换 - 模型无关:支持 OpenRouter 上的任意模型(
--model参数指定),默认 z-ai/glm-5.3-flash - MCP 协议集成:同作者的
invisible_playwright_mcp将该浏览器暴露为 MCP server,Claude Code、Codex、 Gemini CLI 可直接接入使用
使用方法
Linux 启动命令:
curl -LsSf https://astral.sh/uv/install.sh | sh
source $HOME/.local/bin/env
uvx --from git+https://github.com/feder-cr/dots dots --openrouter-key sk-or-...
然后访问 http://127.0.0.1:8765 开始使用。
Windows PowerShell:
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
$env:Path = "$env:USERPROFILE.localbin;$env:Path"
uvx --from git+https://github.com/feder-cr/dots dots --openrouter-key sk-or-...
Claude Code / Codex / Gemini CLI 接入(通过 MCP):
# 安装 invisible_playwright_mcp MCP server
# 然后在对应 AI 客户端加载使用
常用参数:
– --openrouter-key:OpenRouter API key(支持环境变量 OPENROUTER_API_KEY 或 .env 文件)
– --model:指定模型,默认 z-ai/glm-5.3-flash
– --seed:随机种子,保证指纹一致性
– --profile-dir:会话目录,保存 Cookie 和登录状态
– --proxy:代理地址(HTTP/SOCKS5),出口 IP、时区、语言自动跟随
– --headed:显示浏览器窗口(默认无头模式)
使用场景与人群
适用场景:
– 需要 AI 在真实浏览器中完成多步操作的自动化任务(比价、填表、爬取登录后的内容)
– 测试有反爬/反自动化检测的目标网站
– 需要稳定身份(同一浏览器指纹)的网络测试
– 跨地区代理场景(切换出口 IP 时同步时区、语言)
目标用户:
– AI 工程师和 Agent 开发者(尤其是搭建 web automation 流程的团队)
– 需要绕过反爬/检测进行数据采集的开发者
– 在 Claude Code / Codex 等 AI 编程工具中使用浏览器自动化的用户
输入与输出案例
案例 1:机票比价
– Input:在页面对话框输入”Go to Google Flights. One way, Milan to Lisbon, economy, one adult. Check every date from the 12th to the 16th of next month and read the cheapest fare for each day.”
– Output:AI 自主打开 Firefox,导航到 Google Flights,输入出发地/目的地,依次点击日期选择器检查每一天的最低票价,返回一张完整的价格表格。全程无需人工干预,浏览器在 AI 控制下逐页操作。
案例 2:需要登录的内容抓取
– Input:先执行 dots --profile-dir ./my-profile,手动在浏览器中登录目标网站;之后每次启动加同样参数,AI 自动继承登录状态,直接进入需要认证的页面执行任务。
– Output:AI 在已登录状态下访问目标站点,完成数据提取、填表等操作,Cookie 和会话不丢失。
dots 的出现填补了 AI Agent 浏览器层的一个关键空白——不是更好地上传网页给模型看,而是让模型真正拥有一个”不会一进去就被认出来”的浏览器。如果你在用 AI 编程助手做 Web 自动化时频繁遇到检测/失败,这个项目值得一试。
GitHub: https://github.com/feder-cr/dots
评论区
登录后可评论。