dsh-proxy-router:本地分流代理插件

DSH(DeepSeek Harness)在使用 export https_proxy=... 環境變量時,所有流量都會經過上游代理,包括本地的 API 調用和國內網站,這會帶來不必要的延遲和配置困擾。dsh-proxy-router 插件通過本地路由代理,將“何時走代理”轉化爲可維護的規則表。

核心功能

  • 本地分流代理:所有出站流量先命中本地路由代理,再根據規則決定是走上游代理還是直連。
  • Web 設置頁面:提供可視化配置,支持熱重載。
  • 策略匹配:僅規則匹配的被牆域名走上游代理,其餘(國內、內網、未知)直連。
  • 覆蓋範圍:支持 Main-process fetch()、web_fetch 工具、bash 子進程(curl、git 等)。
  • 規則層:支持本地規則文件(優先級最高)、遠程塊列表(Loyalsoldier/clash-rules、gfw.txt、greatfire.txt)、內置種子列表。
  • 安全默認:Loopback 和 LAN 地址始終直連。

安裝與啓用

通過官方命令安裝插件:

dsh plugin --profile web add @yangzhe1991/dsh-proxy-router

安裝完成後需要重啓 dsh web。默認情況下插件處於關閉狀態(Master Switch 關閉),此時插件不監聽端口、不接管代理策略,網絡行爲與安裝前一致。要使用分流功能,需在設置頁手動開啓。

配置與使用

設置頁配置

在 Settings 側邊欄找到 分流代理 分區,以下是主要配置項:

  • Enable routing proxy (總開關):默認關閉。開啓後插件接管流量,關閉則恢復原狀。
  • Upstream proxy (上游代理):填寫上游代理地址,如 http://192.168.3.47:12801。如果留空,插件會回退到環境變量 https_proxy 或 http_proxy。
  • Route when nothing matches (默認路由):當規則不匹配時,默認走直連。
  • Local router bind address (監聽地址):插件綁定的本地地址,出於安全限制,僅允許 Loopback (如 127.0.0.1:17890)。如果端口被佔用會自動回退到隨機端口,爲 0 則由 OS 選擇。
  • Connect timeout (連接超時):僅影響連接建立,不影響流式響應。

本地規則編輯

設置頁底部可以直接編輯本地規則文件 ~/.dsh/proxy-router/rules.txt。規則逐行匹配,優先級最高。

# 註釋以 # 開頭
proxy: some-blocked-site.com    # 命中規則走上游
direct: cdn.example.cn          # 命中規則直連
example.com                     # 無類型默認走上游
1.2.3.4                         # 支持 IP

支持通配符(*.example.com、.example.com)和 dnsmasq 風格的 server=/example.com/114.114.114.114。

工作原理

流量流向如下:

DSH main process / web_fetch / bash
        │
        ▼
Local routing proxy (127.0.0.1:17890)
        ├── 匹配本地規則文件
        ├── 匹配遠程塊列表
        ├── 匹配內置種子列表
        └── 默認路由

規則層按順序匹配,優先級從高到低:本地規則 > 遠程列表 > 內置列表 > 默認路由。Loopback (127.0.0.0/8)、內網地址 (10/8, 172.16/12, 192.168/16) 及單標籤主機名(如 nas)永遠不會被轉發給上游代理。

注意事項

  • 默認關閉:安裝後必須在設置頁手動開啓。
  • 安全性:本地代理僅綁定 Loopback 地址,禁止綁定 0.0.0.0 或 LAN 地址,防止暴露開放代理。
  • 熱生效:配置項爲 volatile,修改後立即生效,無需重啓進程。

dsh-proxy-router 通過規則表管理代理行爲,將上游代理地址與路由策略分離,適合需要精細控制代理流量的場景。

GitHub 倉庫

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

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

小夜