浏览器自动化控制服务

MCP-Undetected-Chromedriver是一个基于undetected-chromedriver的MCP服务,提供绕过反机器人检测的Chrome浏览器自动化控制接口,适用于自动化测试、数据抓取和网页自动化脚本。

  • by dragons96
  • Python
  • 本地部署
  • 11 星标
  • 更新于
在 GitHub 查看 dragons96/mcp-undetected-chromedriver

使用说明

MCP未检测到Chromedriver

基于未检测到的chromedriver构建的MCP服务,提供了一个全面的界面,用于自动化Chrome浏览器控制,同时绕过反机器人检测。

中文文档

安装

通过以下方式自动安装适用于Claude Desktop的MCP Undetected Chromedriver 史密瑟里:

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

使用未检测到的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浏览器

紫外线安装

# 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(多通道协议)服务,它将未检测到的Chromedriver库的功能打包成一系列易于使用的API。该项目特别适合在自动化测试、数据抓取或web自动化脚本中需要绕过现代网站反机器人检测机制的场景。

主要特点

  • 基于未检测到的chromedriver,有效绕过网站反bot检测
  • 提供丰富的浏览器操作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")

运作原理

该服务使用未被检测到的chromedriver库创建一个专门的Chrome浏览器实例,有效地规避了常见的反机器人检测机制。该服务通过MCP协议封装了这些功能,提供了一个易于使用的API接口,使自动测试和web抓取更加方便。

许可证

此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。

贡献指南

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

常见问题解答

Q: 为什么选择未检测到的chromedriver而不是标准的selenium Web驱动程序?

A: 未检测到的chromedriver是专门为绕过Cloudflare、Distil Networks等现代网站的反机器人检测机制而设计的,使其在数据抓取和自动化测试场景中更加可靠。

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

A: 该服务维护一个全局浏览器实例,该实例是在首次调用需要浏览器的API时自动创建的。可以使用以下命令显式关闭浏览器 browser_close API

Q: 如何处理iframe中的元素?

A: The browser_iframe_click API可以直接对iframe中的元素进行操作,而无需手动切换帧上下文。