🚀 Web-curl:網頁內容抓取與提取工具
Web-curl 是一款功能強大的工具,可用於從網頁和 API 中獲取並提取文本內容。你既可以將其作為獨立的命令行工具使用,也能將其作為 MCP(模型上下文協議)服務器來運行。它藉助 Puppeteer 實現強大的網頁抓取功能,還支持資源阻塞、自定義請求頭、身份驗證以及谷歌自定義搜索等高級特性。
🚀 快速開始
安裝
git clone <repository-url>
cd web-curl
npm install
npm run build
Puppeteer 安裝說明
使用
CLI 使用
CLI 支持從網頁中獲取並提取文本內容。
node build/index.js https://example.com
node build/index.js --timeout 30000 --no-block-resources https://example.com
node build/index.js -o result.json https://example.com
命令行選項
--timeout <ms>:設置導航超時時間(默認值:60000)
--no-block-resources:禁用對圖片、樣式表和字體的阻塞
-o <file>:將結果輸出到指定文件
MCP 服務器使用
Web-curl 可以作為 MCP 服務器運行,以便與 Roo Code 或其他支持 MCP 的平臺集成。
npm run start
服務器通過標準輸入輸出進行通信,並公開了在 中定義的工具。
MCP 工具示例(fetch_webpage)
{
"name": "fetch_webpage",
"arguments": {
"url": "https://example.com",
"blockResources": true,
"timeout": 60000,
"maxLength": 10000
}
}
谷歌搜索集成
為谷歌自定義搜索設置以下環境變量:
APIKEY_GOOGLE_SEARCH:你的谷歌 API 密鑰
CX_GOOGLE_SEARCH:你的自定義搜索引擎 ID
✨ 主要特性
- 🔎 從任何網站檢索文本內容。
- 🚫 阻塞不必要的資源(圖片、樣式表、字體)以加快加載速度。
- ⏱️ 設置導航超時時間和內容提取限制。
- 💾 將結果輸出到標準輸出或保存到文件。
- 🖥️ 既可以作為 CLI 工具使用,也可以作為 MCP 服務器使用。
- 🌐 使用自定義方法、請求頭和請求體進行 REST API 請求。
- 🔍 集成谷歌自定義搜索(需要 API 密鑰和 CX)。
- 🤖 智能命令解析(自動檢測 URL 和搜索查詢)。
- 🛡️ 詳細的錯誤日誌記錄和強大的錯誤處理功能。
🏗️ 架構
- CLI 與 MCP 服務器:
實現了 CLI 入口點和 MCP 服務器,公開了諸如 fetch_webpage、fetch_api、google_search 和 smart_command 等工具。
- 網頁抓取:使用 Puppeteer 進行無頭瀏覽、資源阻塞和內容提取。
- REST 客戶端:
提供了一個靈活的 HTTP 客戶端,用於 API 請求,CLI 和 MCP 工具均可使用。
- 配置:通過 CLI 選項、環境變量和工具參數進行管理。
📦 安裝指南
克隆倉庫
git clone <repository-url>
cd web-curl
安裝依賴
npm install
構建項目
npm run build
💻 使用示例
基礎用法
從網頁獲取文本內容
node build/index.js https://example.com
MCP 工具示例(fetch_webpage)
{
"name": "fetch_webpage",
"arguments": {
"url": "https://example.com",
"blockResources": true,
"timeout": 60000,
"maxLength": 10000
}
}
高級用法
帶選項獲取網頁內容
node build/index.js --timeout 30000 --no-block-resources https://example.com
進行 REST API 請求
{
"name": "fetch_api",
"arguments": {
"url": "https://api.github.com/repos/nodejs/node",
"method": "GET",
"headers": {
"Accept": "application/vnd.github.v3+json"
}
}
}
谷歌搜索
{
"name": "google_search",
"arguments": {
"query": "web scraping best practices",
"num": 5
}
}
📚 詳細文檔
配置
- 資源阻塞:阻塞圖片、樣式表和字體,以加快抓取速度。
- 超時設置:設置導航和 API 請求的超時時間。
- 自定義請求頭:在高級場景中傳遞自定義 HTTP 請求頭。
- 身份驗證:支持通過用戶名/密碼進行 HTTP 基本身份驗證。
- 環境變量:用於谷歌搜索 API 集成。
谷歌自定義搜索 API
谷歌自定義搜索 API 是免費的,但有使用限制(例如,免費用戶每天可進行 100 次查詢,額外查詢需要付費)。有關配額、定價和限制的完整詳細信息,請參閱 官方文檔。
如何獲取谷歌 API 密鑰和 CX
- 獲取谷歌 API 密鑰:
- 訪問 谷歌雲控制檯。
- 創建/選擇一個項目,然後轉到 API 和服務 > 憑據。
- 點擊 創建憑據 > API 密鑰 並複製它。
- 獲取自定義搜索引擎(CX)ID:
- 啟用自定義搜索 API:
- 在谷歌雲控制檯中,轉到 API 和服務 > 庫。
- 搜索 自定義搜索 API 並啟用它。
將上述配置中的
YOUR_GOOGLE_API_KEY 和 YOUR_CX_ID 替換為你自己的值。
🛠️ 故障排除
- 超時錯誤:如果請求超時,請增加
timeout 參數的值。
- 內容被阻塞:如果內容缺失,請嘗試禁用資源阻塞或調整
resourceTypesToBlock。
- 谷歌搜索失敗:確保在你的環境中設置了
APIKEY_GOOGLE_SEARCH 和 CX_GOOGLE_SEARCH。
- 二進制/未知內容:非文本響應將進行 base64 編碼。
- 錯誤日誌:查看
logs/error-log.txt 文件以獲取詳細的錯誤信息。
🧠 使用建議
點擊查看高級提示
- 除非你需要圖片或樣式,否則使用資源阻塞功能以實現更快、更輕量級的抓取。
- 對於大型頁面,使用
maxLength 和 startIndex 對內容提取進行分頁。
- 始終驗證你的工具參數,以避免出現錯誤。
- 使用環境變量保護你的 API 密鑰和敏感數據。
- 查看 中的 MCP 工具模式,瞭解所有可用選項。
🤝 貢獻與問題反饋
歡迎貢獻代碼!如果你想貢獻代碼,請 Fork 此倉庫並提交 Pull Request。
如果你發現任何問題或有建議,請在倉庫頁面上提交 Issue。
📄 許可證
本項目由 Rayss 開發。
如有問題、改進建議或貢獻代碼,請聯繫作者或在倉庫中提交 Issue。
🎬 演示視頻
點擊直接在瀏覽器中觀看演示
演示視頻 (MP4)
⚠️ 重要提示
谷歌搜索 API 是免費的,但有使用限制。詳情請參閱:谷歌自定義搜索 API 概述
由 Rayss 開發
🚀 開源項目
🛠️ 使用 Node.js 和 TypeScript 構建(需要 Node.js v18+)

📚 目錄
- 概述
- 特性
- 架構
- 安裝
- 使用
- 配置
- 示例
- 故障排除
- 提示與最佳實踐
- 貢獻與問題反饋
- 許可證與歸屬