开源AI网页Agent dots完全指南:它自带反检测浏览器,为什么网站拦不住它?
【免费下载链接】dotsOpen-source dots for the web: an AI agent with its own browser, one that does not get blocked.项目地址: https://gitcode.com/gh_mirrors/dots140/dots
dots是一个开源 AI 网页 Agent(浏览器代理):它自带一个反检测浏览器,把网页任务交给它,页面照常打开、验证不触发、点击像真人一样落点,网站几乎拦不住它。这篇完全指南会用 3 条命令带你跑起 dots,并讲透它的反检测原理。
dots 是什么:模型 + 浏览器,缺一不可 🧩
"Every AI agent is a model and a browser. You can swap the model with one flag. The browser is what the website sees." —— README.md
翻译过来就一句话:
- 模型可以随时换(
--model一个参数),dots 支持 OpenRouter 上的任意模型 - 浏览器才是网站真正"看见"的东西:指纹、输入事件、连接来源,全部发生在浏览器层
所以 dots 把全部工程重心押在浏览器上——这正是它"拦不住"的答案所在。
为什么普通 AI 网页 Agent 会被网站拦下?
网页代理翻车时,多半不是模型的锅。页面没加载、弹出人机验证、登录过期、点击没落上……这些事全部发生在模型思考之前。普通自动化浏览器有几类天然"露馅点":
| 露馅点 | 网站看到什么 |
|---|---|
WebDriver自动化标志位 | 脚本一查即穿帮 |
| 用 JS"画"出来的假指纹 | 页面自己检查就能发现 |
| 瞬间传送式的点击 | 不符合真人操作轨迹 |
| 时区 / 语言 / IP 互相矛盾 | 风控系统直接标记 |
dots 的反检测浏览器逐条解决它们 👇
dots 反检测浏览器原理:网站为什么拦不住它
- 真实 Firefox 引擎,C++ 层打补丁:指纹在引擎内部决定,而不是用 JS 覆盖,页面无法检查穿帮
- 一个种子一种身份:屏幕、字体、GPU、时区、语言彼此自洽;
--seed让每次运行都是"同一个人" - 页面找不到任何自动化痕迹:无 WebDriver 标志、无 DevTools 协议、页面无自动化全局变量
- 真人的手:指针会移动到点击目标、按键逐个落下,页面收到的每个事件都是可信事件
- 会记忆的浏览器:
--profile-dir让登录态和 Cookie 跨次运行保留 - 连接来源即身份:加
--proxy后,时区和语言跟随代理出口,不再自相矛盾
最快上手:3 条命令运行 dots
第 1 步:安装 uv(Python 包管理器)
先在你的机器上装好 uv 包管理器(Windows 用 PowerShell 脚本、Linux 用官方安装脚本,按其文档走即可)。
第 2 步:一条命令启动 dots
uvx --from git+https://gitcode.com/gh_mirrors/dots140/dots dots --openrouter-key sk-or-...Windows 与 Linux 用同一条命令。把--openrouter-key换成你的 OpenRouter Key;不想暴露在命令行上,也可以写在命令旁的.env文件里,dots 会自动读取——这正是它经由上游命令组启动的原因,见 src/dots/cli.py 的注释。
第 3 步:打开本地控制台
浏览器访问http://127.0.0.1:8765:左边是对话窗,右边是浏览器,实时看着 Agent 操作网页。
给 dots 派任务:一个"查机票"提示词示例
README.md 里给了一个官方任务模板,直接抄作业:
Go to
<粘贴目标网址>. 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. If a date has no availability, say so. Do not guess a number.
意思是:去这个网站查米兰→里斯本的单程经济舱、1 名成人;逐天核对下月 12–16 日的最低票价,没票就直说,不许编数字。这类"多步骤 + 要准确"的网页任务正是 dots 的主场。
进阶:把同一个反检测浏览器接进你的助手
如果你已在用 Claude Code、Codex、Gemini CLI 或任意 MCP 客户端,可以让它们共享 dots 背后的同一个浏览器:上游项目invisible_playwright_mcp把这个反检测浏览器以 MCP Server 形式提供,dots就是它的界面,运行dots --help会列出全部选项。
源码速览:dots 仓库里有什么
dots 仓库本体刻意保持极薄——它只是固定版本invisible-playwright-mcp==0.70.2的接口,产品能力全部来自上游(见 pyproject.toml 中的说明注释):
- src/dots/cli.py:入口,把
dots转发给上游命令组的ui子命令 - src/dots/main.py:支持
python -m dots启动 - tests/test_entry.py:集成测试保证
--help必须列出--openrouter-key、--model、--proxy、--seed、--profile-dir;且没有 Key 时必须在启动任何浏览器之前拒绝运行 - pyproject.toml:关键词一览——
browser-agent、web-agent、anti-detect、firefox、openrouter
dots 常见问题 FAQ
Q:没有 API Key 能跑吗?不能。没有 OpenRouter Key 时,dots 会在启动任何浏览器之前直接拒绝运行,不白耗资源(见 tests/test_entry.py)。
Q:想让它每次都"是同一个人"?用--seed固定种子:屏幕、字体、GPU、时区、语言整套身份保持一致且可复现。
Q:登录态会丢吗?用--profile-dir指定配置目录,Cookie 和登录态跨次运行保留。
Q:模型必须用某一家的吗?不是。OpenRouter 上的任意模型都可以,--model随时切换。
一句话总结:dots = 可随时更换的 AI 模型 + 一个网站看不穿的反检测浏览器。想让它帮你查票、比价、填表,3 条命令就能开工 🚀
【免费下载链接】dotsOpen-source dots for the web: an AI agent with its own browser, one that does not get blocked.项目地址: https://gitcode.com/gh_mirrors/dots140/dots
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考