浏览器自动化服务器

Scrappey MCP服务器是一个用于浏览器自动化及数据提取的模型上下文协议服务器,支持会话管理、HTTP请求发送、浏览器操作执行等功能。

  • by pim97
  • JavaScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 pim97/mcp-server-scrappey

使用说明

报废MCP服务器

一个模型上下文协议(MCP)服务器,用于与Scrapey.com的浏览器支持的web自动化和数据提取功能进行交互。直接在以下网址试用 smithery.ai/server/@pim97/mcp服务器剪贴簿.

概述

此MCP服务器在AI模型和Scrapey的web自动化平台之间提供了一座桥梁,使您能够:

  • 创建和管理浏览器会话
  • 通过Scrapey的浏览器支持的基础架构发送HTTP请求
  • 执行浏览器操作(单击、键入、滚动等)
  • 渲染依赖于常见机器人管理系统(Cloudflare、Datadome、Kasada等)的JavaScript挑战页面的页面
  • 当页面需要时,完成交互式挑战小部件(旋转栅门、reCAPTCHA、hCaptcha等)
  • 截取屏幕截图并录制视频
  • 拦截网络请求

此服务器用于合法的开发用途——应用程序和集成测试、监控您自己的服务以及收集您有权访问的数据。看 责任的使用.

设置

安装

npm install
npm run build

配置

  1. 从获取您的Scrapey API密钥 Scrapey.com
  2. 设置环境变量:
SCRAPPEY_API_KEY=your_api_key_here

Claude桌面配置

添加到您的 claude_desktop_config.json:

{
  "mcpServers": {
    "scrappey": {
      "command": "node",
      "args": ["path/to/dist/scrappey-mcp.js"],
      "env": {
        "SCRAPPEY_API_KEY": "your_api_key_here"
      }
    }
  }
}

光标IDE配置

Cursor通过其设置支持MCP服务器。通过以下方式之一进行配置:

选项1:通过光标设置UI

  1. 打开光标设置(Ctrl+或Cmd+)
  2. 搜索“MCP”或“模型上下文协议”
  3. 添加一个新的MCP服务器:
    • 名称: scrappey
    • 命令: node
    • 参数: ["C:\\Users\\pim_d\\Desktop\\scrappey.com\\mcp-smith\\mcp-server-scrappey\\dist\\scrappey-mcp.js"]
    • 环境变量:添加 SCRAPPEY_API_KEY 使用API密钥

选项2:通过设置JSON

  1. 打开光标设置(Ctrl+Shift+P或Cmd+Shift+P)
  2. 键入“首选项:打开用户设置(JSON)”
  3. 添加MCP服务器配置:
{
  "mcp.servers": {
    "scrappey": {
      "command": "node",
      "args": ["C:\\Users\\pim_d\\Desktop\\scrappey.com\\mcp-smith\\mcp-server-scrappey\\dist\\scrappey-mcp.js"],
      "env": {
        "SCRAPPEY_API_KEY": "your_api_key_here"
      }
    }
  }
}

备注:将路径调整为 dist/scrappey-mcp.js 根据您安装MCP服务器的位置。

配置后,重新启动Cursor以加载MCP服务器。您应该在AI聊天界面中看到可用的Scrapey工具。

可用工具

1.创建会话(scrappey_create_session)

创建一个新的浏览器会话,以持久化Cookie和其他状态。

{
  "proxy": "http://user:pass@ip:port",
  "proxyCountry": "UnitedStates",
  "premiumProxy": true,
  "mobileProxy": false,
  "browser": [{"name": "firefox", "minVersion": 120, "maxVersion": 130}],
  "userAgent": "custom-user-agent"
}

2.销毁会话(scrappey_destroy_session)

正确关闭浏览器会话以释放资源。

{
  "session": "session_id_here"
}

3.列出会话(scrappey_list_sessions)

列出当前用户的所有活动会话。

{}

答复:

{
  "sessions": [{"session": "abc123", "lastAccessed": 1234567890}],
  "open": 1,
  "limit": 100
}

4.检查会话是否处于活动状态(scrappey_session_active)

检查特定会话当前是否处于活动状态。

{
  "session": "session_id_here"
}

5.发送请求(scrappey_request)

发送浏览器支持的HTTP请求,并自动处理JavaScript挑战页面。

{
  "cmd": "request.get",
  "url": "https://example.com",
  "session": "session_id_here",
  "postData": {"key": "value"},
  "customHeaders": {"User-Agent": "custom-agent"},
  "cookies": "session=abc123",
  "proxyCountry": "Germany",
  "premiumProxy": true,
  "cloudflareBypass": true,
  "datadomeBypass": true,
  "automaticallySolveCaptchas": true,
  "alwaysLoad": ["recaptcha", "hcaptcha"],
  "screenshot": true,
  "cssSelector": ".product-title",
  "innerText": true,
  "includeLinks": true,
  "includeImages": true,
  "interceptFetchRequest": "https://api.example.com/data",
  "abortOnDetection": ["analytics.com", "tracking.js"],
  "whitelistedDomains": ["example.com"],
  "blockCookieBanners": true
}

6.浏览器操作(scrappey_browser_action)

执行浏览器自动化操作。

