隐身浏览器MCP服务器

一个使用Patchright进行隐身浏览、Xvfb防止无头检测、PyAutoGUI绕过验证码的网页抓取服务器,提供网页搜索集成和智能内容提取功能。

  • by VishnuSuresh2000
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 VishnuSuresh2000/brave-scraper-mcp

使用说明

隐形浏览器MCP服务器

一个使用MCP(模型上下文协议)的隐形网络抓取服务器 Patchright 对于未被检测到的浏览, Xvfb 用于反无头检测,以及 PyAutoGUI 用于绕过验证码。提供与智能内容提取的web搜索集成。

⚠️ 无需API密钥 -此服务器使用无头浏览器(Patchright)直接抓取网络搜索。没有API密钥,没有速率限制,不需要注册。

链接

  • GitHub存储库: https://github.com/VishnuSuresh2000/stealth-browser-mcp
  • 问题: https://github.com/VishnuSuresh2000/stealth-browser-mcp/issues
  • 技能文档:参见 skills/stealth-browser-mcp/ 有关代理集成的详细信息。
  • 连接其他MCP客户端: skills/stealth-browser-mcp/references/mcp-clients.md

特性

  • 🕵️ 隐身模式:使用Patchright(未检测到的Playwright分支)+Xvfb来避免机器人检测
  • 🔓 验证码解决:自动检测并解决Cloudflare旋转栅门、hCaptcha和reCAPTCHA问题
  • 📄 整页剪贴:抓取任何网页并转换为干净的Markdown
  • 🔍 网络搜索:在没有API密钥的情况下搜索web
  • 🤖 AI就绪提取:针对LLM/RAG优化的内容——干净、结构化、无噪音
  • 📋 来自搜索的AI摘要: stealth_search 自动提取搜索引擎自己的人工智能生成的摘要(如果可用)和引用的来源

服务器URL

http://stealth-browser-mcp:8080/mcp

健康检查: http://stealth-browser-mcp:8080/health

可用工具

工具 说明
stealth_search 搜索网页(不需要API密钥)。 返回AI摘要 如果可用,加上引用的来源
stealth_extract 从URL提取干净的内容
stealth_scrape 将整页作为Markdown进行剪贴
browser_navigate 导航到URL
browser_back 返回历史记录
browser_screenshot 捕获页面/元素屏幕截图
browser_click 单击元素
browser_fill 填写输入字段
browser_hover 将鼠标悬停在元素上
browser_evaluate 执行JavaScript
browser_solve_captcha 自动解决验证码挑战

快速开始

先决条件

  • Docker和Docker Compose
  • (可选) 麦克波特 用于MCP集成

1.克隆和构建

git clone https://github.com/VishnuSuresh2000/stealth-browser-mcp.git
cd stealth-browser-mcp
docker compose up -d --build

2.验证部署

# Check container health
docker ps

# Test health endpoint
curl http://localhost:8080/health
# Expected: {"status": "healthy", "server": "stealth-browser-mcp"}

3.配置mcporter(可选)

# Add to mcporter config
mcporter config add stealth-browser --url http://localhost:8080/mcp

# List available tools
mcporter list stealth-browser

与OpenClaw代理一起使用

此服务器提供MCP工具,可以作为 技能 在OpenClaw代理中。技能扩展代理能力;您可以通过本地副本或mcporter安装此技能。

安装方法

本地安装(手动)

将技能文件夹复制到代理的工作区或全局技能目录:

# Workspace-specific (preferred)
cp -r skills/stealth-browser-mcp ~/.openclaw/workspace/your-agent/skills/

# Global (available to all agents)
cp -r skills/stealth-browser-mcp ~/.openclaw/skills/

MCP服务器导入(mcporter)

将正在运行的服务器添加为MCP源:

mcporter config add stealth-browser --url http://localhost:8080/mcp

然后导入到OpenClaw中:

mcporter config import opencode --copy

验证

检查技能是否合格,工具是否可用:

openclaw skills list --eligible
openclaw skills info stealth-browser-mcp

文档

使用示例

通过mcporter命令行界面

