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
羽毛球分组比赛记分
小程序二维码

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

小夜