为网页入口加密码登录,防他人随意访问
29.7/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/28 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add duwenlong2/dsh-login-gate该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:仅索引
是什么
dsh 原生插件 · security
装得上吗
本站尚未做安装检查
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 6 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件读取剪贴板或密钥环境变量发起外部网络请求
查看扫描证据(共 12 处,展示前 12 条)
- 发起网络请求client.js:66
fetch('/__auth/session-info', { credentials: 'same-origin' }) - 发起网络请求client.js:78
fetch('/__auth/password', { - 发起网络请求client.js:99
fetch('/__auth/session-days', { - 读取本地文件gate.js:22
if (!existsSync(p)) return null; - 读取本地文件gate.js:24
const raw = unprotect(readFileSync(p)); - 写入本地文件gate.js:50
mkdirSync(dirname(file), { recursive: true }); - 写入本地文件gate.js:51
writeFileSync(file, protect(blob), { mode: 0o600 }); - 读取本地文件gate.js:70
const raw = readFileSync(file, 'utf8'); - 执行外部命令固定命令dpapi.js:7
return execFileSync('powershell', [...PS_ARGS, script], { - 读取密钥环境变量setup.mjs:29
let password = process.env.DSH_GATE_PASSWORD; - 写入本地文件setup.mjs:57
mkdirSync(dirname(file), { recursive: true }); - 写入本地文件setup.mjs:58
writeFileSync(file, encrypted, { mode: 0o600 });
扫描于 2026/10/31(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
DSH 登录门禁插件:网页内首次设置密码、scrypt + DPAPI 存储、会话与限流。Password gate for the DSH web listener.
README
由 DeepSeek 最新模型翻译生成dsh-login-gate
给 DeepSeek Harness 的网页入口加一道密码。
装好之后:打开 DSH 先看到登录页,输对密码才进得去。
DSH 自带的是进程级 launch token(?token=xxx),拿到 URL 的人就能进。
这个插件补上「人」这一层:密码、会话、限流、遗忘重置。
交流群:QQ 1011056058(DSH 养成计划 · 小白交流群)—— 使用问题、本地模型、内网穿透都可以问。
设置密码
特性
| 首次访问引导 | 没设过密码 → 自动进入「设置密码」页,不用命令行 |
| 密码可见 | 输入框右侧「显示」,临时看一眼确认没打错 |
| 会话 | 默认 7 天,HttpOnly + SameSite=Lax,HTTPS 下自动 Secure |
| 防爆破 | 每 IP 连续 5 次失败锁 10 分钟(识别 CF-Connecting-IP) |
| 忘记密码 | 登录页入口 + 三步重置说明(PowerShell / cmd / 资源管理器) |
| 安全存储 | 密码不落明文:scrypt 派生 + Windows DPAPI 加密 |
| 初始化保护 | 第一次设密码只允许本机,防止公网被抢注 |
| 设置面板 | 设置 → 访问门禁:改密码、调会话有效期、到期提醒 |
安装
展开完整文档(README 剩余 1 节)
dsh-login-gate
给 DeepSeek Harness 的网页入口加一道密码。
装好之后:打开 DSH 先看到登录页,输对密码才进得去。
DSH 自带的是进程级 launch token(?token=xxx),拿到 URL 的人就能进。
这个插件补上「人」这一层:密码、会话、限流、遗忘重置。
交流群:QQ 1011056058(DSH 养成计划 · 小白交流群)—— 使用问题、本地模型、内网穿透都可以问。
设置密码
特性
| 首次访问引导 | 没设过密码 → 自动进入「设置密码」页,不用命令行 |
| 密码可见 | 输入框右侧「显示」,临时看一眼确认没打错 |
| 会话 | 默认 7 天,HttpOnly + SameSite=Lax,HTTPS 下自动 Secure |
| 防爆破 | 每 IP 连续 5 次失败锁 10 分钟(识别 CF-Connecting-IP) |
| 忘记密码 | 登录页入口 + 三步重置说明(PowerShell / cmd / 资源管理器) |
| 安全存储 | 密码不落明文:scrypt 派生 + Windows DPAPI 加密 |
| 初始化保护 | 第一次设密码只允许本机,防止公网被抢注 |
| 设置面板 | 设置 → 访问门禁:改密码、调会话有效期、到期提醒 |
安装
需要 Windows(DPAPI)和 Node 20+。
方式一:插件中心(推荐,不用命令行)
设置 → 插件中心 → 添加插件 → 安装第三方插件输入本地目录路径(或 GitHub 仓库地址)
支持三种来源:npm 包名 / GitHub 仓库 / 本地目录,装完自动写 package.json 和 bundles。
方式二:命令行
1. 把插件装进 web profile
dsh plugin --profile web add file:C:\path\to\dsh-login-gate
2. 让 bundle 生效编辑 %USERPROFILE%\.dsh\profiles\web\package.json 在 dsh.profile.bundles 里追加一行
改完长这样:
{
"dsh": {
"profile": {
"bundles": [
"@deepseek-ai/dsh-base",
"@deepseek-ai/dsh-web-app",
"dsh-login-gate"
]
}
}
}
重启 DSH,打开 http://127.0.0.1:3080,会看到设置页。
从 GitHub 安装也可以:
dsh plugin --profile web add github:duwenlong2/dsh-login-gate
首次使用:设置密码
1. 打开 http://127.0.0.1:3080
2. 自动跳到「设置访问密码」
3. 输入两次(右侧「显示」可核对)
4. 点「保存并进入」→ 自动登录,直接进入 Harness
登录
初始化只允许本机(loopback 且无转发头)。
从公网访问会提示「只能在本机初始化」。
日常使用
| 场景 | 行为 |
| 打开 DSH | 已登录直接进;未登录跳登录页 |
| 登录一次 | 7 天内免输 |
| 换设备 / 清 cookie | 重新输一次 |
| 连续输错 5 次 | 锁 10 分钟 |
| 主动退出 | 访问 /__auth/logout |
设置面板
装好并重启后,打开 设置 → 访问门禁:
| 能做什么 | 说明 |
| 看会话状态 | 剩余天数;少于 2 天会显示 ⚠ 提醒 |
| 改密码 | 当前密码 + 新密码 + 确认;改完其他设备强制下线 |
| 调会话有效期 | 1–30 天,保存后当前会话立即续期 |
| 退出登录 | 清掉当前浏览器的会话 |
改密码和有效期都会写回 auth-gate.dat(DPAPI 加密),不需要重启。
有效期存在状态文件里,会覆盖 cordis.patch.yml 的 sessionDays。
忘记密码
密码找不回,但可以重置。登录页底部 →「忘记密码?看这里」:
忘记密码
三种方式任选(cmd 和 PowerShell 语法不同,别混用):
文件资源管理器(最稳)
地址栏粘贴:%USERPROFILE%\.dsh 删除 auth-gate.dat
命令提示符(cmd)
del "%USERPROFILE%\.dsh\auth-gate.dat"
PowerShell
Remove-Item "$env:USERPROFILE\.dsh\auth-gate.dat"
删完刷新浏览器,会重新出现设置页。不用重启 DSH。
卸载
方式一:插件中心(推荐)
设置 → 插件中心 → 已安装 → 找到 dsh-login-gate → 卸载
确认后会自动清理 package.json、bundles 和 node_modules,重启即生效。
方式二:命令行
dsh plugin --profile web remove dsh-login-gate
再从 package.json 的 dsh.profile.bundles 里删掉 "dsh-login-gate"
可选:清掉密码文件
Remove-Item "$env:USERPROFILE\.dsh\auth-gate.dat" -ErrorAction SilentlyContinue
配置
cordis.patch.yml 里:
- id: auth-gate
name: 'dsh-login-gate'
config:
allowLocal: false # true = 本机免登录,只挡外网 sessionDays: 7 # 会话有效期(天) maxFails: 5 # 连续失败次数 lockMinutes: 10 # 锁定时长(分钟) title: 'DSH · 安全入口'
改完重启 DSH 生效。
密码存在哪
%USERPROFILE%\.dsh\auth-gate.dat
里面是 DPAPI 加密 的 JSON:
{
"v": 1,
"hash": "<scrypt 派生值>", "salt": "<随机 16 字节>", "secret": "<会话 HMAC 密钥>" }
- 没有明文密码
- DPAPI 绑定当前 Windows 用户,拷到别的机器/账户解不开
- 删掉文件 = 清空所有设备会话
工作原理(一句话版)
DSH 的 HTTP 服务没有全局中间件,只有四张路由表(exact / prefixes / upgrades / fallback)。
插件在激活时把每个 handler 包一层,请求进来先过门禁,通过后补上 DSH 自己的 cookie 和 Host,再交给原 handler。
浏览器 → [dsh-login-gate] → DSH ├─ /__auth/* 自己处理 ├─ 未登录 302 登录页 / 401 └─ 已登录 注入 cookie + 重写 Host → 原 handler
细节见 docs/DESIGN.md。
兼容性与边界
- 实测版本:@deepseek-ai/dsh-* 0.2.1-rc.2(llama.cpp / web profile)
- 依赖 webServer 服务的 exact / prefixes / upgrades / fallback 字段; DSH 若改名,门禁会静默失效(不崩,但不拦),升级后请重跑测试。
- 依赖 ~/.dsh/.credentials.yaml 的 browser-session secret 代签 cookie。
- 限流是进程内内存,重启清零。
- 安装后需要重启 DSH 才生效。
相关项目
- TecFancy/dsh-auth-gate —— 先出现的同名插件(已发布 npm)。
功能更全:TOTP 双因素、共享令牌登录、用户管理 CLI。
本项目的取舍不同:不引入第二因素,专注「暴露到公网要有一道密码」这一件事,并把首次设置、忘记密码做成网页闭环(不需要命令行),密码用 scrypt + Windows DPAPI 存储。
开发
24 项隔离测试(mock webServer + 真实 HTTP)
npm test
三个页面的本地预览(端口 3095)
npm run preview
测试覆盖:首次初始化 → 设置 → 自动登录 → 未登录跳转 → API 401 → 忘记密码页(PowerShell/cmd/绝对路径/资源管理器)→ 密码校验 → 伪造 cookie → 限流。
目录
dsh-login-gate/
├─ index.js cordis 插件:包装路由表 ├─ gate.js 门禁核心:会话 / 密码 / 页面 / 限流 ├─ dpapi.js Windows DPAPI 封装 ├─ setup.mjs 命令行设密码(批量部署用) ├─ cordis.patch.yml bundle 清单 + 默认配置 ├─ test/ │ ├─ harness.mjs 24 项测试 │ └─ preview.mjs 页面预览 └─ docs/ ├─ DESIGN.md 实现与取舍 └─ images/ 截图
交流群
QQ 群:1011056058(DSH 养成计划 · 小白交流群)
一起把 DeepSeek Harness 用起来:装环境、配本地模型、搭自己的工作台。
不卖课,只聊能跑起来的东西。
License
MIT © 杜文龙预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
duwenlong2/dsh-login-gate
为网页入口加密码登录,防他人随意访问
相关插件 · 安全 / 权限
智能体逆向工程morluto/rea
用智能体逆向工程任何东西,从应用行为到原生二进制。
★ 415,267已汉化DSH
73.3
智能体集群框架ruvnet/ruflo
面向 Claude Code 与 Codex 的智能体元基座meta-harness。
★ 80,414已汉化MCP
71.9
WorkBuddy 模型接入corrinehu/dsh-workbuddy-connect
2026 年 10 月 20 日起,WorkBuddy…
★ 1,604已汉化DSH
71.7
破甲一键通z91772524-ai/pojia-next
十五个 AI…
★ 967已汉化DSH
71.6
AI 代理虚拟终端strukto-ai/mirage
Mirage 是给 AI 智能体用的虚拟终端:一层 shell,统管数据、命令行和运行时。Unix…
★ 3,756已汉化DSH
70.8
Agent 操作层agentic-os-org/ANOLISA
ANOLISA(Agentic Nexus Operating Layer & Interface System Architecture)|智能体操作系统,带运行时、安全、可观测性,以及 Tokenless 响应压缩,降低 token 用量与成本。
★ 649已汉化DSH
70.7