M

MCP无痕Chrome驱动

@dragons96/mcp-undetected-chromedriver
0 Stars 578 次浏览 dragons96 更新于 2026-08-23

一种MCP服务,能够在绕过反机器人检测机制的情况下自动控制Chrome浏览器,从而在具有复杂机器人防护的网站上实现网页抓取、测试和自动化。

MCP 服务配置

复制以下 JSON 到 OPClaw 或其他 MCP 客户端的配置文件中即可使用

{
  "mcpServers": {
    "mcp-undetected-chromedriver": {
      "args": [
        "-y",
        "@smithery/cli@latest",
        "run",
        "@dragons96/mcp-undetected-chromedriver",
        "--config",
        "{}"
      ],
      "command": "npx"
    }
  }
}

服务介绍

MCP-Undetected-Chromedriver

smithery badge

基于 undetected-chromedriver 构建的MCP服务,提供全面的接口以实现自动化控制Chrome浏览器并绕过反爬虫检测。

中文文档

安装

要通过Smithery自动为Claude Desktop安装MCP-Undetected-Chromedriver:

npx -y @smithery/cli install @dragons96/mcp-undetected-chromedriver --client claude

配置使用Undetected Chromedriver服务器

以下是使用Undetected-chromedriver服务器的Claude Desktop配置:

{
  "mcpServers": {
    "mcp-undetected-chromedriver": {
      "command": "npx",
      "args": [
        "-y",
        "@smithery/cli@latest",
        "run",
        "@dragons96/mcp-undetected-chromedriver",
        "--config",
        "{}"
      ]
    }
  }
}

系统要求

  • Python >= 3.11
  • Chrome浏览器

使用uv安装

# Create virtual environment
uv venv

# Activate virtual environment
# Windows
.venv\Scripts\activate
# Linux/MacOS
source .venv/bin/activate

# Install dependencies
uv pip install -e .

项目介绍

MCP-Undetected-Chromedriver 是一个MCP(多通道协议)服务,将undetected-chromedriver库的功能封装成一系列易于使用的API。该项目特别适用于需要在自动化测试、数据抓取或网页自动化脚本中绕过现代网站反爬虫检测机制的场景。

主要特性

  • 基于undetected-chromedriver,有效绕过网站反爬虫检测
  • 提供丰富的浏览器操作API接口
  • 支持截图、PDF导出等功能
  • 支持点击、表单填写、拖拽等复杂的页面交互操作
  • 无缝集成到MCP生态系统中的其他工具

待办事项列表

  • 优化浏览器驱动管理并处理驱动中断
  • 扩展API功能
  • 添加更全面的错误处理和日志记录
  • 改进文档,提供更多使用示例
  • 添加对浏览器配置文件和扩展的支持

使用方法

启动服务

mcp-server-undetected-chromedriver

可用API

该服务提供了以下主要API接口:

  • browser_navigate: 导航到指定URL
  • browser_screenshot: 截取当前页面的屏幕截图
  • browser_click: 点击页面元素
  • browser_iframe_click: 点击iframe内的元素
  • browser_fill: 在输入框中填充内容
  • browser_select: 在下拉选择框中选择选项
  • browser_hover: 将鼠标悬停在元素上
  • browser_evalute: 执行JavaScript代码
  • browser_close: 关闭浏览器
  • browser_get_visible_text: 获取页面上的可见文本
  • browser_get_visible_html: 获取页面上的可见HTML
  • browser_go_back: 在浏览器历史中后退
  • browser_go_forward: 在浏览器历史中前进
  • browser_drag: 拖动元素
  • browser_press_key: 模拟按键
  • browser_save_as_pdf: 将页面保存为PDF

代码示例

from mcp.client import Client

# Create MCP client
client = Client()
client.start("undetected-chromedriver-mcp-server")

# Navigate to website
response = client.call("browser_navigate", {"url": "https://example.com"})
print(response)

# Take a screenshot
response = client.call("browser_screenshot", {"name": "example"})
print(response)

# Get page text
response = client.call("browser_get_visible_text")
print(response.content[0].text)

# Close the browser
client.call("browser_close")

工作原理

此服务使用 undetected-chromedriver 库创建了一个专门的 Chrome 浏览器实例,该实例能有效规避常见的反爬虫检测机制。该服务通过 MCP 协议封装了这些功能,提供了一个易于使用的 API 接口,使自动化测试和网页抓取变得更加方便。

许可证

本项目采用 MIT 许可证 - 详情请参阅 LICENSE 文件。

贡献指南

欢迎在 GitHub Issues 页面提交错误报告和功能请求。如果您想贡献代码,请先创建一个问题来讨论您的想法。

常见问题解答

问:为什么选择 undetected-chromedriver 而不是标准的 selenium webdriver?

答:undetected-chromedriver 是专门为绕过现代网站(如 Cloudflare、Distil Networks 等)的反爬虫检测机制而设计的,在数据抓取和自动化测试场景中更加可靠。

问:服务如何处理浏览器实例?

答:服务维护一个全局的浏览器实例,当首次调用需要浏览器的 API 时会自动创建。可以使用 browser_close API 显式关闭浏览器。

问:如何处理 iframes 内的元素?

答:browser_iframe_click API 可以直接操作 iframes 内的元素,无需手动切换框架上下文。

相关 MCP 服务