前言¶
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。