前言¶
智能體在抓取網頁時,常遇到 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