让轻量壳浏览器调用系统通行密钥登录网站
29.7/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/9/18 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
自动兼容检查未通过:仓库根目录及浅层子目录均无 dsh 插件清单,无法用 dsh 插件安装命令安装。以下命令仍可尝试,但可能失败。
无法用 dsh 插件命令安装(仓库内无 dsh 插件清单)
git clone https://github.com/cmyfqwq/webauthn-for-webview-shells.git按该仓库 README 的原生方式安装;若作者另行发布了 DSH 插件包,请以其文档为准
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:需留意
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查需源码安装仓库根目录及浅层子目录均无 dsh 插件清单,无法用 dsh 插件安装命令安装
展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✗npm 包webauthn-for-webview-shells(未发布到 npm,仅可源码安装)
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✗入口文件缺少入口声明
源码安装时若 pnpm 拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑。
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/11 22:17:46
安全扫描自动 · 静态分析源码v2.7.0⚪ 扫描:无法判定尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0已尝试扫描但取不到可分析的源码:仓库或包不存在、已删除,或为非 JS/TS 实现、未随包发布源码。无法判定,不代表安全。
- · 包内无可扫 JS
- · TS 源码(可能为非 JS 实现或未发布源码),无法判定
扫描于 2026/11/4(0 天前) · 范围 全包扫描(包内未声明入口) · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 调用系统通行密钥登录
- 启用WebAuthn支持
- LSPosed模块可逆
用官方 androidx.webkit 开关在 Via、夸克等 WebView 套壳浏览器里启用通行密钥——LSPosed 模块,针对 WebAuthn 尚未默认开启的旧版 WebView(约 124-13x),完全可逆
README
由 DeepSeek 最新模型翻译生成🔑 WebAuthn for WebView Shells
让轻量 WebView 壳浏览器用上通行密钥——拨的只是官方本来就有的那个开关。
License: MIT
Requires LSPosed
Android 7.0+
System WebView 124+
English · 简体中文
🧠 这到底是什么
通行密钥的能力本来就在 Android 系统 WebView 里(v124+)。官方规范要求:每个内嵌 WebView 的宿主 app 都必须自己声明这一行:
WebSettingsCompat.setWebAuthenticationSupport(settings, WEB_AUTHENTICATION_SUPPORT_FOR_APP);
Via、夸克这类轻量"壳"浏览器全部走系统 WebView 渲染页面——但没有一家调用这行,于是 navigator.credentials() 根本到不了系统凭据栈:不是系统不支持,是壳没伸手喵。
本模块就是替它拨这根官方开关,不碰宿主代码。 一个很小的 LSPosed 模块,hook 目标浏览器进程里的 WebView 构造,替宿主完成官方集成,自带一份 androidx.webkit 库。
不碰系统密码本 · 不发任何网络请求 · 不注入任何 UI。
回滚 = LSPosed 里关掉开关。就这么简单。
展开完整文档(README 剩余 1 节)
🔑 WebAuthn for WebView Shells
让轻量 WebView 壳浏览器用上通行密钥——拨的只是官方本来就有的那个开关。
License: MIT
Requires LSPosed
Android 7.0+
System WebView 124+
English · 简体中文
🧠 这到底是什么
通行密钥的能力本来就在 Android 系统 WebView 里(v124+)。官方规范要求:每个内嵌 WebView 的宿主 app 都必须自己声明这一行:
WebSettingsCompat.setWebAuthenticationSupport(settings, WEB_AUTHENTICATION_SUPPORT_FOR_APP);
Via、夸克这类轻量"壳"浏览器全部走系统 WebView 渲染页面——但没有一家调用这行,于是 navigator.credentials() 根本到不了系统凭据栈:不是系统不支持,是壳没伸手喵。
本模块就是替它拨这根官方开关,不碰宿主代码。 一个很小的 LSPosed 模块,hook 目标浏览器进程里的 WebView 构造,替宿主完成官方集成,自带一份 androidx.webkit 库。
不碰系统密码本 · 不发任何网络请求 · 不注入任何 UI。
回滚 = LSPosed 里关掉开关。就这么简单。
✅ 效果
graph LR
A[navigator.credentials] --> B{host 开关}
B -- 关 --> X[❌ passkey 弹不出来]
B -- 模块接管 --> C[WAShell hook]
C --> D[系统 WebView ≥ 124]
D --> E[系统凭据弹窗原生密码本接管]
- 网站立刻能识别"这台手机有平台认证器"喵
- 创建/验证通行密钥全走原生密码本(ColorOS 密码本、谷歌密码管理工具等)
- 宿主重新改设置时模块会自动把开关粘回去
📦 壳浏览器支持
| 浏览器 | 状态 |
| Via GP(mark.via.gp 7.3.3) | ✅ 已实测——创建 + 验证全程正常 |
| Via 国行(mark.via) | 默认接线,等实测反馈喵 |
| 其他所有壳 | ⚠️ 机制适用(WebView ≥ 124),但默认未接线——把包名加进 MainHook.java 的 TARGETS,重新构建即可 |
🧱 技术堆栈
| 层 | 用什么 | 为什么 |
| Hook 运行时 | Xposed API 93 / LSPosed | 注入进浏览器自身进程;关模块 = 原生行为 |
| 桥接 | androidx.webkit 1.17(WebSettingsCompat.setWebAuthenticationSupport) | 官方 WebView ↔ Credential Manager 集成,随模块 dex 自带 |
| 目标底线 | Android 7.0+(API 24)/ 系统 WebView 124+ | 启用现成能力,不回填 |
| 构建 | javac → d8 → aapt2 → apksigner(纯 PowerShell,无 Gradle) | 约 350 行总量,一条脚本可复现 |
| 依赖广度 | 无网络、无 UI、无系统写入 | 可逆性就是设计约束喵 |
为什么要自带 androidx.webkit?因为壳们从来不带它——hook 必须供得起自己要应用的桥喵。
🚀 安装
1. 前提:root + LSPosed,Android 7.0+,系统 WebView 124+
2. 从 Releases 下载 APK 安装
3. LSPosed 管理器里启用模块(作用域已按 manifest 预填),重启浏览器
4. 打开任意支持 passkey 的网站,等系统凭据弹窗冒出来喵
完全可逆:关掉开关或 pm uninstall io.github.cmyfqwq.webauthnshell,一切恢复原生,零残留。
🔨 自己构建
不需要 Gradle——一条 PowerShell 脚本驱动 javac → d8 → aapt2 → apksigner:
pwsh build.ps1 # → build/WebAuthn-Shell-1.0.0.apk
想加浏览器?改 MainHook.java 里的 TARGETS 加包名,重建喵。
🕓 兼容性:你的设备还需要它吗?
先自查再报"没效果"喵。 本模块存在的前提是"WebView 默认关闭 WebAuthn、宿主必须自己 opt in"——而新的 WebView/系统版本已经开始自己翻这个默认开关了:
| 设备情况 | 实际表现 |
| Android ≤ 16,WebView 约 124–13x(历史上需要壳主动 opt in) | ✅ 本模块的目标区间——不装的话壳浏览器报"没有平台验证器" |
| Android 16/17 + 新版 WebView(实测:HyperOS 4.0.0.24 / Android 17) | ⚠️ WebView 可能已默认对壳放行 navigator.credentials,模块在这些设备上变成冗余空转;那边的 passkey 成功是凭据提供方侧的功劳,与本 hook 无关 |
| 壳自己就调用 androidx 开关 | ✅ 任何版本——模块按设计变得多余(这正是理想结局) |
快速自查:在 LSPosed 里停用本模块 → 强杀浏览器 → 重试 passkey。还能用,说明你的设备已经不需要它了,不是坏了喵。
另外注意提供方一侧:小米 HyperOS 4 的默认凭据提供方可能仍拒绝 WebView 发起的请求(NotReadableError),见下方 FAQ。
🧭 FAQ
这算漏洞利用吗?
不算喵。它只是在目标 app 自己的进程里设置一个公开的(androidx)配置——壳浏览器自己本来就该调这行。没有加任何 WebView 做不到的事,系统侧的守门逻辑原封不动。
为什么不直接找浏览器官方?
请务必去提喵——每个浏览器加 3 行原生就好了,那是本模块最理想的下场。这个模块的存在就是为了在官方补齐之前先把洞堵上。
小米 HyperOS 4.0 / Android 17 机型会怎样?
实测:hook 正常接通,但系统默认 provider(小米密码本 com.miui.passwords)对第三方 WebView 的 WebAuthn 请求会抛 NotReadableError: unknown error talking to the credential manager,密码本内查无写入记录喵 —— 这是小米侧 provider 未完整实现/未放行的问题(同机 Chrome 走 Google 密码管理工具可正常创建喵)。等小米在设置里放出 passkey 提供方切换或修复后,HyperOS 4 上即可恢复喵;欢迎把此结论反馈给小米喵。
☕ Credits
- 基于 androidx.webkit 的 WebView–Credential Manager 官方桥接
- 问题情报来自 caniuse passkey 支持矩阵(QQ 14.9 / 百度 13.52 不支持)和上游壳浏览器翻车报告(如 openai/codex #31204)
MIT · 无追踪 · 无联网 · 一个开关
cmyfqwq 出品预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
cmyfqwq/webauthn-for-webview-shells
让轻量壳浏览器调用系统通行密钥登录网站
相关插件 · 浏览器
智能体插件框架deepseek-ai/deepseek-harness
DeepSeek Harnessdsh是由 DeepSeek AI 开发的开源 agent harness智能体框架。
★ 270,422已汉化DSH
71.9
多设备 Agent 看板YaoApp/yao
✨ 所有 Agent 和工作区集中管理,覆盖你的每一台设备。任务看板追踪进度,桌面端、移动端、浏览器、API…
★ 8,147已汉化DSH
71.2
可扩展侧边栏工作台omdsh-dev/DSH-better-sidebar
DSH 的双工作台:原生右侧栏 + 自绘底部面板,并把 ctx.betterSidebar 服务开放给所有插件
★ 4,761已汉化DSH
71.1
浏览器自动化桥Tencent/BrowserSkill
你的 Agent。你的浏览器。连接,就能协作。
★ 9,967已汉化DSH
71
AI 小说创作工作台EthanYoQ/AI-Novel-Writer
AI 小说作家 / AI Novel Writer
★ 1,591已汉化DSH
70.7
智能体浏览器引擎platonai/Browser4
DeepSeek Harness 集成
★ 1,175已汉化DSH
70.4
这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。