Chrome MCP隐形
通过Chrome DevTools协议实现隐形浏览器自动化的MCP服务器。连接到具有类人交互模式(贝塞尔鼠标曲线、高斯打字延迟、滚动抖动)的真实Chrome实例,以避免机器人检测。
为什么
标准浏览器自动化工具(Playwright、Puppeteer、Selenium)被现代反机器人系统轻松检测到。站点指纹鼠标移动(直线、即时传送)、键入模式(均匀延迟)和JavaScript属性(navigator.webdriver,缺少插件)以阻止自动访问。
Chrome MCP Stealth通过在Playwright与真实Chrome实例的CDP连接之上分层类似人类的行为来解决这个问题——不是一个无头浏览器,也不是一个新的配置文件,而是一个真实的浏览器,其中包含Cookie、扩展程序和历史记录。
特性
- 隐身模式:贝塞尔鼠标移动、高斯击键延迟、滚动抖动、反检测JS补丁
- 快速模式:无延迟的即时操作--适用于不受保护的域
- 安全:针对快速注入、数据泄露和凭据泄漏的4层防御
- 单个文件:整个服务器是一个
index.js文件(约630行)
隐形是如何工作的
鼠标移动 遵循具有随机控制点的三次贝塞尔曲线,产生自然弧而不是直线。每次移动都使用12-50个插值步骤,便于输入输出时间和偶尔的过冲校正。
打字 使用高斯分布的键间延迟(平均约75ms),标点符号后有额外的停顿,每约10个字符有周期性的“思考停顿”,模仿人类打字节奏。
滚动 被分解为具有稳定延迟的抖动多步增量,避免了标志着自动化的瞬间跳跃。
防检测补丁 移除 navigator.webdriver,干净的剧作家/硒工艺品 window,注入真实感 chrome.runtime 以及插件存根。
看 建筑.md 了解完整的实施细节。
安全模型
- 快速注射扫描仪 --20多种正则表达式模式检测页面内容中的指令覆盖尝试、社会工程和数据泄露命令
- 内容净化 --在返回页面文本之前,隐藏/不可见元素被剥离,防止通过零大小或屏幕外元素注入
- 内容聚光灯 --所有页面内容都被包裹在 `` 带安全脚的标签
- 域控制 --云元数据端点完全被阻止;银行/电子邮件域触发警告;仅隐形域执行隐形模式
此外,所有输出都会扫描凭证模式(API密钥、令牌、JWT),并在返回之前进行编辑。
工具(11)
| 工具 | 目的 |
|---|---|
chrome_set_mode | 在隐形/快速模式之间切换 |
chrome_navigate | 导航到URL |
chrome_snapshot | 获得经过消毒的可访问性树 |
chrome_screenshot | 拍摄PNG截图 |
chrome_click | 点击元素(隐藏的贝塞尔鼠标) |
chrome_type | 键入文本(隐形中的高斯延迟) |
chrome_tabs | 列出/切换/创建/关闭选项卡 |
chrome_evaluate | 在页面上下文中运行JS(输出已编辑) |
chrome_wait | 等待选择器或超时 |
chrome_scroll | 向上/向下滚动(悄悄地抖动) |
chrome_page_info | 获取当前URL、标题、域风险 |
设置
- 使用CDP启动Chrome浏览器:
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome \
--remote-debugging-port=9222 \
--user-data-dir=~/.chrome-debug-profile- 安装并运行:
npm install
npm start- 在MCP配置中注册:
{
"chrome-stealth": {
"command": "node",
"args": ["path/to/chrome-mcp/index.js"],
"env": { "CDP_ENDPOINT": "http://127.0.0.1:9222" }
}
}仅隐藏域名
领英(linkedin.com, www.linkedin.com)强制隐形模式——快速模式被阻止。这在5层强制执行:导航、模式切换、每次交互、帖子重定向和标签切换。
依赖项
@modelcontextprotocol/sdk--MCP协议实现playwright-core--Chrome DevTools协议连接
许可证
麻省理工学院
