dshgo: 局域网访问 DSH Web

前言

DSH Web 默认只监听 127.0.0.1,并且设置了 Host/Origin 栅栏,只允许本机访问。这导致无法直接从手机或局域网内的其他设备连接。dshgo 插件解决了这个问题,它将 dsh web 暴露到局域网,并提供了移动端适配和访问密码功能。

它是什么

dshgo 是一个包含插件和 Android 客户端的组合。
* 插件:将 dsh web 的监听地址改为局域网可访问,并提供一个设置页签用于查看地址、二维码和配置密码。
* App:为手机和平板提供原生体验,支持会话通知、批准操作、语音输入等。

安装

在终端执行以下命令安装插件:

dsh plugin --profile web add github:xiazhi88/dshgo -w

安装完成后,必须重启 dsh web 才能生效。

注意:
* 升级时,如果之前安装的是旧版 dsh-lan,需要先卸载旧包:dsh plugin --profile web remove dsh-lan。
* 插件依赖 DSH 版本 0.1.2-rc.1 及以上。

配置

如果需要自定义端口,可以在 profile 的 cordis.patch.yml 中配置:

- id: dshgo
  config:
    port: 3081        # 对外端口,默认 3081
    bind: 0.0.0.0     # 对外绑定地址

使用

安装并重启 dsh web 后,DSH 设置中会出现一个名为 「局域网访问」 的一级页签。

  • 查看地址:点击页签即可看到本机所有可用地址和二维码,手机扫描即可访问。
  • 本机访问:同一台机器上的浏览器也能通过该页签直接访问。
  • 访问密码:默认关闭。为了安全,可以在页签中开启访问密码,浏览器会显示密码页,App 会使用指纹或面部解锁。

安全提示:
* 该插件会把执行任意代码的 DSH 暴露到局域网。
* 不要将地址或端口转发到公网。
* 只在可信网络(如家庭 WiFi)中使用。

Android App 功能

dshgo 的 Android App 提供以下功能:
* 会话通知:会话跑完或卡在批准时推送通知,可直接在通知栏点击「允许」。
* 连接管理:管理多台电脑的连接,查看状态、延迟和插件版本。
* 语音输入:在输入框支持语音输入。
* 主屏小组件:在手机主屏直接查看状态并进行批准。
* 访问闸门:与插件共享密码,支持指纹、面部或设备密码解锁。
* 应用内更新:支持直接下载并安装更新。

技术细节

  • 栅栏绕过:插件将入站请求的 Host/Origin 统一改写成 127.0.0.1:<dshPort>,绕过了 DSH Web 的 Host/Origin 栅栏。
  • Polyfill:注入了 crypto.randomUUID 和 AbortSignal.any 的 polyfill,以支持旧版 WebView 和非安全上下文。
  • Token 注入:注入启动 token,确保能获取会话 cookie。

许可

MIT。

参考资料

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

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

小夜