← 返回列表
未验证
DSH 插件:放开 dsh web 的认证限制,和 0.0.0.0 的远程访问限制。
尚未跑自动兼容性验证,可查看页面内的依赖与入口分析。 · 最近上游提交 2026/9/6 · 已提供中文文档
移除登录令牌和本地网络访问限制。
综合分
28.8
GitHub 分
28.8
用户评分
—
★ Stars
0
周下载量
—
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add ya-b/dsh-web-open-access该插件未发布到 npm,走 GitHub 源安装(pnpm 若拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑)
数据截至 2026/9/18(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动
README
dsh-web-open-access
DSH 插件:放开 dsh web 的认证限制,和 0.0.0.0 的远程访问限制。
- 🔓 认证放开:删除启动 token、签名 cookie、/api 的 401 与 403 Host/Origin 信任篱笆,启动行不再打印 ?token=;
- 🖥️ 远程 == localhost:浏览器端强制“页面拥有本机”语义,解除 isLoopback 门控——远程页面也能使用设置(读写并持久化到宿主)、权限预设、欢迎引导等;
⚠️ 安全警告:安装本插件后认证完全关闭;若再按下文把绑定配成 0.0.0.0,web 界面(可执行 shell/文件工具)对任何能到达该主机的网络可达——完全暴露 RCE。仅限可信网络。 移除插件并重启后恢复出厂安全行为。
结构
dsh-web-open-access/ # 本身即 npm 包 @deepseek-ai/dsh-client-connection
├── package.json # 作为 profile 普通依赖安装(非 bundle 层)
├── lib/
│ ├── index.js # 自包含宿主半身:无认证 connection 服务 + /api 路由 + index 注入 ownsHost
│ └── client.js # 原厂浏览器半身的原样拷贝(与安装版逐字节一致,未修改)
└── README.md
适配版本
本插件针对并验证于 DSH 0.1.2-rc.1(dsh --version 查看):
- lib/client.js 逐字节取自该版本安装里的 @deepseek-ai/dsh-client-connection@0.1.2-rc.1/lib/client.js;
- lib/index.js 按该版本 connection 服务的公开调用面(requestRejection / authorizeIndex / authenticatedUrl / rpc.intercept / fetch.register / createSharedFetchHandler / /api 路由与 bridge 语义)编写。
同 0.1.x 小版本内大概率可用,但契约以 0.1.2-rc.1 为准。DSH 升级后按文末「重新构建浏览器半身」重新拷贝 lib/client.js,并对照新版核对 lib/index.js 的服务面,再验证(免 token、0.0.0.0、设置可读写)。
绑定配置(dsh web 自身,非插件)
--host 0.0.0.0 被 web-startup 有意拦截(program.error: ... for safety),所以绑定必须走 profile 配置层。在 $DSH_HOME/profiles/web/cordis.patch.yml 追加:
- id: webserver
config:
host: '0.0.0.0'
port: !!js ctx.webStartup.port ?? 3080
compression: gzip
compressionLevel: 1
compressionThresholdBytes: 1024
安装
用 dsh plugin 命令把整个插件目录装进 web profile:
dsh plugin --profile web add github:ya-b/dsh-web-open-access
再把上面的 webserver 配置追加到 $DSH_HOME/profiles/web/cordis.patch.yml(绑定 0.0.0.0,见「绑定配置」)。
安装后重启 dsh web(依赖变动不走 patch 热重载;profile patch 变化在 live 重载范围内)。
验证:
dsh --profile web --dump-config # webserver.host == 0.0.0.0(来自 profile 层)
dsh web # 启动行无 ?token=,并打印 (LAN: http://:)
ss -ltnp | grep 3080 # 0.0.0.0:3080
另一台机器浏览器访问 http://:3080 —— 免密、设置可读写并持久化
卸载
dsh plugin --profile web remove @deepseek-ai/dsh-client-connection
并从 $DSH_HOME/profiles/web/cordis.patch.yml 删除 webserver 覆盖(或改回 host: '127.0.0.1')
重启后恢复:仅 127.0.0.1 + token/401/403 完整安全行为
为什么这样设计(机制说明)
- 认证:token/cookie/篱笆全部硬编码在 @deepseek-ai/dsh-client-connection,无开关。web 的浏览器模块图(15 个 dsh.client.inject 边)要求图里存在 id 为 @deepseek-ai/dsh-client-connection 的条目,所以不能简单换行名——而是同名安装替换包:loader 从 profile 优先解析该名字到我们的包,宿主半身不再认证,浏览器半身仍是原厂 transport。
- 远程 == localhost:lib/client.js 与安装版逐字节一致,不加任何字节。改由宿主半身在 webserver/index-inject 事件里推一条 global 行,把 globalThis["__DSH_TRANSPORT__"] = {"ownsHost":true} 渲染进 index 的 ;浏览器内核在文档末尾的 __DSH_BOOT_READY__ 后才激活插件,所以该脚本必然先于 Connection 客户端 apply 执行 → ctx.connection.isLoopback 恒为 true,解除设置/持久化/权限预设等"限回环"门控。createWebConnectionRpc(undefined, undefined) 回落页面原生 fetch,行为不变。
已知边界
- 版本耦合:本插件适配 DSH 0.1.2-rc.1(见「适配版本」);DSH 升级后需重新构建 lib/client.js 并核对 lib/index.js 服务面。
- 目录选择器:绑 0.0.0.0 后 directory-picker-auto 自动退回浏览器 browse 后端(原生 OS 选择器在远程场景不适用),不影响功能。
- --host/--trusted-host flag:--host 0.0.0.0 被 web-startup 拒绝;绑定改由 profile 配置决定。认证关闭后 --trusted-host 亦无意义(篱笆已移除)。扫码进群