{
  "session": "session_id_here",
  "url": "https://example.com",
  "cmd": "request.get",
  "browserActions": [
    {"type": "wait_for_selector", "cssSelector": "#login-form"},
    {"type": "type", "cssSelector": "#username", "text": "myuser"},
    {"type": "type", "cssSelector": "#password", "text": "mypassword"},
    {"type": "solve_captcha", "captcha": "turnstile"},
    {"type": "click", "cssSelector": "#submit", "waitForSelector": ".dashboard"},
    {"type": "execute_js", "code": "document.querySelector('.user-data').innerText"}
  ],
  "mouseMovements": true
}

支持的浏览器操作类型:

动作 描述
click 点击一个元素
type 在输入框中键入文本
goto 导航到URL
wait 等待指定的毫秒
wait_for_selector 等待元素出现
wait_for_function 等待JavaScript条件为真
wait_for_load_state 等待页面加载状态(domcontentloaded、networkidle、load)
wait_for_cookie 等待设置cookie
execute_js 执行JavaScript代码
scroll 滚动到元素或页面底部
hover 将鼠标悬停在元素上
keyboard 按键盘键(enter、tab等)
dropdown 从下拉列表中选择选项
switch_iframe 切换到iframe
set_viewport 更改浏览器视口大小
if 有条件的行动执行
while 条件为真时循环操作
solve_captcha 解决各种验证码类型
remove_iframes 从页面中删除所有iframe

支持的交互式挑战类型:

  • turnstile -Cloudflare旋转栅门
  • recaptcha / recaptchav2 / recaptchav3 -谷歌reCAPTCHA
  • hcaptcha / hcaptcha_inside / hcaptcha_enterprise_inside -hcaptcha
  • funcaptcha -funcaptcha/arkose实验室
  • perimeterx -周长X
  • mtcaptcha -mtcaptcha
  • custom -自定义图像验证码

7.屏幕截图(scrappey_screenshot)

对网页进行截图。

{
  "url": "https://example.com",
  "session": "optional_session_id",
  "screenshotWidth": 1920,
  "screenshotHeight": 1080,
  "fullPage": true,
  "browserActions": [
    {"type": "wait", "wait": 2000}
  ],
  "premiumProxy": true
}

挑战页面处理

许多网站在返回内容之前都会提供JavaScript挑战页面。Scrapey在真实的浏览器中呈现这些内容,以便您的自动请求收到最终页面。该服务器与常见机器人管理系统的挑战页面兼容:

  • 云耀 -机器人管理、旋转栅门、挑战页面
  • Datadome
  • 周长X
  • 卡萨达
  • 阿卡迈 -机器人管理器
  • Incapsula -Imperva

为每个请求启用特定系统的处理:

{
  "cloudflareBypass": true,
  "datadomeBypass": true,
  "kasadaBypass": true
}

上面的选项键(cloudflareBypass等)是Scrapey API字段名称,并且为了兼容性而保留为i。

代理选项

{
  "proxy": "http://user:pass@ip:port",
  "proxyCountry": "UnitedStates",
  "premiumProxy": true,
  "mobileProxy": true,
  "noProxy": false
}

支持的国家: 美国、英国、德国、法国等等。

错误代码

服务器提供详细的错误信息:

代码 描述
CODE-0001 服务器容量已满,请重试
CODE-0002 Cloudflare已被阻止
代码-0007 旋转栅门/代理错误
CODE-0010 Datadome代理被阻止
CODE-0024 代理超时
CODE-0029 打开的会话太多
CODE-0032 旋转栅门验证码失败

典型工作流程

  1. 创建会话:
{"name": "scrappey_create_session"}
  1. 导航和交互:
{
  "name": "scrappey_browser_action",
  "session": "returned_session_id",
  "url": "https://example.com/login",
  "cmd": "request.get",
  "browserActions": [
    {"type": "type", "cssSelector": "#username", "text": "myuser"},
    {"type": "type", "cssSelector": "#password", "text": "mypass"},
    {"type": "click", "cssSelector": "#login-btn", "waitForSelector": ".dashboard"}
  ]
}
  1. 提取数据:
{
  "name": "scrappey_request",
  "cmd": "request.get",
  "url": "https://example.com/data",
  "session": "returned_session_id",
  "cssSelector": ".product-list"
}
  1. 清理:
{
  "name": "scrappey_destroy_session",
  "session": "returned_session_id"
}

最佳实践

  1. 重复使用会话 用于维护状态的相关请求
  2. 销毁会话 当释放资源时
  3. 使用高级代理 实现更可靠的连接
  4. 启用自动挑战处理 适用于提供挑战页面的网站
  5. 使用适当的等待时间 在操作之间切换,以便页面有时间加载
  6. 监控会话限制 避免达到极限

责任的使用

此服务器是用于基于浏览器的自动化和数据提取的开发工具。仅将其用于合法、授权的目的,例如:

  • 测试和监控您拥有或运营的应用程序和集成
  • 收集您有权访问的数据

访问第三方网站时,请遵守每个网站的服务条款、机器人指令和费率限制,尊重个人数据和版权,并遵守所有适用法律。您对如何使用此服务器和您的Scrapey帐户负责。

部署

Smithery部署

# Build
npm run build

# Deploy via Smithery CLI
npx @anthropic/smithery-cli deploy

码头工人

docker build -t scrappey-mcp .
docker run -e SCRAPPEY_API_KEY=your_key scrappey-mcp

资源

许可证

MIT许可证