抓取任意 http/https 网页,提取标题、描述、正文、标题结构与链接,输出字符/词数、阅读时长、语言等统计与高频关键词;支持下载内容图片到会话工作区供视觉分析,并通过 scrape.imageAnalyzer 服务分发给已注册的识图分析器。
安装
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:131CDA1/dsh-scrape-webpage
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本。请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
网页抓取与分析插件 —— DeepSeek Harness 组合插件(Host-only,零依赖)。
用爬虫读取网站内容并做分析:注册模型工具 scrape_webpage,抓取网页正文,提取标题、页面描述、H1–H6 标题结构、链接列表,统计字符数/词数/预计阅读时长与语言倾向,计算高频关键词(中文二元组 + 英文单词,含停用词过滤);可选下载页面内容图片供视觉分析,并提供 scrape.imageAnalyzer 扩展服务供识图插件接入。
✨ 功能特性
- 网页抓取:http/https,自动重定向,非 2xx 状态码优雅返回
- 内容提取:标题、页面描述、正文(截断可调)、H1–H6 标题结构、链接列表(上限 100)
- 自动分析:字符数、词/字数、标题数、链接数、预计阅读时长、语言倾向(中/英/混合)、高频关键词 Top30
- 图片下载:提取
<img src/data-src/srcset>(相对路径自动归一化,过滤图标/logo 等噪音),下载到会话工作区.scrape-images\,返回本地路径供视觉模型read_image分析 - 识图插件接口:发布
scrape.imageAnalyzer服务,识图插件注册分析器后,图片自动交给分析器并把结果附在工具输出中 - 安全模型:默认沙箱内抓取;HTTPS 沙箱 TLS 受限时按 pwsh 工具的升级契约,显式
sandbox_permissions+ 审批一次性授权 - bundle 打包:package.json 声明
dsh.bundle.patch,dsh plugin --profile <name> add安装后自动注册为组合层,无需手动编辑 cordis.patch.yml
📦 安装
本包是 bundle 包(package.json 中 dsh.bundle.patch 指向 cordis.patch.yml)。dsh plugin 安装成功后会自动把它加入 profile 的 dsh.profile.bundles,重启即加载。
前置:
dsh plugin转发给 pnpm,需要pnpm在 PATH 上;首次使用会自动初始化目标 profile。
方式 A:dsh plugin(推荐)
# ① 发布到 npm 后,registry 安装
dsh plugin --profile web add dsh-scrape-webpage
# ② 或直接从 GitHub 安装(仓库推送后即可)
dsh plugin --profile web add "github:131CDA1/dsh-scrape-webpage"
# ③ 或本地目录调试(注意:必须显式 file: 前缀)
dsh plugin --profile web add "file:D:\path\to\dsh-scrape-webpage"
重启 DSH 后生效。卸载:dsh plugin --profile web remove dsh-scrape-webpage。
⚠️ 本地目录请用
file:前缀。裸路径 / 相对路径会被 pnpm 当作link:协议, 在 hoisted 布局下不会物化到 node_modules 顶层,导致启动时无法解析该包。
方式 B:手动复制(离线兜底)
git clone https://github.com/131CDA1/dsh-scrape-webpage.git
Copy-Item -Recurse .\dsh-scrape-webpage "$env:DSH_HOME\profiles\web\node_modules\dsh-scrape-webpage"
再把 cordis.patch.yml 中的 insert 行合并进该 profile 的 cordis.patch.yml:
- insert:
- id: scrape-webpage
name: dsh-scrape-webpage
重启 DSH 生效。
🚀 使用
对话中直接说:"帮我抓取 https://example.com 并分析"。工具参数:
| 参数 | 类型 | 说明 |
|---|---|---|
url |
string(必填) | 要抓取的网页地址(http/https) |
maxChars |
number | 返回正文最大字符数,默认 30000,范围 1000–100000 |
images |
number | 同时下载内容图片数(上限 6,默认 0),图片保存到 .scrape-images\<时间戳>\,返回本地路径供 read_image 查看 |
sandbox_permissions |
string | 仅 danger-full-access。HTTPS 沙箱受限报错提示 escalation available 后,重试同一次抓取时携带;审批弹窗由用户决定 |
justification |
string | 与 sandbox_permissions 配套:一句话说明为何需要更宽权限 |
输出:成功 { url, statusCode, truncated, title, description, headings, links, text, stats, keywords, images, imageNote, imageAnalysis },失败 { error, url }。
🖼 图片下载与识图
方式一:视觉模型直接看图。 带 images: N 抓取后,对返回的 relPath 调用 read_image 即可。
方式二:识图插件接入。 插件发布服务 scrape.imageAnalyzer(宿主 realm),识图插件注册分析器:
const registry = ctx.get('scrape.imageAnalyzer') // 可选服务,注意 undefined 检查
if (registry !== undefined) {
ctx.effect(() => registry.register({
id: 'my-vision',
async analyze(image) {
// image = { url, filePath, relPath, mime, size }(JSON 安全)
const text = await yourVisionBackend(image.filePath)
return { text } // 返回 null 表示不处理
},
}))
}
注册后,每次带 images > 0 的抓取都会把图片自动交给分析器,结果以
imageAnalysis: [{ analyzerId, relPath, text }] 附在工具输出中。
🔒 安全模型
- 默认在沙箱内(会话策略)执行:http 页面直接可用;https 页面因沙箱 TLS 凭据受限而失败时,结果携带
escalation available提示。 - 模型显式携带
sandbox_permissions="danger-full-access"+justification重试时,插件经审批服务询问用户,allowed-once只授权当次调用。 - 仅 http/https 协议;正文/图片下载均有截断上限;超时受控(工具 180s、页面 30s、单图 20s)。
🖥 平台要求
- 有
webfetch provider 的部署:直接走该 provider。 - 无 fetch provider 的部署(内置回退):经
shell服务调用curl.exe(Windows 10 1803+ 自带;其他平台请确保 PATH 有 curl)。 - 依赖宿主服务:
tools、systemPrompt、timer(硬依赖);web、shell、sandboxPolicy、approval、sessions(可选,缺失时优雅报错)。
🏷 发行版
手动发布
仓库的 release/ 目录包含预构建发行版文件:
dsh-scrape-webpage-v1.0.0.zip 与 SHA256SUMS。在 GitHub 上创建 Release 时直接作为附件上传即可。
📄 License
链接
同类插件
Lum1104/dsh-browser#bridge-browser★ 301
Chrome 侧边栏扩展,让 DSH 直接操控你的浏览器,无需视觉能力。
liustack/modsearch★ 152
纯文本 agent 的联网搜索桥:搜索网页与 X,返回结构化 JSON 证据(search/fetch/引用)。
anweat/dsh-web-search-pro★ 26
增强型、可持久化的网页搜索:多引擎路由(DeepSeek/Exa/DDG/Bing/Jina + GitHub/B站/YouTube/V2EX/小红书/Twitter/Reddit/RSS)、SQLite+LRU 缓存、userscript 风格抽取、Playwright 渲染。
DDDMUC/dsh-free-search★ 21
DSH 免费搜索插件:7 个引擎(DuckDuckGo/Bing/SearXNG 免费 + Exa/Perplexity/DeepSeek 付费)、自动回退、设置页 UI(API key 输入 + 官网链接)、web_fetch、引擎测试工具。
2672243194/dsh-read-url★ 11
读取网页返回干净正文:中文编码自动识别(GBK/GB2312/UTF-8/Big5)、噪音过滤、紧凑文本/Markdown、offset 续读、可选 SPA 渲染、批量读取与整站爬取。
wqty123/dsh-browser★ 7
共享真实浏览器:用户可观看并随时接管的原生 Electron 窗口,agent 通过 CDP 驱动,内置 20 个 browser_* 工具(打开/快照/执行/填表/截图/下载/登录态);任务级会话隔离、登录态持久化、人机验证识别,纯 `dsh web` 无需桌面外壳即可自托管。