前言¶
DeepSeek Harness(DSH)内置了 web_fetch 和 web_search 工具,两者都采用最简化的实现:HTTP(S) GET,不执行 JavaScript,不附带复杂的 User-Agent。这对静态网页是很好的默认行为,但对单页应用(SPA)来说,内容需要 JavaScript 渲染后才能获取,且往往需要结构化抽取而不是一整段 Markdown 文本。dsh-scrapling 为 DSH 提供了浏览器渲染、结构化抽取、会话管理、后台爬虫和页面问答等能力,所有这些功能由一个常驻的 Python 进程提供。
插件定位¶
dsh-scrapling 是一个为 DSH 提供网页抓取能力的插件,基于 Scrapling 实现。它运行在 DSH 的宿主进程中,不需要额外的浏览器实例下载。维护者是 JayYuen666。
插件通过将 Scrapling 的能力注册为 DSH 的工具,让模型能够调用浏览器渲染、CSS/XPath 抽取、自适应选择器、会话管理、网络抓包和 Spider 爬虫等功能。
核心功能¶
浏览器渲染¶
插件在常驻 Python 进程中启动浏览器引擎(通过 patchright),执行 JavaScript 并返回完整的渲染 DOM。与 DSH 内置的 web_fetch 相比,它能获取动态加载的内容。
结构化抽取¶
通过 CSS/XPath 选择器抽取数据,返回结构化结果而非 Markdown 墙。插件支持将选择器结果转换为 Markdown 表格或结构化行。
自愈选择器¶
Scrapling 的 adaptive 模式会维护一个 SQLite 指纹数据库。当网站 HTML 结构变化(例如类名重命名)时,自适应选择器可以定位到元素的新位置,而不是返回 None。
会话与登录态¶
常驻进程会保存 Cookie 和会话状态。这意味着模型可以在多次工具调用之间保持登录态,避免重复登录。同时支持会话级别的网络抓包记录。
后台爬虫¶
插件内置 Spider 爬虫功能,可以自动发现和爬取网站链接。
页面问答¶
scrapling_answer 工具会调用模型对页面内容进行问答,适合需要理解页面语义的场景。
条件注册¶
插件启动时会探测环境能力,只注册真正可用的工具。模型不会在调用一个保证失败的工具上浪费一次推理。
安装与启用¶
安装命令¶
dsh plugin --profile web add @jayyuen66/dsh-scrapling
移除命令:
dsh plugin --profile web remove @jayyuen66/dsh-scrapling
环境要求¶
- Node.js >= 22.12
- DSH 版本 ^0.2.1-rc.3
- Python 3.14+,并安装 Scrapling
安装 Scrapling 和浏览器引擎¶
pip install "scrapling[rag]>=0.5,<0.6"
python -m patchright install chromium
版本说明¶
插件开发并验证于 Scrapling 0.5 版本。接口包括 Selector、Spider、SessionManager 和转换器的去噪辅助函数。0.6 以下版本的 guard 仍会运行,但反注入清理和爬取路径可能不符合文档描述。0.5 版本中浏览器后端仅支持 patchright(旧版独立 stealth fetch 已移除)。
配置与使用¶
工具列表¶
插件提供的工具包括(根据环境能力条件注册):
scrapling_render:浏览器渲染页面scrapling_extract:CSS/XPath 抽取数据scrapling_adaptive:自适应选择器抽取scrapling_session_network:会话网络抓包scrapling_crawl:Spider 爬虫scrapling_answer:页面问答(会额外调用一次模型)
替换内置 fetch 和 search¶
插件提供了工具可以替代 DSH 的内置 web_fetch 和 web_search,但需要通过配置启用。
设置¶
插件支持多种设置项,包括:
extractionType:抽取类型(默认为markdown)blockWebrtc:是否阻止 WebRTC 泄露- 其他配置项见官方文档
代理¶
插件支持代理配置,具体方式见官方文档。
安全¶
插件在宿主进程内运行,权限与 DSH 相同。安装前应检查源码与许可证。
数据与隐私¶
插件不下载浏览器引擎,浏览器由用户自行提供。所有数据在本地处理。
已知边界¶
- 浏览器引擎完全由用户负责,插件不下载任何浏览器
- 需要确保 Python 环境中已安装 Scrapling
- 依赖的接口未保证为稳定 API 表面
- 仅支持 Scrapling 0.5 版本,0.6 以上版本未经过充分测试
适用场景¶
- 需要抓取动态加载内容的单页应用
- 需要结构化抽取而非 Markdown 文本的场景
- 需要保持登录态的会话管理
- 需要网络抓包分析请求的场景
- 需要爬取网站链接的 Spider 任务
- 需要模型理解页面语义的问答场景
注意事项¶
插件以当前 DSH 进程的权限运行。安装前应检查源码与许可证。
总结¶
dsh-scrapling 通过将 Scrapling 的浏览器渲染、结构化抽取、会话管理、网络抓包和 Spider 爬虫能力集成到 DSH 中,解决了 DSH 内置 web_fetch 无法执行 JavaScript 和无法提供结构化抽取的问题。所有功能由一个常驻 Python 进程提供,避免了进程启动开销,同时保持了会话状态。