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 仓库

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

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

小夜