📱 dsh-webroad

August 28, 2026 · View on GitHub

📱 dsh-webroad

DSH Web 手机访问一体化插件:设置页内嵌「📱 手机访问」,扫码即用(局域网 + 公网 + 固定域名)

License Version Node CI

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.any polyfill + 首次打开直达会话
  • 🔁 隧道自动恢复:DSH 重启后自动重新拉起公网隧道(已实测)
  • 🏷️ 固定域名(可选)$DSH_HOME/dsh-webroad/named/ 放 config.yml + credentials.json 即复用你自己的 Cloudflare 命名隧道
  • 🔧 CLIdsh-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-webroaddsh-pocketdsh-remote-access(已归档删除)
设置页入口✅ 内嵌「📱 手机访问」✅ 设置页签
安装后即用✅ 扫码即用❌ 手动搭
信任围栏改头代理(零配置)改头代理(零配置)手动 trustedHosts
固定域名✅ 可选(命名隧道)❌ 随机 URL✅(已并入本插件)
Funnel 手动教程✅ 保留(files/ + SKILL 备选节)
许可MITGPL-2.0MIT
文档SKILL.md 自包含 + 验证清单READMESKILL.md

License

MIT —— 自由使用 / 修改 / 再分发。实现为原创代码(借鉴公开的"host rewrite 反向代理"通用思路与 DSH client 插件机制,未复制 dsh-pocket 的 GPL 代码)。

Made by @iTrimut