MostlyHarmlessxyz/dsh-safe-web-fetch ↗★ 0
dsh-safe-web-fetch
SSRF-resistant HTTP(S) fetch provider for DeepSeek Harness
安装
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:MostlyHarmlessxyz/dsh-safe-web-fetch说明文档
阅读完整 README ↗dsh-safe-web-fetch
dsh-safe-web-fetch 为 DeepSeek Harness 的 web_fetch 能力提供一个更稳妥的网络 provider。它接入 DSH 原有的 ctx.web 和 profile 机制,不另起一套搜索 API,也不改模型侧工具。
它做的事情很明确:域名必须先解析到公共地址,确认安全后才建立连接;每一跳请求都固定到已经检查过的 IP;重定向只允许留在同一个 origin;响应大小、耗时和并发量都有上限。
快速开始
包里带有 DSH bundle,所以一条命令就能安装并加入 profile:
dsh plugin --profile safe add dsh-safe-web-fetch@next
dsh --profile safe --dump-config
bundle 会注册 safe-http provider,打开 DSH 原有的 web_fetch 工具,搜索仍沿用基础 profile 的 provider。部署时建议固定已经测试过的版本:
dsh plugin --profile production add dsh-safe-web-fetch@0.1.0-next.0
也可以固定一个经过审核的 Git commit:
dsh plugin --profile safe add github:MostlyHarmlessxyz/dsh-safe-web-fetch#
Git 安装会在本地构建。如果 pnpm 要求批准构建脚本,按 profile 输出的提示操作;如果希望直接使用预构建文件,安装 npm 包或 tarball 会更简单。
它会做什么
每次 fetch 都会:
- 只接受 HTTP、HTTPS,并拒绝 URL 中的用户名和密码;
- 支持 host allow/deny(默认是精确匹配;需要子域名时写
*.example.com); - 检查全部 DNS 答案,包括 IPv4-mapped IPv6 和各种特殊地址段;
- 通过隔离的 Undici dispatcher 连接,并固定到已经检查的地址;
- 每次同源重定向都重新检查,跨 origin 重定向直接拒绝;
- 限制响应字节数、解码字符数、重定向次数、并发请求数和总耗时;
- 只返回文本类响应(text、HTML、JSON、XML),格式与 DSH 原生结果一致。
插件不会自行添加 Cookie、Authorization、浏览器状态或请求体。公共 IP 也不等于可信内容:prompt injection、恶意文件和 HTML 清洗仍然需要由应用层处理。
配置
默认值刻意保持保守:
| 选项 | 默认值 | 最大值 |
|---|---|---|
maxUrlLength | 2048 | 16384 |
maxResponseBytes | 5000000 | 100000000 |
maxBodyChars | 100000 | 10000000 |
timeoutMs | 30000 | Node 定时器上限 |
maxRedirects | 5 | 20 |