你是否曾经遇到过这样的情况:你用自动化脚本访问某个网站,却被识别出来并拒绝了服务?或者你想让AI帮你抓取某个网站的数据,但网站的反爬机制让你的请求屡屡碰壁?今天要介绍的开源项目stealth-browser-mcp,正是为了解决这个问题而生。它通过集成先进的隐身模式技术,让你的AI能够像真实用户一样浏览网页,而不会被检测到是机器人。

项目基本信息

信息项详情
项目名称stealth-browser-mcp
GitHub地址https://github.com/brian-ln/stealth-browser-mcp
项目描述A MCP Server that provides browser access through playwright with "stealth mode" enabled.
作者brian-ln
开源协议MIT License
开源状态公开状态
LanguagesTypeScript 100.0%
支持平台Windows / macOS / Linux
最后更新2026-03-31

一、项目介绍

stealth-browser-mcp 是一个基于MCP协议的浏览器自动化服务器。它的核心特点是集成了隐身模式,通过多种反检测技术,让自动化浏览器看起来就像是真实的用户访问。项目基于Playwright构建,并使用了puppeteer-extra-plugin-stealth插件,能够修改浏览器指纹、处理WebGL、Canvas、字体、插件等各种浏览器指纹识别技术。

这个项目目前专注于提供截图功能,但它为更复杂的浏览器自动化操作打下了坚实的基础。无论你是想让AI帮你保存某个网页的快照,还是为后续的数据抓取做准备,stealth-browser-mcp都能以隐蔽的方式完成。

二、核心优势

开源免费且采用MIT协议

项目代码完全公开,采用宽松的MIT开源协议。你可以自由地使用、修改、甚至集成到商业项目中,无需担心法律问题。

隐身模式

这是项目最大的亮点。传统的浏览器自动化工具很容易被网站的反爬系统识别,因为它们会暴露一些特征(例如navigator.webdriver属性)。stealth-browser-mcp通过puppeteer-extra-plugin-stealth插件,能够:

  • 隐藏自动化工具的特征
  • 伪造真实的浏览器指纹
  • 模拟真实用户的浏览行为

简单易用

项目只提供了一个截图工具,参数设计得非常直观。你不需要了解复杂的隐身模式配置,开箱即用。

技术栈先进

项目使用TypeScript编写,基于FastMCP框架,并采用Bun作为运行时。Bun是一个快速的JavaScript运行时,比Node.js启动更快,资源占用更低。

MCP原生集成

作为标准的MCP服务器,它可以无缝集成到任何支持MCP协议的客户端中,例如Cursor编辑器、Claude Desktop等。

三、适用场景

开发者学习和参考

对于想学习如何将隐身模式集成到浏览器自动化中的开发者,这是一个绝佳的参考项目。代码量不大,结构清晰,很容易理解。

个人项目使用和集成

如果你正在开发一个需要抓取数据但又容易被屏蔽的爬虫项目,stealth-browser-mcp可以作为底层驱动。例如:

  • 抓取电商网站的商品价格信息
  • 采集社交媒体上的公开数据
  • 监控竞争对手的网站变化

企业级应用开发

在企业环境中,可以用它来构建数据采集平台或竞争对手分析系统。隐身模式可以大大降低被屏蔽的风险,提高数据采集的稳定性。

日常工作和效率提升

对于普通用户,可以通过AI助手来截图那些需要登录或反爬的网站:

  • “帮我保存这个需要登录才能看到的页面截图”
  • “定期截取某个数据仪表盘的快照”

四、安装教程

系统要求

