返回市场
未检测到的chromedriver

未检测到的chromedriver

作者:dragons966 星标更新:2025-04-21

项目介绍

MCP-Undetected-Chromedriver

smithery 徽章

基于 undetected-chromedriver 构建的 MCP 服务,提供全面的接口以自动化控制 Chrome 浏览器,同时绕过反机器人检测。

中文文档

安装

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

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

配置使用 Undetected Chromedriver 服务

这是在 Claude Desktop 中配置使用 Undetected-chromedriver 服务的方法:

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

要求

  • Python >= 3.11
  • Chrome 浏览器

使用 uv 安装

# 创建虚拟环境
uv venv

# 激活虚拟环境
# Windows
.venv\Scripts\activate
# Linux/MacOS
source .venv/bin/activate

# 安装依赖
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

# 创建 MCP 客户端
client = Client()
client.start("undetected-chromedriver-mcp-server")

# 导航到网站
response = client.call("browser_navigate", {"url": "https://example.com"})
print(response)

# 截图
response = client.call("browser_screenshot", {"name": "example"})
print(response)

# 获取页面文本
response = client.call("browser_get_visible_text")
print(response.content[0].text)

# 关闭浏览器
client.call("browser_close")

工作原理

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

许可证

该项目采用 MIT 许可证 - 详情见 LICENSE 文件。

贡献指南

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

常见问题

Q: 为什么选择 undetected-chromedriver 而不是标准的 Selenium WebDriver?

A: undetected-chromedriver 特别设计用于绕过现代网站如 Cloudflare 和 Distil Networks 的反机器人检测机制,使其在数据抓取和自动化测试场景中更为可靠。

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

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

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

A: browser_iframe_click API 可以直接操作 iframe 内的元素,无需手动切换帧上下文。