1499501762/dsh-web-fetch-proxy ↗★ 0
dsh-web-fetch-proxy
让内置Web获取功能经由本地代理出网 适合使用Clash等代理且遇到TUN模式SSRF拦截问题的用户。
同名包的其他仓库
安装
$
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:1499501762/dsh-web-fetch-proxy说明文档
阅读完整 README ↗配置页面
重启 DSH 后,设置 → 常规 里会出现「Web Fetch 代理」一栏:
| 控件 | 作用 |
|---|---|
| 自动检测 / 手动代理 / 关闭 | 写 web-fetch-proxy settings 命名空间的 proxy 字段,立即生效,无需重启 |
| 代理地址输入框 | 手动模式下填 http://127.0.0.1:7897 或 127.0.0.1:7897;主机端会校验,非法地址在保存前就被拒绝 |
| 绕过列表 | 追加 noProxy 条目;localhost、127.0.0.1、::1 由 dsh-http-proxy 强制绕过 |
| 状态行 / 重新检测 | 读宿主实时状态(当前路由、来源、失败原因),并可按需重新探测一次 |
状态行显示的是宿主真正生效的结果,例如:
已生效 http://127.0.0.1:7897 (via: clash-config:C:\Users\...\config.yaml)
页面读的是一个带围栏的只读接口 POST /web-fetch-proxy/api(仅接受 loopback / 受信 Host、同源请求):
请求体 {"action":"status"} 取状态,{"action":"redetect"} 触发一次重新探测。
页面不需要「重启后生效」:设置走的是
applies: live的 settings 命名空间,改动通过scope.watch()直接驱动路由重建(旧的策略先释放,再按新配置重新探测安装)。
配置(cordis 层)
页面写的是同一份配置;cordis.patch.yml 的 config 提供部署级基线与默认值(settings 的 base 层),
页面上没有暴露的字段只能在这里改:
- insert:
- id: web-fetch-proxy
name: dsh-web-fetch-proxy
config:
enabled: true # false 则完全不介入
proxy: auto # auto | off | http://host:port | host:port
noProxy: "" # 额外的不走代理的域名,逗号分隔
retryMs: 15000 # 自动发现失败后的重试间隔,0 = 不重试
maxRetries: 20 # 最大重试次数
probeTimeoutMs: 400 # 单个候选代理的 TCP 探测超时
| 字段 | 类型 | 默认 | 说明 |
|---|---|---|---|
enabled | boolean | true | 部署级总开关;false 时插件不安装任何路由(页面无法覆盖) |
proxy | string | auto | auto 自动发现;off/none/direct 不安装;也可以写死代理地址。页面可改 |
noProxy | string | "" | 追加到绕过列表(localhost、127.0.0.1、::1 由 dsh-http-proxy 强制绕过)。页面可改 |
retryMs | number | 15000 | 代理客户端比 DSH 晚启动时,按此间隔重试 |
maxRetries | number | 20 | 重试上限(约 5 分钟) |
probeTimeoutMs | number | 400 | 候选代理的 TCP 连接超时 |
也可以直接用环境变量指定,优先级高于自动发现:
set DSH_WEB_FETCH_PROXY=http://127.0.0.1:7897