抓取任意网页并转成干净文本、Markdown 或 JSON
27.2/100
综合分
2
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/9/27 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add withlovehub/dsh-webfetch该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · search
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 80 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🟢 扫描:未发现敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描未发现敏感能力:最多只发网络请求、读取自身元数据或只读文件,未发现执行命令、文件写入或敏感信息读取。
发起外部网络请求
查看扫描证据(共 1 处,展示前 1 条)
- 发起网络请求server.js:233
const res = await fetch(url, {
扫描于 2026/11/1(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 网页转干净文本
- 遵守robots.txt
- 分块读取
零依赖 webfetch MCP 服务器,适配 DeepSeek Harness 和任意 MCP 客户端:输出干净文本 / markdown / 原始 HTML / JSON,遵守 robots.txt,支持分块读取,带 SSRF 防护。
README
由 DeepSeek 最新模型翻译生成dsh-webfetch
test
一个零依赖的 webfetch MCP 服务器:获取任意 http(s) URL 并返回干净的内容——文本、简化 Markdown、原始 HTML 或格式化 JSON。专为 DeepSeek Harness(dsh)打造,可与任何支持 stdio 服务器的 MCP 客户端配合使用。
- 零依赖:单个 server.js,手写的 stdio JSON-RPC 2.0——无需 npm install,无 SDK 版本冲突。
- 对模型友好的输出:正文提取(/)、实体解码、绝对链接、图片 alt 文本、分块读取。
- 礼貌且安全:遵守 robots.txt、Cloudflare 挑战重试、SSRF 防护、限制为 5 MiB 的读取。
展开完整文档(README 剩余 1 节)
dsh-webfetch
test
一个零依赖的 webfetch MCP 服务器:获取任意 http(s) URL 并返回干净的内容——文本、简化 Markdown、原始 HTML 或格式化 JSON。专为 DeepSeek Harness(dsh)打造,可与任何支持 stdio 服务器的 MCP 客户端配合使用。
- 零依赖:单个 server.js,手写的 stdio JSON-RPC 2.0——无需 npm install,无 SDK 版本冲突。
- 对模型友好的输出:正文提取(/)、实体解码、绝对链接、图片 alt 文本、分块读取。
- 礼貌且安全:遵守 robots.txt、Cloudflare 挑战重试、SSRF 防护、限制为 5 MiB 的读取。
设计参考
对比了三个现有实现(2026-08),并以零依赖的等效方案采纳了其中有用的部分:
| 来源 | 采纳的设计 |
| 官方 mcp-server-fetch | startIndex 分块读取、遵守 robots.txt、原始模式 |
| OpenCode tool/webfetch.ts | 感知格式的 Accept 请求头、Cloudflare 挑战 → 纯 UA 重试、5 MiB 限制读取 |
| pi-web-access | 正文优先(轻量级 Readability 启发式)、SSRF 防护、相对链接绝对化、图片 alt |
刻意未采纳:@mozilla/readability、turndown、undici、unpdf——无依赖的等效方案已覆盖常见场景。
快速开始
需要 Node.js ≥ 20(使用全局 fetch)。
git clone https://github.com/withlovehub/dsh-webfetch.git
cd dsh-webfetch
Optional but convenient: puts the dsh-webfetch command on your PATH
npm link # or: npm install -g .
node test.js # 32 in-process test cases — all green means your Node is ready
该服务器在 stdio 上使用以换行符分隔的 JSON-RPC 2.0。一旦发布到 npm,一行命令即可运行:npx -y dsh-webfetch。
手动对服务器进行冒烟测试(预期在 stdout 上收到一个 initialize 响应和一个 tools/list 响应):
printf '%s\n' \
'{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"probe","version":"0"}}}' \
'{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}' \
| node server.js
PowerShell 等效命令:
@(
'{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"probe","version":"0"}}}',
'{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}'
) | node server.js
客户端设置
该服务器是一个普通的 stdio MCP 服务器——任何 MCP 客户端都可以使用。在下面选择你的客户端;每个示例都使用 node + server.js 的路径。两个快捷方式能让事情更轻松:
- 路径风格:即使在 Windows 上也使用正斜杠(C:/dev/dsh-webfetch/server.js)——Node 接受它们,而且你能避免 JSON 反斜杠转义。
- 执行 npm link 之后:将 command 设置为 dsh-webfetch,并完全去掉 args。
大多数客户端要求绝对路径;${workspaceFolder} 风格的变量仅在文档说明的地方有效(VS Code)。
DeepSeek Harness
文件:~/.dsh/cordis.patch.yml
- insert:
- id: mcp-webfetch
name: '@deepseek-ai/dsh-mcp-client'
config:
serverName: web
transport: stdio
command: node
args:
- '/path/to/dsh-webfetch/server.js'
重启 dsh web;模型将获得 mcp__web__fetch 工具。
Claude Desktop
文件:claude_desktop_config.json(Windows:%APPDATA%\Claude\,macOS:~/Library/Application Support/Claude/,Linux:~/.config/Claude/)。之后重启 Claude。
{
"mcpServers": {
"webfetch": {
"command": "node",
"args": ["C:/path/to/dsh-webfetch/server.js"]
}
}
}
Claude Code
文件:项目根目录下的 .mcp.json,或从 CLI 添加:
claude mcp add webfetch -- node /path/to/dsh-webfetch/server.js
{
"mcpServers": {
"webfetch": {
"type": "stdio",
"command": "node",
"args": ["/path/to/dsh-webfetch/server.js"]
}
}
}
使用 claude mcp list 验证。
Cursor
文件:项目中的 .cursor/mcp.json(或 Cursor Settings → MCP → Add new MCP server)。
{
"mcpServers": {
"webfetch": {
"command": "node",
"args": ["C:/path/to/dsh-webfetch/server.js"]
}
}
}
在 Cursor Settings → MCP 中验证(绿色状态点)。
VS Code Copilot
文件:.vscode/mcp.json —— 支持 ${workspaceFolder} 变量,因此克隆的仓库可以自行配置:
{
"servers": {
"webfetch": {
"type": "stdio",
"command": "node",
"args": ["${workspaceFolder}/server.js"]
}
}
}
验证:命令面板 → MCP: List Servers。
OpenCode
文件:opencode.json(项目)或全局配置。
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"servers": {
"webfetch": {
"type": "local",
"command": ["node", "/path/to/dsh-webfetch/server.js"]
}
}
}
}
使用 opencode2 mcp list 验证(v1:opencode mcp list)。
其他任何客户端
任何支持 stdio 的 MCP 客户端都可以使用相同的 command + args 形式——该协议是通用的。
工具参数
| 参数 | 类型 | 默认值 | 描述 |
| url | string(必填) | — | 完整 URL,仅限 http/https(拒绝 file://) |
| format | text / markdown / html / json | text | text = 清理后的内容;markdown = 保留链接/标题/图片;html = 原始 HTML;json = 格式化打印的 JSON |
| maxChars | 1000–200000 | 60000 | 本次调用返回的最大字符数 |
| startIndex | 0–10000000 | 0 | 从此字符索引开始获取内容——与 maxChars 搭配使用,可分块读取长页面 |
| timeoutMs | 3000–120000 | 20000 | 请求超时 |
行为
- 主内容优先:如果 / 块的文本占页面的 ≥ 30%,则只返回该块——导航/页脚噪声会被过滤掉(轻量级 Readability)。
- HTML 清理:丢弃 script/style/svg,块级标签转换为换行符,解码实体,提取 。
- Markdown 模式:相对 href/src 会基于最终 URL 转为绝对地址(javascript:/mailto: 降级为纯文本),图片变为 alt,h1–h6 变为 ATX 标题;包裹图片的链接保留 alt 文本。
- JSON API:自动 JSON.parse + 缩进;无效 JSON 返回 isError 并附带预览,而不是静默传递原始文本。
- 二进制:仅返回元数据(status/content-type/bytes)——字节永远不会被送入模型上下文。
- robots.txt:默认遵守(先查 dsh-webfetch 组,再查 组,最长前缀匹配);被阻止的 URL 返回 isError;结果缓存 30 分钟;设置 DSH_WEBFETCH_IGNORE_ROBOTS=1 可禁用。根据 RFC 9309,空的 Disallow: 表示全部允许。
- Cloudflare 质询:在 403 + cf-mitigated: challenge 时,使用透明 UA 重试一次。
- SSRF 防护:拒绝 metadata.google.internal、169.254.、0.0.0.0。
- 有界读取:每个响应最大 5 MiB(声明限制 → 报错;未声明 → 流式截断)。
- 错误:失败返回 MCP isError: true;诊断信息仅输出到 stderr(stdout 是协议通道)。
已知限制
- 不执行 JavaScript——SPA 返回原始外壳,而不是渲染后的应用。
- 不支持 PDF 提取 / 真正的 Readability / 代理支持(零依赖路线;在实际需要时再添加)。
- href 内含引号的畸形 HTML 会降级为纯文本,而不是崩溃。
许可证
MIT预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
withlovehub/dsh-webfetch
抓取任意网页并转成干净文本、Markdown 或 JSON
相关插件 · 搜索 / 抓取
LLM 知识平台Tencent/WeKnora
概览 ·快速开始 ·新特性 ·功能 ·客户端 ·文档 ·开发
★ 36,161已汉化DSH
72.1
智能体记忆系统MemTensor/MemOS
MemOS 2.0 Stardust星尘
★ 12,195已汉化DSH
71.2
跨代理记忆库zilliztech/memsearch
跨平台语义记忆,专为 AI 编程智能体打造。
★ 2,799已汉化DSH
70.9
技能语料库EverMind-AI/SkillCorpus
SkillCorpus 能给你什么
★ 694已汉化DSH
69.7
代码图谱记忆syncable-dev/memtrace-public
你的智能体值得拥有结构化记忆。
★ 509已汉化MCP
67.9
AnySearch 搜索插件anysearch-team/anysearch-dsh
AnySearch 网页搜索服务商,为 DeepSeek Harness(DSH)提供高级搜索工具
★ 457已汉化DSH
66.6