不用掏手机了!我在浏览器里造了个 TOTP 验证器,还带扫码功能

0 阅读2分钟

我真的烦透了“掏出手机 → 解锁 → 打开 Authenticator → 复制验证码”这套流程

尤其是当我:

  • 在调试 GitHub Actions,每 5 分钟就要输一次 2FA;
  • 管着十几个云账号(AWS、GCP、阿里云),每个都要独立密钥;
  • 用公司电脑,但手机不在手边……

我开始想:为什么不能像密码管理器一样,在浏览器里直接生成 TOTP?

网上搜了一圈,要么是插件不可用,要么是网页版工具(不敢输密钥),要么就是老旧的 Tampermonkey 脚本(功能残缺,连扫码都不支持)。

于是,我花了几个晚上,撸了个 全功能、纯本地、还能扫页面上二维码 的 TOTP 助手。

现在,它成了我每天必用的“隐形生产力外挂”。


它能做什么?

在任意网页生成 TOTP 验证码(6位/8位都支持)
直接扫描页面上的 QR 码(不用再拿手机扫码或者截图去别的网站解码)
解析 otpauth:// 链接,自动填入账户和密钥
导入/导出 JSON 备份,换电脑也不怕丢
跨标签页同步——在一个页面添加账号,其他页面自动更新
所有数据只存在你本地,脚本从不联网,密钥绝不上传

而且,界面长这样 👇

lovegif_1772071085386.gif

是不是比手机 Authenticator 爽?


技术上怎么做到的?

  • TOTP 算法:用浏览器原生 Web Crypto API 实现 HMAC-SHA1,不依赖任何第三方库,安全可控。
  • QR 扫描:集成 jsQR,点击“Capture QR Code”后,页面所有 <img> 会被高亮,点一下就能识别。
  • UI 框架:用了 Shoelace —— 轻量、现代、自带 Toast 提示,完美适配 Tampermonkey。
  • 存储同步:通过 GM_addValueChangeListener 实现多标签页实时更新,体验接近原生 App。

整个脚本不到 600 行核心逻辑,却覆盖了日常 99% 的使用场景。


安装 & 使用(30 秒搞定)

  1. 安装 Tampermonkey
  2. 点击安装
  3. 刷新任意网页,右下角会出现一个 🔐 按钮
  4. 点击它,添加你的第一个 TOTP 账户!

⚠️ 安全提醒:密钥仅存储在你本地浏览器(通过 GM_setValue),切勿在公共电脑使用。脚本无任何网络请求,可放心审计。


开源 & 反馈

这个小工具已经在我自己的工作流里跑了两周,稳定得一批。如果你也受够了“手机验证”的打断感,欢迎试试!


最后说两句

做这个脚本的初衷很简单:让重复的事,自动化;让繁琐的事,一键化

技术人的时间,不该浪费在“掏手机”这种机械操作上。

希望它也能成为你浏览器里的一个小帮手。

—— 写于一个不想再解锁手机的深夜 😴