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 倉庫

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

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

小夜