纯静态站点 · 零第三方请求 · 密钥本地计算拔掉网线后刷新页面,依然可用

2FA Authenticator

纯静态 · 浏览器本地 · 零追踪
纯静态 · 无后端
0 第三方请求 · 无追踪
离线可用 · 可拔网线
源码可审计 · 单文件
添加账户

工作原理

本工具在浏览器本地完成全部计算,符合 RFC 6238 TOTP 标准。流程:

1

输入或扫描密钥

粘贴服务方提供的 Base32 密钥,或上传 otpauth:// 格式二维码图片本地识别。

2

本地 HMAC-SHA1 计算

使用浏览器内置 Web Crypto API 在本地对当前时间计数器做 HMAC-SHA1,截取并取模得到 6 位码。

3

每 30 秒自动刷新

倒计时归零后自动重新计算,与服务器时钟无关,仅依赖你设备的本地时间。

4

双重本地保存

账户同时写入 localStorage 与 Cookie,清浏览器数据前不会丢失。点击验证码卡片一键复制。

兼容性

本工具生成的 TOTP 码与以下主流验证器应用互通(同一密钥生成相同验证码):

应用 / 平台算法位数周期兼容
Google AuthenticatorSHA1630s
Microsoft AuthenticatorSHA1630s
AuthySHA1630s
1Password / BitwardenSHA1630s
Aegis / FreeOTP+SHA1630s
Steam Guard自定义530s
HOTP (计数器型)SHA16

安全模型:0 网络请求如何验证

“纯静态 + 0 请求”不是营销话术,而是可证伪的技术事实。三种自验方式:

1. DevTools Network 面板

打开浏览器开发者工具 → Network → 勾选 Disable cache → 刷新页面 → 使用工具几分钟。你会看到首次加载后没有任何 XHR / Fetch 请求。

2. 拔网线 / 离线模式

首次加载完成后,断开网络(拔网线、关 WiFi 或在 DevTools → Application → Service Workers 勾选 Offline),刷新页面,工具照常运行。

3. 审计 CSP 头

本站 HTTP 响应头中 Content-Security-Policy 显式声明 connect-src 'self',技术上禁止页面发起任何跨域网络请求。即使代码被注入也无法外传数据。

数据存储

迁移指南:从其他验证器导入

从 Google Authenticator

  1. Google Authenticator 不直接导出 otpauth 二维码。在 Android 上可借助开源应用 Aegis Authenticator 导入 Google 账户后导出。
  2. 获取到 otpauth:// 二维码图片后,点击本页“扫描二维码”按钮上传识别。
  3. 或在各大服务后台重新生成 2FA 密钥,手动复制 Base32 密钥到本工具。

从 Aegis / FreeOTP+ / Bitwarden

这些应用支持导出 otpauth:// URI 列表或二维码,直接用本工具扫描导入即可。

从 Authy

Authy 不支持直接导出。需在服务后台重置 2FA 并重新绑定本工具。

常见问题 FAQ

这个工具真的零网络请求吗?如何验证?

是。本站为纯静态页面,所有 HTML/CSS/JS 均由静态托管服务返回。除首次加载所需的静态文件外,运行时不向任何服务器发送请求。打开浏览器 DevTools 的 Network 面板刷新页面,或断网后刷新页面,工具照常运行。

我的密钥会被上传到服务器吗?

不会。验证码计算使用浏览器内置的 Web Crypto API(HMAC-SHA1)在本地完成。账户数据只保存在你浏览器的 localStorage 和 Cookie 中,从不通过网络发送。CSP 头部已将 connect-src 设为 self,技术上禁止了任何上传行为。

账户数据保存在哪里?换设备会丢失吗?

账户数据双重保存:主存 localStorage(key 为 2fa_accounts),副存 Cookie 作为备份。两者都绑定在当前浏览器和域名下,换设备或清浏览器数据会丢失。建议定期在 DevTools → Application → Local Storage 中导出 JSON 作为离线备份。

支持哪些验证码标准?

当前支持 Google Authenticator 兼容的 TOTP(RFC 6238)格式:HMAC-SHA1、30 秒刷新、6 位数字。兼容 Google / Microsoft / Authy / 1Password / Bitwarden / Aegis / FreeOTP+ 扫描的 otpauth:// 二维码。暂不支持 Steam Guard(5 位)和 HOTP(计数器型)。

能离线使用吗?可以安装到桌面或手机主屏吗?

可以。本站是 PWA,首次加载后 Service Worker 会缓存所有静态资源,断网也能正常使用。在 Chrome / Edge / Safari 中通过地址栏的安装按钮将其添加到桌面或主屏,像原生应用一样使用。

如何从 Google Authenticator 迁移到本工具?

Google Authenticator 不直接导出 otpauth 二维码。可借助 Aegis Authenticator、FreeOTP+ 等开源应用导入 Google 账户后再导出 otpauth 二维码,然后用本站点的扫描二维码功能逐一导入。也可手动复制各服务的 Base32 密钥到本工具。

和原生 App(Google Authenticator、Authy)相比有什么区别?

优势:纯静态、零网络请求、可在 DevTools 中审计、无需安装即可使用、跨平台。劣势:不支持云端同步、不支持生物识别锁屏、不支持 Steam Guard 等非标准格式。适合注重隐私、临时使用或开发者测试场景。

时钟不同步会导致验证码错误吗?

TOTP 依赖时间,若设备时间与服务器偏差超过 30 秒,生成的验证码将无法通过验证。请确保系统时间已开启自动同步(NTP)。本工具使用浏览器获取的本地时间,不会向服务器校时。