Puppeteer Real Browser MCP Server 是一个模型上下文协议(MCP)服务器,借助 puppeteer-real-browser 为 AI 助手提供强大且不易被检测的浏览器自动化功能。
这是一个 MCP(模型上下文协议)服务器,它能让像 Claude 这样的 AI 助手控制真实的网络浏览器。可以把它想象成给 Claude 装上了“手”,使其能够点击按钮、填写表单、截图等,同时还能避免被机器人检测机制识别。
node --version 验证安装情况使用 npx 命令将自动下载并运行最新版本,无需手动安装。
Windows 系统:
%APPDATA%\Claude\claude_desktop_config.json 文件{
"mcpServers": {
"puppeteer-real-browser": {
"command": "npx",
"args": ["puppeteer-real-browser-mcp-server@latest"]
}
}
}
Mac 系统:
Cmd + Shift + G~/Library/Application Support/Claude/claude_desktop_config.json 文件Linux 系统:
~/.config/Claude/claude_desktop_config.json 文件完全关闭并重新打开 Claude Desktop。
在 Claude Desktop 中,尝试输入:
"初始化浏览器并导航到 google.com,然后截取屏幕截图"
如果一切正常,Claude 应该能够:
配置完成后,你可以要求 Claude 执行以下操作:
headless: true)page.realClick 和 page.realCursorpuppeteer-real-browser 选项setTarget 函数npm install -g puppeteer-real-browser-mcp-server
# 克隆仓库
git clone https://github.com/withLinda/puppeteer-real-browser-mcp-server.git
cd puppeteer-real-browser-mcp-server
# 安装依赖
npm install
# 构建项目
npm run build
在 Claude Desktop 配置文件中添加以下内容:
{
"mcpServers": {
"puppeteer-real-browser": {
"command": "npx",
"args": ["puppeteer-real-browser-mcp-server@latest"]
}
}
}
启动服务器:
puppeteer-real-browser-mcp-server
如果你是从源代码安装的,可以使用以下命令启动:
npm start
服务器通过标准输入/输出使用 MCP 协议进行通信。
用户:"初始化浏览器并导航到 example.com"
AI:我将初始化一个隐身浏览器并导航到该网站。
[使用 browser_init 和 navigate 工具]
用户:"截取主内容区域的屏幕截图"
AI:我将截取页面的屏幕截图。
[使用 screenshot 工具]
用户:"在搜索表单中输入 'test query'"
AI:我将以类人打字方式在搜索字段中输入该内容。
[使用 human_like_type 工具,指定选择器和文本]
用户:"点击搜索按钮"
AI:我将以类人移动方式点击搜索按钮。
[使用 human_like_click 工具]
用户:"从此电子商务页面获取所有产品名称"
AI:我将从页面中提取产品信息。
[使用 get_content 工具,指定合适的选择器]
用户:"将页面内容保存为文本"
AI:我将获取整个页面的文本内容。
[使用 get_content 工具,指定类型为 'text']
用户:"在下拉菜单上使用真实点击"
AI:我将使用增强的 real_click 方法进行更好的交互。
[使用 real_click 工具,指定选择器和选项]
用户:"将光标平滑移动到坐标 500, 300 处"
AI:我将使用增强的移动方式移动光标。
[使用 real_cursor 工具,指定 x、y 坐标和步长选项]
用户:"使用代理服务器初始化浏览器"
AI:我将使用你的代理配置设置浏览器。
[使用 browser_init 工具,指定代理为 "https://proxy.example.com:8080"]
| 工具名称 | 描述 | 必需参数 | 可选参数 |
|---|---|---|---|
browser_init |
使用高级选项初始化隐身浏览器 | 无 | headless、disableXvfb、ignoreAllFlags、proxy、plugins、connectOption |
navigate |
导航到指定 URL | url |
waitUntil |
screenshot |
截取页面或元素的屏幕截图 | 无 | fullPage、selector |
get_content |
获取页面内容(HTML 或文本) | 无 | type、selector |
browser_close |
关闭浏览器实例 | 无 | 无 |
| 工具名称 | 描述 | 必需参数 | 可选参数 |
|---|---|---|---|
click |
对元素执行标准点击操作 | selector |
waitForNavigation |
type |
在输入字段中输入文本 | selector、text |
delay |
wait |
等待各种条件满足 | type、value |
timeout |
| 工具名称 | 描述 | 必需参数 | 可选参数 |
|---|---|---|---|
real_click |
使用 page.realClick 进行增强点击操作 |
selector |
options(按钮、点击次数、延迟) |
real_cursor |
使用 page.realCursor 进行增强光标移动 |
selector 或 x、y |
options(步数) |
set_target |
使用 setTarget 函数进行高级目标定位 |
target |
无 |
| 工具名称 | 描述 | 必需参数 | 可选参数 |
|---|---|---|---|
human_like_click |
以类人鼠标移动方式点击 | selector |
无 |
human_like_type |
以类人输入时间间隔输入文本 | selector、text |
无 |
random_scroll |
以自然时间间隔执行随机滚动 | 无 | 无 |
| 工具名称 | 描述 | 必需参数 | 可选参数 |
|---|---|---|---|
solve_captcha |
尝试解决验证码 | type |
无 |
服务器包含多个模拟人类行为的工具:
这些功能有助于避免被分析用户行为模式的复杂机器人检测系统识别。
服务器基本支持解决常见类型的验证码:
请注意,验证码解决能力取决于底层 puppeteer-real-browser 的实现。
自定义选项(如无头模式)不在 MCP 配置文件中配置。相反,它们在使用 browser_init 工具初始化浏览器时传递。
当你要求 Claude 初始化浏览器时,你可以指定以下选项:
请初始化一个启用无头模式并设置 30 秒超时的浏览器
Claude 将使用 browser_init 工具并传递相应参数:
{
"headless": true,
"connectOption": {
"timeout": 30000
}
}
使用 browser_init 初始化时,你可以配置以下选项:
headless:true/false(设置为 true 以启用无头模式)disableXvfb:true/false(禁用 X 虚拟帧缓冲)ignoreAllFlags:true/false(忽略所有 Chrome 标志)proxy:"https://proxy:8080"(代理服务器 URL)plugins:["plugin1", "plugin2"](要加载的插件数组)connectOption:其他连接选项,如:
slowMo:250(以毫秒为单位减慢操作速度)timeout:60,000(连接超时时间)MCP 配置文件仅告知 Claude 服务器的位置,所有特定于浏览器的选项都通过与 Claude 的对话进行配置。
使用 browser_init 初始化浏览器时,你可以进行如下配置:
{
"headless": false,
"disableXvfb": false,
"ignoreAllFlags": false,
"proxy": "https://proxy:8080",
"plugins": ["plugin1", "plugin2"],
"connectOption": {
"slowMo": 250,
"timeout": 60000
}
}
{
"headless": true,
"proxy": "https://username:password@proxy.example.com:8080"
}
{
"headless": false,
"ignoreAllFlags": true,
"disableXvfb": false,
"connectOption": {
"slowMo": 100,
"devtools": false
}
}
使用带有选项的 real_click:
{
"selector": "#submit-button",
"options": {
"button": "left",
"clickCount": 2,
"delay": 150
}
}
使用带有坐标的 real_cursor:
{
"x": 500,
"y": 300,
"options": {
"steps": 30
}
}
对于高级用户,你可以通过编辑源代码来修改服务器行为:
initializeBrowser 函数中更改默认视口大小puppeteer-real-browser-mcp-server/
├── src/
│ ├── index.ts # 主服务器实现
│ └── stealth-actions.ts # 类人交互函数
├── test/
│ └── test-server.ts # 测试脚本
├── package.json
└── tsconfig.json
# 安装依赖
npm install
# 在开发模式下运行
npm run dev
# 构建生产版本
npm run build
# 测试服务器
npm test
要添加新工具,请按以下步骤操作:
src/index.ts 的 TOOLS 数组中添加工具定义CallToolRequestSchema 处理程序中实现工具处理逻辑本项目采用 MIT 许可证,请参阅 LICENSE 文件以获取详细信息。
使用 npx 时出现 "command not found" 或 "syntax error"
npx puppeteer-real-browser-mcp-server@latestnpm install -g puppeteer-real-browser-mcp-server@latestnpm install -g puppeteer-real-browser-mcp-servernpm config get prefix浏览器无法启动
sudo apt-get install -y chromium-browserheadless: true 模式Claude 无法识别 MCP 服务器
claude_desktop_config.json 文件是否位于正确的位置权限被拒绝错误
sudo npm install -g puppeteer-real-browser-mcp-server检测问题
real_click 和 real_cursor 代替基本点击操作human_like_click、human_like_typerandom_scroll 添加随机延迟proxy: "http://proxy.example.com:8080"内存泄漏问题
browser_close 关闭浏览器实例超时错误
{ "timeout": 60000 }wait 工具问:该项目是否支持无头浏览器?
答:是的,在 browser_init 选项中设置 headless: true 即可。
问:我可以同时使用多个浏览器吗? 答:目前仅支持一个浏览器实例。在启动新的浏览器实例之前,请关闭当前的实例。
问:它可以解决哪些类型的验证码?
答:通过 puppeteer-real-browser 支持解决 reCAPTCHA、hCaptcha 和 Cloudflare Turnstile 验证码。
问:该项目会被网站检测到吗?
答:puppeteer-real-browser 包含反检测功能,但没有任何解决方案是 100% 不可检测的。
问:我可以使用自定义 Chrome 扩展吗?
答:是的,通过 browser_init 中的 plugins 选项可以实现。
问:该项目是否支持所有操作系统? 答:是的,已经在 Windows、macOS 和 Linux 系统上进行了测试。
要启用调试日志,请使用以下命令:
DEBUG=true npm start
或者从源代码运行时:
DEBUG=true npm run dev
如果你仍然遇到问题,请按照以下步骤操作:
node --version)npm --version)欢迎贡献代码!请随时提交拉取请求。
git checkout -b feature/amazing-feature)git commit -m 'Add some amazing feature')git push origin feature/amazing-feature)