前言¶
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