dsh-web-fetch-proxy

前言

在开启了 TUN 模式代理(Clash Verge / Mihomo、sing-box、Surge 等)的 Windows 上,DSH 的 web_fetch 对所有域名都会失败。报错信息显示 DNS 解析成功,但解析出的地址被判定为“非公网地址”从而被主动拦截。这是因为 TUN 模式使用 fake-ip 机制,返回的是非公网 IP(如 28.0.0.x 或 fc00::/7),而 web_fetch 内置的 SSRF 防护会拒绝这些地址。

插件介绍

这是一个 DSH 插件,旨在让内置 web_fetch 经由本地代理出网,从而绕过 TUN 模式下 fake-ip 地址被 SSRF 防护拦截的问题。该插件由 1499501762 维护,分类为联网工具,许可证为 MIT。

核心功能

  1. 启动时在宿主进程内找到本地 HTTP 代理。
  2. 为整个进程安装 proxied 策略。
  3. 校验路由确实变为 proxied: true。
  4. 跳过本地 DNS 校验(绕过 SSRF 拦截)。
  5. 通过环境变量或配置支持自动检测。
  6. 提供 UI 设置界面。
  7. 与 dsh-network-proxy 不冲突。

安装与启用

安装插件:

dsh plugin --profile web add github:1499501762/dsh-web-fetch-proxy

该插件需要 Node.js >= 20.18.1。

安装后重启 DSH。启动日志中出现以下信息表示生效:
[web-fetch-proxy] web_fetch now tunnels through http://127.0.0.1:7897 (source: clash-config:...); the local DNS check is bypassed.

典型用法

安装完成后,可以通过以下方式配置:
1. 通过 UI 设置:进入 设置 -> 常规 -> Web Fetch 代理。在「Web Fetch 代理」一栏中,可以选择自动检测、手动输入代理地址或关闭。
2. 通过命令行设置命名空间:web-fetch-proxy settings proxy。
3. 通过环境变量:set DSH_WEB_FETCH_PROXY=http://127.0.0.1:7897。
4. 验证插件状态:npm run verify。

注意事项

  • Fail-open 策略:插件运行时不抛出错误,仅在日志中报告失败。
  • 不覆盖宿主路由:启动时若宿主已有 proxied 路由,插件不会覆盖。
  • 代理发现顺序:proxy: auto 时,按以下顺序探测:环境变量 -> HTTP_PROXY -> 本地 Clash 配置 -> WinINET -> 常见端口(7897、7890 等)。
  • 兼容性:与 dsh-network-proxy 共用 Dispatcher 但不影响 web_fetch。两者不冲突。

结尾

该插件为在 TUN 模式下使用 web_fetch 提供了可行的解决方案。更多细节可参考:
- DSH 插件目录
- GitHub 仓库

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

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

小夜