工具用途下载/安装方式
BunJavaScript运行时和包管理器[https://bun.sh/]
Git下载项目代码(可选)[https://git-scm.com/]

详细安装步骤

第一步:安装Bun运行时

如果你还没有安装Bun,打开终端执行以下命令:

curl -fsSL https://bun.sh/install | bash

安装完成后,重启终端或执行source ~/.bashrc使环境变量生效。用bun --version验证安装是否成功。

第二步:克隆项目到本地

git clone https://github.com/brian-ln/stealth-browser-mcp.git
cd stealth-browser-mcp

第三步:安装依赖

Bun会自动读取package.json并安装所有依赖:

bun install

第四步:启动MCP服务器

bun start

如果一切正常,你会看到服务器启动的日志。默认情况下,服务器会通过标准输入输出(stdio)与MCP客户端通信。

第五步:配置MCP客户端(以Cursor为例)

在Cursor编辑器中,打开MCP配置文件(mcp.json),添加以下内容:

{
  "mcpServers": {
    "stealth-browser": {
      "command": "bun",
      "args": ["/你的绝对路径/stealth-browser-mcp/index.ts"]
    }
  }
}

注意:请将/你的绝对路径/替换为项目实际所在的完整路径。

保存后,Cursor会自动检测到新的MCP服务器。

五、使用示例

配置完成后,你就可以在MCP客户端中通过自然语言调用截图功能了。

示例1:截取整个网页

在Cursor中使用:输入 @stealth-browser screenshot url=https://example.com fullPage=true

或者更自然的说法:“请帮我截取https://github.com的完整页面截图”

AI会调用以下工具参数:

{
  "url": "https://github.com",
  "fullPage": true,
  "headless": true
}

示例2:只截取特定元素

假设你只想截取网页中的某个部分,可以通过CSS选择器来指定:

用户指令:“截取百度首页搜索框区域的截图”

工具调用

{
  "url": "https://www.baidu.com",
  "selector": "#form",
  "fullPage": false
}

示例3:使用可见模式调试

有时候你可能想看看浏览器到底在做什么,可以使用非无头模式(headless=false):

工具调用

{
  "url": "https://www.example.com",
  "fullPage": true,
  "headless": false
}

这样会弹出一个可见的浏览器窗口,你可以观察自动化过程。

示例4:批量截图

虽然项目本身只提供了一个工具,但你可以通过AI客户端来实现批量操作。例如,你可以说:

“请帮我截取以下网站的完整页面截图:google.com, github.com, stackoverflow.com,并保存到桌面。”

AI会循环调用screenshot工具三次,每次传入不同的URL。

示例5:集成到Python脚本

如果你想在Python程序中调用这个MCP服务器,可以使用MCP的Python SDK。以下是一个简单的概念示例:

import asyncio
from mcp import ClientSession, StdioServerParameters

async def main():
    server_params = StdioServerParameters(
        command="bun",
        args=["/path/to/stealth-browser-mcp/index.ts"]
    )
    
    async with ClientSession(server_params) as session:
        result = await session.call_tool(
            "screenshot",
            arguments={
                "url": "https://example.com",
                "fullPage": True
            }
        )
        print(result)

asyncio.run(main())

注意:上述代码仅为示意,实际使用时需要安装MCP Python SDK。

六、常见问题

问题1:启动服务器时提示“bun: command not found”

解决方案:请确保你已经正确安装了Bun。尝试重新打开终端,或者手动将Bun的安装路径添加到系统PATH中。Bun通常安装在~/.bun/bin目录下。

问题2:截图时提示“Browser closed”或超时

解决方案:这可能是网络问题或目标网站响应太慢。你可以尝试:

  • 检查网络连接是否正常
  • 在非无头模式(headless=false)下运行,观察浏览器行为
  • 某些网站可能有严格的防火墙,即使隐身模式也可能被拦截

问题3:在Cursor中调用工具时没有反应

解决方案:

  • 确认mcp.json中的路径是否正确,并且使用了绝对路径
  • 检查终端中stealth-browser-mcp服务器是否正在运行
  • 尝试重启Cursor编辑器

问题4:截图保存到了哪里?

解决方案:目前项目的screenshot工具似乎没有提供指定保存路径的参数。截图可能会被返回为base64编码的图像数据,或者保存在临时目录中。建议查看项目的源码或文档以获取更详细的信息。你也可以向作者提Issue建议增加保存路径参数。

问题5:能否进行更复杂的操作,如点击、填表?

解决方案:目前项目只实现了截图功能。但因为它基于Playwright,理论上可以轻松扩展更多工具。如果你需要更完整的功能,可以考虑项目作者未来的更新,或者自己fork并添加所需的功能。

七、总结

stealth-browser-mcp是一个小而精的项目。它没有试图做一个大而全的浏览器自动化工具,而是专注于解决一个特定问题:如何让AI驱动的浏览器访问不易被检测。通过集成成熟的隐身模式技术,它成功地将复杂的反检测配置封装成了一个简单的截图工具。

虽然目前功能还比较单一(只有截图),但它的架构是开放的,基于Playwright和FastMCP,扩展其他浏览器操作(点击、填表、导航等)并不困难。如果你需要一个能够绕过基本反爬检测的浏览器截图工具,或者想学习如何将隐身模式集成到MCP服务器中,stealth-browser-mcp是一个非常好的起点。

项目的星数虽然不多(22颗星),但胜在简洁和专注。作者brian-ln在2025年2月创建了项目,至今仍在维护。相信随着时间推移,会有更多功能被加入。

标签: 浏览器自动化

已有 34 条评论

    1. UlyssesUse UlyssesUse

      作者是Brian Lloyd-Newberry,看名字应该是个资深开发者。

    2. VeraVerify VeraVerify

      项目最后更新是2026年3月31日,很新,说明还在维护。

    3. WillWait WillWait

      我fork了这个项目,准备自己加一些功能,比如填表和点击。

    4. XenaXray XenaXray

      Bun的启动速度确实比Node快,冷启动几乎感觉不到延迟。

    5. YaleYarn YaleYarn

      希望作者能发布到npm,这样可以直接npx运行,不用克隆仓库。