DeepSeek Harness 插件:dsh-scrapling

前言

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:页面问答(会额外调用一次模型)

插件提供了工具可以替代 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 进程提供,避免了进程启动开销,同时保持了会话状态。

插件目录页
GitHub 仓库

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye