dsh-web-fetch-proxy: 代理出網 WebFetchProvider

前言

DeepSeek Harness (DSH) 的 ctx.web seam 提供了網頁抓取能力。內置的 WebFetchProvider 通常會校驗解析出的 IP 是否爲公網單播地址,在 fake-ip 或 TUN 模式下,域名會被解析到 198.18.0.0/15 保留段,導致任意網頁都報 resolves to a non-public IP address 錯誤。

dsh-web-fetch-proxy 爲 DSH 添加了一個名爲 http-proxy 的 web_fetch provider。它使用 undici 的 ProxyAgent,將請求的域名解析與出網完全交給用戶顯式配置的 HTTP(S) 代理。這繞過了本地 DNS 校驗,解決了 TUN 環境下的連接問題。

定位

這是一個純註冊表擴展,不修改 DSH 核心。它通過 Cordis Patch 機制,將 ctx.web 的默認行爲切換爲通過外部代理進行請求。

安裝與啓用

安裝器要求 PATH 中存在 dsh 版本 0.1.2-alpha.3 或 0.1.5-rc.1,以及 pnpm。

  1. 執行官方安裝命令:
    npx --yes github:shaomingbo/dsh-web-fetch-proxy#v0.1.2
  1. 使用 --profile 指定目標 profile(默認爲 web):
    npx --yes github:shaomingbo/dsh-web-fetch-proxy#v0.1.2 --profile <name>
  1. 安裝完成後,需要重啓對應 profile 並在 Web 端強刷新以加載新配置。

配置與接線

本插件通過 Cordis Patch 機制接管 web seam 的 fetchProvider。配置分爲兩部分:插件自身的配置和接管 seam 的配置。

  1. 定義插件配置:在 profile patch 層添加 web-fetch-proxy 條目,並配置 proxyUrl。
    # 1) 插件條目
    - id: web-fetch-proxy
      config:
        proxyUrl: http://127.0.0.1:7890
        # 可選參數(默認值與內置一致):
        # maxResponseBytes: 5000000
        # maxBodyChars: 100000
        # timeoutMs: 30000
        # maxRedirects: 5
        # userAgent: deepseek-harness/0.0.1 (+https://github.com/deepseek-ai)
  1. 接管 web seam:修改 web seam 的配置,將 fetchProvider 指向插件 ID http-proxy。
    # 2) 接管 web seam
    - id: web
      config:
        searchProvider: deepseek-official
        fetchProvider: http-proxy
  1. 重載與驗證:
    • 配置變更後,必須重啓 profile 並強刷新 GUI。
    • 運行煙霧測試驗證連接:
        develop dsh-web-fetch-proxy smoke:proxy

兼容性與限制

  • DSH 版本兼容:僅測試併兼容 DSH 0.1.2-alpha.3 和 0.1.5-rc.1。安裝器會拒絕其他版本。
  • 代理信任:本插件不做本地 DNS 校驗,解析完全交給配置的代理。代理即信任邊界,它有權觀察並篡改所有請求與響應。
  • 無 HMR:不承諾熱更新,配置變更需重啓。
  • 安全語義:插件不帶 cookie,不使用環境憑據,URL 中不得內嵌憑據。

結語

dsh-web-fetch-proxy 是一個解決 TUN / fake-ip 環境下 DSH 網絡抓取問題的輕量級插件。它通過引入外部代理作爲信任邊界,確保了在特殊網絡環境下的可用性。

  • GitHub: https://github.com/shaomingbo/dsh-web-fetch-proxy
  • 目錄: https://www.skillhub.cn/plugins/shaomingbo/dsh-web-fetch-proxy
羽毛球分组比赛记分
小程序二维码

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

小夜