dsh-web-fetch-fix
Manifest valid修复 DSH web_fetch:在开了 VPN/TUN(如 Clash fake-ip)的机器上,抓取公网网页会被误判成内网地址而拒绝。
dsh-web-fetch-fix
修复 DSH web_fetch:在开了 VPN/TUN(如 Clash fake-ip)的机器上,抓取公网网页会被误判成内网地址而拒绝。
用途
开着 TUN/fake-ip 时,web_fetch 抓网页会报:
Error: URL hostname "xxx" resolves to a non-public IP address
装上本插件后即可正常抓取,工具名、参数、其它行为都不变。
为什么这样做
Clash 等 TUN 的 fake-ip 会把公网域名解析成保留段地址(如 198.18.0.53),但 TUN 会把发往这个地址的连接透明路由到真实目标——所以它其实不是内网。官方抓取器 @deepseek-ai/dsh-web-fetch-http 里有一段“不是公网 unicast 就拒绝”的 SSRF 判定,把它挡掉了。
因此做法就是:把官方 web-fetch-http 源码原样复制过来,只删掉这段判定,其余(URL 校验、重定向、解压、charset、大小/超时限制等)完全不动。
与官方的差别
源码在 web-fetch-http/(基于官方 tag dsh-v0.2.1-rc.3)。相对官方只有两处改动:
src/network.ts删除两处公网 IP 判定:
// 删除 1:公网 IP 判定
if (!isPublicIpAddress(entry.address)) {
throw new WebError(`URL hostname "${hostname}" resolves to a non-public IP address`, 'WEB_BLOCKED_URL')
}
// 删除 2:NAT64 变体
if (translatedIpv4 !== undefined && !isPublicIpAddress(translatedIpv4)) {
throw new WebError(`URL hostname "${hostname}" resolves through NAT64 to a non-public IPv4 address`, 'WEB_BLOCKED_URL')
}
src/provider.tsprovider id 由'http'改为'web-fetch-fix'(避免和内置 provider 冲突,并让web.fetchProvider指向本插件)。
其余代码与官方一致。
构建
npm install && npm run build(esbuild 自动发现所有 web-*/src/index.ts,逐个生成 web-*/lib/index.js,DSH 加载的就是这些 JS)。
结构 / 扩展
一个仓库 = 一个 bundle,可包含多个被修补的包:每个 web-* 目录是一个官方 packages/web/* 的原样副本(只改必要几行),产物是 web-*/lib/index.js;package.json 用 exports: { "./web-*": "./web-*/lib/index.js" } 暴露子路径,cordis.patch.yml 里每个包一行 insert。
以后再加一个 web 包,只有两步:
- 把官方
packages/web/<name>原样复制成<name>/,做你那几行改动; - 在
cordis.patch.yml的insert里加一行:
若该包需要改- id: <行 id> name: dsh-web-fetch-fix/<name>web.*的选型(如 searchProvider),把字段并入同一个- id: web的 config(不要新开第二个- id: web,会被整体覆盖)。 之后npm run build即可,package.json不用改。
Comments
Loading…
Similar plugins
by baldovinmarques391-design
修复 VPN 下 web_fetch 被误判非公网地址
★ 0
JavaScript
Oct 17, 2026
dsh plugin --profile web add dsh-web-fetch-vpnby kaminn
A fake-ip-aware ctx.web fetch provider that takes over the stock http provider id: a hostname is accepted when every DNS answer is a placeholder inside the proxy's fake-ip block (198.18.0.0/15 by defa
★ 4
↓ 281/wk
MIT
JavaScript
Oct 3, 2026
dsh plugin --profile web add dsh-web-fetch-fakeipby iwinoid
Fake-IP-aware web.fetch provider for TUN (Mihomo/Clash) DNS environments plus pinned LAN CIDR access
★ 0
MIT
JavaScript
Oct 27, 2026
dsh plugin --profile web add fakeip-compatby 173787247
Registers a wsl-proxy ctx.web fetch provider so official web_fetch uses undici ProxyAgent through HTTP(S)_PROXY instead of connecting from WSL to a DNS-pinned public IP (the official path that produce
★ 1
MIT
JavaScript
Nov 3, 2026
dsh plugin --profile web add dsh-wsl-fetchby Yurzi
Configurable non-public address allowlists for DeepSeek Harness web_fetch
★ 23
↓ 175/wk
MIT
TypeScript
Oct 21, 2026
dsh plugin --profile web add dsh-web-fetch-enhancedby Yidien
dsh 外挂式网络路由插件:按域名勾选走本地代理(Clash 等),其余直连;内置嗅探,设置页勾选即生效。
★ 0
↓ 144/wk
TypeScript
Nov 3, 2026
dsh plugin --profile web add dsh-host-router