概览
@local/dsh-network-proxy
README / ZH
插件文档
目录摘要
dsh.pub 核对固定版本的组合包契约、运行时事实与分发语义;完整 README 请查看源仓库。
在 GitHub 阅读完整 READMELIMITATIONS
已知限制
- 只接受 `http://` / `https://` 代理;SOCKS 会被识别并在界面上提示“暂不支持”。用户名/密码里含非法百分号转义(如 `%zz`)的地址会被拒绝,因为 undici 在请求时解码会抛 `URIError`。 - PAC 求值器覆盖常见的 `shExpMatch` / `dnsDomainIs` / `isInNet` / `isPlainHostName` 等辅助函数;`dnsResolve` 返回空串(避免在同步求值里做 DNS),复杂 PAC 可能退化。单次求值有 100ms 超时,超时或抛错会回退到静态代理(有的话)或直连,并显示 `pac-failed`。 - PAC 脚本缓存 60 秒;点“重新检测”会强制重新读取系统设置并重新下载。求值器运行在无宿主对象的 Node `vm` 上下文里(禁用字符串代码生成),但 Node 明确说明 `vm` 不是安全边界,仍不应把不可信 PAC 当作可信输入。 - PAC 按 origin(scheme + host + port)求值,undici 的 dispatcher 工厂拿不到请求路径,所以依赖路径的 PAC 规则不会生效;目前只采用第一个 `PROXY`/`HTTPS` 项,不做多代理故障转移。 - WPAD 自动检测(`AutoDetect=1` 且没有 PAC URL)暂不支持,会在界面上显示提示,而不是静默直连。 - 自定义模式必须写端口;系统 `ProxyServer` 里形如 `http://user:pass@host:port` 的凭据会被保留,界面与日志只显示去掉凭据的地址。 - 旁路列表支持 IPv4/IPv6 CIDR、`<local>`、`*.example.com`、`127.*` 与端口;子进程的 `NO_PROXY` 只能表达主机/域名,无法表达整个 `127.0.0.0/8`。如果系统旁路列表是 `*`,所有请求直连,状态会显示 `bypass-all` 而不是“代理已生效”。 - 设置写入失败时仍会生效,但状态会显示 `persist-failed`(重启后会丢失);配置文件是明文 JSON(权限 0600)。 - 客户端调用 Host 有 15 秒超时与“重试”按钮;自定义输入框在输入法组合状态下按 Enter 不会误保存。 - 修改系统代理本身(例如在代理软件里开关“系统代理”)不会被实时感知,点“重新检测”或重新打开设置即可刷新。
