📱 dsh-webroad
August 28, 2026 · View on GitHub
把 dsh-pocket 式的一键自动化(改头代理免配 trustedHosts、8 位 PIN + 登录限速、WebSocket 心跳保活、gzip/brotli 压缩、局域网/公网二维码、cloudflared 隧道自动恢复)与自包含文档 + 手机端补丁(browse 目录选择器、polyfill、直达会话引导)结合在一起的 DSH 插件。DSH 设置页内嵌「📱 手机访问」入口,扫码即用;固定域名可复用已有 Cloudflare 命名隧道;并保留 Tailscale Funnel 手动教程(files/ 模板 + SKILL 备选方案节)。
安装(前置:pnpm 在 PATH;装完重启 dsh web)。三选一:
# 本地开发(推荐,无网络依赖)
dsh plugin --profile web add <本插件目录绝对路径> -w
# 海外网络:GitHub 直装
dsh plugin --profile web add github:iTrimut/dsh-Webroad -w
# 国内网络:git+ssh(走 SSH over 443,绕开被墙的 HTTPS)
dsh plugin --profile web add git+ssh://git@github.com/iTrimut/dsh-Webroad.git -w
-w不能省(pnpm workspace-root 检查);github:方式会让后续每次 pnpm 安装都重连 GitHub,国内不稳请用方式 1/3。装完npx @deepseek-ai/dsh web重启,浏览器开http://127.0.0.1:3081/pocket输局域网 PIN 即可验证。
使用(推荐):DSH 界面 → 设置 → 📱 手机访问 → 局域网/公网二维码 + 密码 + 开关全在这里。手机连同一 WiFi 扫局域网码输 PIN 即用;点「开启公网访问」出公网二维码,人在外面(4G/任何网络)也能访问。也可用独立面板 http://127.0.0.1:3081/pocket 或 CLI。
详见 skills/dsh-webroad/SKILL.md(完整自包含文档:关键点总结、架构、安装、使用、排障、验证清单、取代关系)。
特性
- 🏠 设置页内嵌入口:DSH 设置 →「📱 手机访问」— 二维码/密码/开关/免责声明全在设置页内,loopback RPC 驱动
- 📶 局域网扫码:代理自动起在
0.0.0.0:3081,出二维码,手机连同一 WiFi 扫码 + 8 位 PIN 即用(PIN 可关) - 🌐 公网扫码:cloudflared 快速隧道(免账号免域名),每次开启自动换新 PIN,旧链接作废;服务端强制安全免责声明
- 🔒 安全认证:公网/局域网独立 8 位 PIN;登录限速(单 IP 5 次/60s 锁 60s + 全局锁);HttpOnly cookie 会话保持(绑定 dsh web 进程)
- ⚡ 实时可靠:WebSocket 全透传 + 协议层心跳保活(防 NAT/省电静默断链,断线自动重连)
- 🗜️ 省流量:大 JSON 自动 gzip/brotli 压缩(17MB 长会话 → ~1MB)
- 🧩 零配置围栏:改头代理让信任围栏永远看到 loopback,不改 DSH 任何配置
- 📱 手机端补丁:browse 目录选择器 +
crypto.randomUUID/AbortSignal.anypolyfill + 首次打开直达会话 - 🔁 隧道自动恢复:DSH 重启后自动重新拉起公网隧道(已实测)
- 🏷️ 固定域名(可选):
$DSH_HOME/dsh-webroad/named/放 config.yml + credentials.json 即复用你自己的 Cloudflare 命名隧道 - 🔧 CLI:
dsh-webroad status | qr | public on|off | pin set|rotate
测试与验证(全部实测通过)
npm install
npm test # 9 项单元测试:改头/压缩/认证限速/WS 心跳/面板 API/隧道 URL/LAN IP
node scripts/verify-live-panel.mjs # 真实 dsh web 端到端:登录→面板→二维码→WS 101
node scripts/e2e-panel.mjs # 独立进程完整浏览器流程(登录页→302→面板脚本编译→QR)
已实测:真实 dsh web 冒烟 10/10、公网快速隧道开启并经 Cloudflare 边缘访问、隧道自动恢复、设置页 client 注入(boot manifest 条目 + /plugins/dsh-webroad/client.js)。
与同类方案的差异
| dsh-webroad | dsh-pocket | dsh-remote-access(已归档删除) | |
|---|---|---|---|
| 设置页入口 | ✅ 内嵌「📱 手机访问」 | ✅ 设置页签 | ❌ |
| 安装后即用 | ✅ 扫码即用 | ✅ | ❌ 手动搭 |
| 信任围栏 | 改头代理(零配置) | 改头代理(零配置) | 手动 trustedHosts |
| 固定域名 | ✅ 可选(命名隧道) | ❌ 随机 URL | ✅(已并入本插件) |
| Funnel 手动教程 | ✅ 保留(files/ + SKILL 备选节) | ❌ | ❌ |
| 许可 | MIT | GPL-2.0 | MIT |
| 文档 | SKILL.md 自包含 + 验证清单 | README | SKILL.md |
License
MIT —— 自由使用 / 修改 / 再分发。实现为原创代码(借鉴公开的"host rewrite 反向代理"通用思路与 DSH client 插件机制,未复制 dsh-pocket 的 GPL 代码)。
Made by @iTrimut