better-crawler-4-agent

前言

智能体在抓取网页时,常遇到 HTTP 抓取返回空壳、或被反爬拦截的情况。better-crawler-4-agent 是一个 MCP server,它通过真实浏览器渲染,解决这类问题。

核心功能

这个插件的核心价值是把 URL 变成干净正文的 MCP server。它用真实浏览器渲染,知乎、CSDN、掘金这些“HTTP 抓回来是空壳”的站点也能拿到内容。

安装后,DSH profile 中的模型会获得三个工具:

  • fetch_url(url, max_chars) - 抓单个页面
  • fetch_urls(urls, max_chars, max_concurrent) - 并发抓取,逐条独立成败,最多支持 20 条并发
  • crawler_status() - 查浏览器状态,排查启动失败

插件内部采用分层降级策略:浏览器渲染(主路径)-> trafilatura 直取(快路径)-> httpx + 完整浏览器指纹(兜底)。浏览器不可用时,会自动降级为后两层,crawler_status 会给出原因。

安装与启用

在 DSH 环境下,这是一个标准的插件包。安装命令如下:

dsh plugin --profile web add github:TC635807/better-crawler4agent

安装后,插件会通过 dsh.bundle.patch 将仓库的 MCP server 注册进当前 profile。模型即可直接使用上述三个工具。

使用方式

这是一个标准 stdio MCP server,不绑定任何客户端。除了在 DSH 中作为插件使用,它也兼容通用的 mcpServers 格式,可接入 Claude Code、Cursor、Windsurf、Cline 等客户端。

如果需要直接在代码中调用,可以使用 Python 接口:

import sys
sys.path.insert(0, r"D:\better-crawler4agent\src")

from better_crawler import Fetcher

async def main():
    f = Fetcher()
    await f.start()                                  # 预热浏览器
    result = await f.fetch("https://example.com/article")
    if result.ok:
        print(result.content)
        print(f"命中层级: {result.tier}, {result.content_length} 字符")
    else:
        print(f"失败: {result.error}")
    await f.close()

注意事项

使用时需要注意以下几点:

  • Playwright 版本锁定:插件锁定 playwright==1.61.0。升级 playwright 时必须同步重装浏览器,否则会因 revision 不匹配而静默失败。
  • 协议限制:仅允许 http 和 https 协议。
  • 降级机制:浏览器不可用时自动降级为 trafilatura 或 httpx。
  • 并发限制:fetch_urls 最多支持 20 条并发,建议单次调用不要超过此数值。
  • 安全:默认不允许访问内网地址,如需调试可设置环境变量 BETTER_CRAWLER_ALLOW_PRIVATE=1。

结尾

better-crawler-4-agent 是解决智能体网页抓取难题的实用工具。通过真实浏览器渲染和分层降级策略,它能在大多数站点上提取出干净的正文内容。

  • GitHub 仓库: https://github.com/TC635807/better-crawler4agent
  • 技能目录: https://www.skillhub.cn/plugins/TC635807/better-crawler4agent
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