# Search
mcporter call stealth-browser.stealth_search query="python async programming" count:5

# Extract content from URL
mcporter call stealth-browser.stealth_extract url="https://example.com/article"

# Navigate and screenshot
mcporter call stealth-browser.browser_navigate url="https://example.com"
mcporter call stealth-browser.browser_screenshot name="homepage"

通过MCP客户端(代理集成)

服务器通过MCP协议在以下位置公开工具 /mcp 终点。将您的MCP客户端连接到:

http://localhost:8080/mcp

配置

环境变量

变量 默认值 描述
DISPLAY :99 Xvfb显示器
STEALTH_MODE true 启用隐形功能
CAPTCHA_AUTO_SOLVE true 自动解决验证码
PORT 8080 服务器端口
MAX_CONTENT_LENGTH 5000 要返回的最大内容字符数
REQUEST_TIMEOUT 30 HTTP超时秒数

Docker Compose

services:
  stealth-browser-mcp:
    build: .
    ports:
      - "8080:8080"
    environment:
      - STEALTH_MODE=true
      - CAPTCHA_AUTO_SOLVE=true
    volumes:
      - browser_data:/home/scraper/browser_data
    cap_add:
      - SYS_ADMIN
    security_opt:
      - seccomp=unconfined

发展

本地设置

# Install uv (if not already installed)
curl -LsSf https://astral.sh/uv/install.sh | sh

# Create virtual environment and install dependencies
uv venv
source .venv/bin/activate
uv sync

# Install Patchright Chrome
patchright install chrome

# Run server (stdio mode)
python -m src.server

# Run server (HTTP mode)
python -m src.server --transport streamable-http --port 8080

运行测试

# Activate venv
source .venv/bin/activate

# Run all tests
pytest tests/ -v

# Run with coverage
pytest tests/ --cov=src

建筑

stealth-browser-mcp/
├── src/
│ ├── server.py # MCP server entry point
│ ├── browser/
│ │ ├── manager.py # Browser lifecycle
│ │ ├── stealth.py # Xvfb + anti-detection
│ │ └── captcha.py # CAPTCHA solving
│ └── tools/
│ ├── navigation.py # browser_navigate, browser_back
│ ├── interaction.py # browser_click, browser_fill
│ ├── extraction.py # browser_screenshot, browser_evaluate
│ └── stealth_search.py # stealth_search, stealth_extract
├── templates/              # CAPTCHA element templates
├── tests/                  # Unit and integration tests
├── Dockerfile
├── docker-compose.yml
├── entrypoint.sh
└── pyproject.toml

防检测功能

功能 实现
无头检测 Xvfb+头戴式Chrome
Runtime.enable泄漏 Patchright隔离的上下文
navigator.webdriver Patchright删除标志
画布指纹 带Xvfb的真实画布
行为检测 通过PyAutoGUI实现类人鼠标

验证码支持

类型 检测 解决方法
Cloudflare旋转栅门 iframe选择器 PyAutoGUI点击
hCaptcha .h-captcha元素 PyAutoGUI+OCR
reCAPTCHA v2 .g-reCAPTCHA元素 点击+音频回退

安全说明

  • 容器以非root用户身份运行 scraper
  • 图像中未存储API密钥
  • 浏览器数据保存在Docker卷中
  • 建议:在生产中使用网络隔离

故障排除

容器无法启动

# Check logs
docker logs stealth-browser-mcp

# Common issues:
# - Xvfb lock file: Remove /tmp/.X99-lock
# - Port in use: Change PORT in docker-compose.yml

MCP连接失败

# Verify endpoint
curl http://localhost:8080/health

# Check mcporter config
mcporter list stealth-browser

机器人检测

  • 确保 STEALTH_MODE=true
  • 检查Xvfb是否正在运行: docker exec stealth-browser-mcp ps aux | grep Xvfb
  • 测试地点https://bot.sannysoft.com/

许可证

MIT许可证-有关详细信息,请参阅许可证文件。

贡献

  1. 分叉存储库
  2. 创建要素分支
  3. 进行更改
  4. 运行测试: pytest tests/
  5. 提交拉取请求

致谢