项目简介

'JobOps Stealth Browser MCP 服务'是'JobOps'仓库中一个独立的、可选的组件,其核心功能是作为一个Model Context Protocol (MCP) 服务器运行,并利用'playwright-extra'及其隐身插件,为大型语言模型(LLM)客户端提供高级的、不易被网站检测的网页浏览器自动化能力。

这意味着LLM可以通过该服务执行诸如网页导航、内容提取、表单填写等任务,特别适用于需要绕过常见机器人检测的场景,例如自动化抓取招聘网站信息或执行复杂的网页交互。在'JobOps'项目中,它主要用于'/searchjobs'命令来增强求职信息的获取能力。

主要功能点

此MCP服务器通过一系列工具函数,赋予LLM以下浏览器自动化能力:

  • 隐身网页导航: 安全地访问并浏览指定的URL,内置反机器人检测机制,减少被网站识别为自动化程序的风险。
  • 内容与HTML提取: 从当前加载的网页中准确提取特定选择器下的文本内容或完整的HTML结构。
  • JavaScript执行: 在当前网页的上下文中运行自定义JavaScript代码,实现复杂的网页交互、数据处理或动态内容抓取。
  • API请求代理: 在浏览器会话中发起HTTP(S)请求('fetch' API),继承当前会话的Cookies和认证信息,适用于需要保持会话状态的API调用。
  • 页面等待机制: 支持等待指定的时间(毫秒)或等待特定CSS选择器对应的元素出现在页面上,以确保操作在页面完全加载或特定元素可用后执行。
  • 网页截图: 对当前页面进行截图,可选择截取可见区域或整个页面,便于可视化调试或记录页面状态。
  • 浏览器管理: 包含关闭浏览器实例的工具,用于释放资源。

安装步骤

  1. Node.js 环境: 确保您的系统已安装 Node.js (推荐 LTS 版本)。
  2. 项目依赖安装: 在 'JobOps' 仓库的根目录下,运行以下命令安装所有必要的 Node.js 依赖。这些依赖中包含了 'playwright-extra' 和 'puppeteer-extra-plugin-stealth' (用于隐身浏览) 以及 '@modelcontextprotocol/sdk' (MCP 服务器框架)。
    npm install
    # 如果仓库有提供,也可以尝试运行项目自定义的安装脚本:
    # npm run install-all
    (注意:'npm install' 命令会根据 'JobOps' 仓库的 'package.json' 文件自动安装所需依赖,其中已包含了本 MCP 服务器所需的组件。)

服务器配置 (供MCP客户端使用)

要让您的MCP客户端(例如 Claude Code CLI 或其他兼容MCP的LLM客户端)连接并使用此服务,您需要进行如下配置。这是一个JSON格式的配置示例,您通常会将其添加到MCP客户端的配置文件中(例如 Claude Code CLI 的 '~/.claude/mcp.json' 或项目内的 '.claude/mcp.json')。

{
  "servers": [
    {
      "name": "stealth-browser",             // MCP服务器的唯一名称,用于客户端引用
      "command": "node",                     // 启动MCP服务器的命令,这里是Node.js运行时
      "args": ["scripts/mcp/stealth-browser.js"], // 传递给Node.js命令的参数,指定了MCP服务器脚本的路径
      "protocol": "stdio"                    // 通信协议,此服务使用标准输入输出 (Stdio) 进行通信
    }
  ]
}

请根据您的MCP客户端的文档,将上述配置信息添加到相应的配置文件中。配置完成后,您的MCP客户端就可以发现并使用 'stealth-browser' 服务提供的工具。

基本使用方法

一旦MCP客户端成功配置并启动了'stealth-browser'服务,LLM就可以通过在其提示中调用服务器暴露的工具来执行网页自动化任务。以下是LLM在其思考或响应中发出工具调用请求的概念性示例:

  1. 导航到目标网页: LLM 会生成一个工具调用请求,例如: 'tool_code("stealth_navigate", {"url": "https://www.hiring.cafe/jobs"})' MCP服务器会尝试访问该URL,并返回页面的标题和最终URL,表示导航成功。

  2. 获取页面上的特定信息: 在导航成功后,LLM可能需要提取页面的某个部分,例如所有招聘职位的列表: 'tool_code("stealth_get_content", {"selector": "div.job-listings"})' MCP服务器会返回该CSS选择器匹配元素的文本内容。

  3. 执行自定义交互或数据抓取: 如果需要执行更复杂的、页面特有的交互(如点击按钮、填写表单或运行自定义逻辑),LLM可以调用: 'tool_code("stealth_evaluate", {"script": "document.querySelectorAll('.job-card h2').map(el => el.innerText)"})' MCP服务器将执行提供的JavaScript代码,并返回其结果。

通过这种方式,LLM能够通过MCP客户端与 'stealth-browser' 服务器进行通信,从而实现对复杂网页场景的智能感知和自动化操作。

信息

分类

网页与API