我真的烦透了“掏出手机 → 解锁 → 打开 Authenticator → 复制验证码”这套流程
尤其是当我:
- 在调试 GitHub Actions,每 5 分钟就要输一次 2FA;
- 管着十几个云账号(AWS、GCP、阿里云),每个都要独立密钥;
- 用公司电脑,但手机不在手边……
我开始想:为什么不能像密码管理器一样,在浏览器里直接生成 TOTP?
网上搜了一圈,要么是插件不可用,要么是网页版工具(不敢输密钥),要么就是老旧的 Tampermonkey 脚本(功能残缺,连扫码都不支持)。
于是,我花了几个晚上,撸了个 全功能、纯本地、还能扫页面上二维码 的 TOTP 助手。
现在,它成了我每天必用的“隐形生产力外挂”。
它能做什么?
✅ 在任意网页生成 TOTP 验证码(6位/8位都支持)
✅ 直接扫描页面上的 QR 码(不用再拿手机扫码或者截图去别的网站解码)
✅ 解析 otpauth:// 链接,自动填入账户和密钥
✅ 导入/导出 JSON 备份,换电脑也不怕丢
✅ 跨标签页同步——在一个页面添加账号,其他页面自动更新
✅ 所有数据只存在你本地,脚本从不联网,密钥绝不上传
而且,界面长这样 👇
是不是比手机 Authenticator 爽?
技术上怎么做到的?
- TOTP 算法:用浏览器原生
Web Crypto API实现 HMAC-SHA1,不依赖任何第三方库,安全可控。 - QR 扫描:集成 jsQR,点击“Capture QR Code”后,页面所有
<img>会被高亮,点一下就能识别。 - UI 框架:用了 Shoelace —— 轻量、现代、自带 Toast 提示,完美适配 Tampermonkey。
- 存储同步:通过
GM_addValueChangeListener实现多标签页实时更新,体验接近原生 App。
整个脚本不到 600 行核心逻辑,却覆盖了日常 99% 的使用场景。
安装 & 使用(30 秒搞定)
- 安装 Tampermonkey
- 点击安装
- 刷新任意网页,右下角会出现一个 🔐 按钮
- 点击它,添加你的第一个 TOTP 账户!
⚠️ 安全提醒:密钥仅存储在你本地浏览器(通过 GM_setValue),切勿在公共电脑使用。脚本无任何网络请求,可放心审计。
开源 & 反馈
这个小工具已经在我自己的工作流里跑了两周,稳定得一批。如果你也受够了“手机验证”的打断感,欢迎试试!
最后说两句
做这个脚本的初衷很简单:让重复的事,自动化;让繁琐的事,一键化。
技术人的时间,不该浪费在“掏手机”这种机械操作上。
希望它也能成为你浏览器里的一个小帮手。
—— 写于一个不想再解锁手机的深夜 😴