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。

參考資料

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

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

小夜