OpenClaw 集成 Scrapling MCP:用自然语言绕过 Cloudflare 完成高防护网页抓取
OpenClaw 集成 Scrapling MCP:用自然语言绕过 Cloudflare 完成高防护网页抓取
导读
本文讲解 OpenClaw 如何通过 MCP 协议集成 Scrapling,为 Agent 补上普通 web_fetch / web_search 力所不及的网页抓取能力——包括 Cloudflare Turnstile 反爬绕过、浏览器指纹伪装与自适应元素解析。读完本文,你将掌握 Scrapling MCP 的安装配置、三种抓取模式的选择、~/.openclaw/openclaw.json 的完整配置写法,以及 HTTP 传输与代理等高级用法,并理解 acpx 插件是如何把 MCP Server 注入 ACP 会话的底层原理。
为什么 OpenClaw 需要 Scrapling
OpenClaw 本身已经内置 web_fetch 和 web_search 工具,但在面对真实互联网时存在明显短板。Scrapling 的引入正是为了补齐以下四类场景:
| 场景 | 现有工具局限 | Scrapling 优势 |
|---|---|---|
| Cloudflare 保护 | 无法绕过 | 自动解决 Turnstile 挑战 |
| 网站结构变化 | 选择器失效 | 自适应元素追踪 |
| 需要 JS 渲染 | 支持有限 | 完整浏览器自动化 |
| 高防护网站 | 易被拦截 | 浏览器指纹伪装 |
在仓库内部也能看到同类佐证:Firecrawl 扩展在其工具描述中同样将"JS-heavy or bot-protected pages"列为普通 web_fetch 的薄弱点(见 extensions/firecrawl/src/firecrawl-scrape-tool.ts),而 Scrapling 正是针对这类页面提供了专门的抓取路径。
功能特性
- 反检测能力:自动绕过 Cloudflare Turnstile 等反爬虫机制,通过浏览器指纹伪装降低被识别拦截的概率。
- 自适应解析:基于元素指纹追踪,当网站改版导致 CSS 选择器失效时,可以自动修复并保持提取逻辑可用。
- 多种抓取模式:
get:基本 HTTP 请求,适用于低/中防护网站;fetch:基于 Playwright 的浏览器抓取,适用于需要 JS 渲染的页面;stealthy_fetch:隐式浏览器抓取,适用于 Cloudflare 等高防护网站。
应用场景
- 数据采集:批量抓取商品信息、新闻文章、社交媒体内容;
- 竞品监控:定期监控竞争对手网站的价格与动态;
- 内容聚合:从多个来源聚合内容到知识库;
- 自动化测试:验证网页功能和内容展示;
- 绕过防护:访问 Cloudflare 保护的内部系统或公开页面。
对比示例:从被拦截到成功抓取
文档中记录了同一任务的抓取前后对比,直观反映能力差异:
之前(web_fetch)
用户: "获取 x.com 这条推文的内容"
结果: 无法访问,需要登录或被拦截
之后(scrapling)
用户: "用 scrapling 获取 x.com/sitinme/status/2032315717224169723"
结果: ✅ 成功获取完整推文内容,包括文字、互动数据
快速开始
自动安装
在项目目录运行一键安装脚本:
./scripts/setup-scrapling.sh
该脚本(见 scripts/setup-scrapling.sh)依次执行 5 个步骤:安装 Scrapling 及依赖、安装 acpx 插件依赖、向 ~/.openclaw/openclaw.json 写入配置、验证 scrapling 命令可用、输出下一步指引。其中配置写入由脚本内嵌的 Python 代码完成,若配置文件已包含 "scrapling" 键则跳过写入,避免重复配置。
手动安装
Scrapling 是一个 Python 包,通过
pip3 install自动从 PyPI 下载安装,无需手动克隆 GitHub 仓库。
1. 安装 Python 依赖
pip3 install scrapling mcp curl_cffi browserforge msgspec patchright markdownify
此命令会自动从 PyPI 下载并安装 Scrapling 及其运行所需的全部依赖:curl_cffi 提供带指纹模拟的 HTTP 客户端、browserforge 负责生成真实浏览器指纹、patchright 提供打过反检测补丁的浏览器控制、markdownify 用于把 HTML 转为 Markdown 供 LLM 阅读。
2. 安装 acpx 依赖
cd extensions/acpx
pnpm install
cd ../..
3. 配置 OpenClaw
在 ~/.openclaw/openclaw.json 中添加:
{
"plugins": {
"entries": {
"acpx": {
"enabled": true,
"config": {
"mcpServers": {
"scrapling": {
"command": "scrapling",
"args": ["mcp"]
}
}
}
}
}
},
"browser": {
"profiles": {
"chrome": {
"color": "007AFF"
}
}
}
}
4. 重启 Gateway
pnpm openclaw gateway run --bind loopback --port 18789 --force
使用方法
在 OpenClaw 中直接通过自然语言调用,无需显式写出工具名:
"使用 scrapling 获取 https://example.com 的内容"
"用 scrapling 绕过 Cloudflare 抓取 https://x.com/..."
"用 scrapling 提取页面中的所有链接"
可用工具一览
| 工具 | 功能 | 适用场景 |
|---|---|---|
get |
HTTP 请求 + 内容提取 | 低/中防护网站 |
bulk_get |
批量 HTTP 请求 | 批量抓取 |
fetch |
Playwright 浏览器抓取 | 需要 JS 渲染 |
bulk_fetch |
批量浏览器抓取 | 批量 JS 页面 |
stealthy_fetch |
隐式浏览器抓取 | 高防护网站 (Cloudflare) |
bulk_stealthy_fetch |
批量隐式抓取 | 批量高防护网站 |
高级选项
HTTP 模式
默认情况下 MCP Server 通过 stdio 与 OpenClaw 通信。如果需要改为 HTTP 访问(例如跨进程、远程调试场景),把配置中的 args 调整为:
"scrapling": {
"command": "scrapling",
"args": ["mcp", "--http", "--port", "8765"]
}
代理配置
在工具调用时指定代理,适用于需要经代理出口访问的目标站:
result = await session.call_tool("stealthy_fetch", {
"url": "https://example.com",
"proxy": "http://username:password@localhost:8030"
})
源码级原理:acpx 插件如何注入 MCP Server
Scrapling MCP 之所以能生效,关键在于它作为 mcpServers 配置项挂在 acpx 插件名下。从仓库源码看,这一机制有几层实现:
- 配置模式定义:在 extensions/acpx/openclaw.plugin.json 中,
mcpServers的每一项由command(必填)、args(可选字符串数组)与env(可选环境变量映射)构成,与文档示例中的"command": "scrapling", "args": ["mcp"]完全对应; - 配置校验与解析:extensions/acpx/src/config.ts 用 zod 严格校验插件配置,
McpServerConfigSchema要求command为非空字符串,并允许可选的args与env; - 运行时注入:
buildMcpProxyAgentCommand会把mcpServers序列化进 base64url payload,交由 extensions/acpx/src/runtime-internals/mcp-proxy.mjs 代理进程处理;该代理监听 ACP 会话的session/new、session/load、session/fork等请求,在转发前把mcpServers写入会话参数,从而让每个新会话都能直接调用 Scrapling 工具。
此外,acpx 插件还提供若干可调参数,配置时可一并关注:permissionMode(可选 approve-all / approve-reads / deny-all,默认 approve-reads)、nonInteractivePermissions(默认 fail)、expectedVersion(默认锁定 0.3.1)、timeoutSeconds 与 queueOwnerTtlSeconds 等,具体取值说明见 extensions/acpx/src/config.ts。
小结
Scrapling MCP 为 OpenClaw 补齐了高防护网站的抓取能力:get / fetch / stealthy_fetch 三种模式覆盖从普通 HTTP 到 Cloudflare 绕过、再到批量抓取的全部场景,配合 acpx 插件的 MCP 注入机制,用户只需用自然语言即可完成原本需要专门反爬工程才能实现的任务。配置时注意三点即可快速落地:用 pip3 装齐 Python 依赖、在 openclaw.json 中注册 scrapling MCP Server、重启 Gateway 使配置生效。