前言¶
DeepSeek Harness (DSH) 的 web_fetch 工具默認獲取網頁的原始 HTML。對於現代單頁應用(SPA)或需要客戶端 JavaScript 渲染的內容,這種直接抓取往往只能得到一個空殼。dsh-web-fetch-playwright 插件爲 web_fetch 提供了一個基於 Playwright 和 Chrome DevTools Protocol (CDP) 的後端,讓頁面在真實的瀏覽器中渲染,並經過清洗轉換爲 Markdown。
插件介紹¶
該插件由用戶 chendefine 維護,屬於聯網工具類別,開源協議爲 MIT。它的核心作用是解決 DSH 原生抓取工具在處理動態網頁時的內容缺失問題,同時提供一套標準化的 Markdown 輸出流程。
核心功能¶
真實瀏覽器渲染¶
插件會啓動真實的瀏覽器實例(本地 Playwright 或遠程 CDP 連接),按用戶瀏覽器的視角加載頁面。這能捕獲通過 JavaScript 動態生成的內容,解決了原生抓取工具無法獲取 SPA 內容的問題。
內容去噪與轉換¶
渲染後的內容會經過一個標準化的去噪管道:
1. Readability:提取正文主體,忽略導航、側邊欄和廣告。
2. DOMPurify:移除佈局干擾標籤和腳本。
3. Turndown + GFM:將 HTML 轉換爲 Markdown,並應用 GitHub 風格的格式。
4. 大小限制:自動將內聯的 data: 圖片(如構建工具嵌入的截圖)替換爲佔位符,防止正文內容過大。
雙後端支持¶
插件提供兩種運行模式:
* 本地模式:直接在本地啓動 Chromium。可以通過配置路徑、使用 $PATH 中的 playwright CLI 或使用內置的 playwright-core。
* CDP 模式:連接到一個已經運行並開啓調試端口(--remote-debugging-port)的瀏覽器實例。
會話管理¶
在 CDP 模式下,支持兩種上下文模式:
* 共享模式:使用遠程瀏覽器的真實配置文件,保留 Cookies 和登錄狀態。
* 隔離模式:爲每次抓取創建新的上下文,不保留任何狀態。
實時配置與預算控制¶
插件內置配置卡片,無需重啓即可調整:
* 併發控制:限制同時進行的渲染任務數(默認本地爲 4,CDP 爲 50),超出限制的請求會快速失敗並提示重試。
* 資源限制:設置請求截止時間、正文字符上限及圖片子請求限制。
* 挑戰等待:自動識別 Cloudflare 等驗證頁面,在同一個標籤頁內等待瀏覽器驗證通過,避免直接返回驗證頁作爲內容。
安裝與啓用¶
插件已預構建,安裝時無需手動編譯。確保環境滿足要求(DSH web 配置文件、Node.js ≥ 20)。
- 執行安裝命令:
dsh plugin --profile web add dsh-web-fetch-playwright
- 安裝完成後,必須重啓
dsh web才能加載插件。
配置與使用¶
重啓後,在 DSH 的設置界面中找到“插件配置”,即可看到“Playwright 網頁爬取”卡片。在這裏可以:
* 切換後端(本地或 CDP)。
* 設置瀏覽器路徑或 CDP 端點。
* 開啓/關閉去噪功能。
* 調整併發數和 Cloudflare 等待時間。
注意事項¶
- 環境依賴:本地模式需要 Playwright 已安裝瀏覽器二進制文件或瀏覽器路徑可用。
- CDP 依賴:使用 CDP 模式需要確保有一個瀏覽器進程正在運行並監聽調試端口。
- 權限與安全:插件以當前 DSH 進程的權限運行,安裝前建議查看源碼確認行爲符合預期。
更多信息¶
- 目錄頁:https://www.skillhub.cn/plugins/chendefine/dsh-web-fetch-playwright
- GitHub:https://github.com/chendefine/dsh-web-fetch-playwright