dsh-remote-auth:一鍵獲取 dsh web 瀏覽器會話的遠程授權頁

前言

DeepSeek Harness (DSH) 在啓動 dsh web 時會生成隨機的 launch token 用於授權瀏覽器訪問。本機設備啓動時通常由 GUI 自動處理,但 iPad、iPhone 或其他局域網設備需要訪問時,通常只能通過服務器日誌查找帶 token 的 URL。這種方式不僅麻煩,且容易出錯。

dsh-remote-auth 插件在 webserver 上掛載了一個公開路由 GET /mobile-auth。設備訪問該頁面後,通過輸入 PIN 或掃描二維碼,即可獲取當前 dsh web 進程的瀏覽器會話授權鏈接,並生成有效期 30 天的持久化 Cookie。

插件簡介

  • 名稱:dsh-remote-auth
  • 一句話:一鍵或掃碼獲取 dsh web 瀏覽器會話的遠程授權頁
  • 作者:wentao75
  • 許可證:MIT

核心功能

  • 遠程獲取會話:點一下鏈接或掃一下二維碼即可獲取當前 dsh web 進程的瀏覽器會話。
  • 多場景支持:支持局域網、Tailscale 以及 iPad/iPhone 等遠程設備訪問。
  • 免查日誌:無需從服務器日誌中查找 token。
  • 安全驗證:支持 PIN 門禁安全驗證。
  • 訪問控制:支持 Host 頭白名單和源 IP 網段白名單(CIDR)。
  • 持久化 Cookie:Cookie 由持久化簽名密鑰簽發,重啓 dsh 不會踢掉已授權設備,有效期 30 天。

安裝與啓用

使用官方安裝命令添加插件:

dsh plugin --profile web add dsh-remote-auth -w

安裝後需要重啓 dsh web 生效(GUI 會短暫斷連後自動恢復)。

使用方式

安裝完成後,從任意授權設備打開以下地址:

  • 本機:http://127.0.0.1:3080/mobile-auth
  • 局域網:http://<Mac-name>.local:3080/mobile-auth
  • Tailscale:http://<host>.tailXXXX.ts.net:3080/mobile-auth

在頁面中輸入 PIN(如果已啓用),然後點擊“在本設備打開授權鏈接”或讓另一臺設備掃描二維碼。授權成功後,設備將獲得與當前訪問 authority 一致的瀏覽器會話。

配置項

在 profile 的 cordis.patch.yml 中可以配置以下參數:

  • allowedAuthorities:Host 頭白名單。支持裸主機名(任意端口)或精確 host:port。迴環地址恆放行。
  • allowedSubnets:源 IP 網段白名單(CIDR)。迴環地址恆放行。
  • pin:8 位字母數字 PIN 碼。設爲空字符串 "" 可關閉 PIN 門禁(不推薦在公網使用)。
  • lockAfterFails:鎖定閾值,默認爲 5。
  • lockSeconds:鎖定秒數,默認爲 60。
  • originProtocol:當服務位於 TLS 反向代理之後時,需設爲 "https"。

注意事項與兼容性

  • 重啓生效:重啓 dsh web 後插件生效。
  • 依賴內核:依賴內核擴展點 ctx.webServer.register 和 ctx.connection.authenticatedUrl。
  • 內核版本:已驗證兼容內核版本 0.1.2-rc.1 和 0.1.6-alpha.1。
  • Polyfill:在明文 HTTP 環境(局域網/Tailscale IP)下,需要 crypto.randomUUID polyfill。
  • 包類型:package.json 中 "type": "module",不要將 vendored 的 lib/qrcode.cjs 重命名爲 .js,否則會導致加載失敗。

結語

dsh-remote-auth 解決了在非本機環境下訪問 DSH Web 服務需要翻閱日誌查找 Token 的痛點,通過簡單的掃碼或點擊即可建立遠程會話。適合需要在局域網或遠程設備(如 iPad)上持續使用 DSH Web 的場景。

更多信息與源碼:
* GitHub 倉庫
* 技能庫目錄頁

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

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

小夜