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 仓库
* 技能库目录页

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

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

小夜