一日一技:我写了个 Chrome 插件,让你再也不用重置密码

摄影:产品经理
醇厚多汁的红酒炖牛肉
相信绝大多数人都经历过这个密码循环:
-
打开某个网站,输入你记忆中的密码 -
“密码错误” -
好吧,点”重置密码” -
邮箱收验证码,输入新密码 -
“密码必须包含大写字母!” -
行,加了一个大写字母 -
“不能与之前的密码相同。” -
……
你的记忆力没有问题。 问题出在每个网站的密码规则都不一样:Chase 银行要求 8-32 位、必须有大小写+数字+特殊字符、特殊字符还只能用 ! @ # $ % ^ & * ( );GitHub 要求至少 8 位或者 15 位以上(两套规则);Apple 要求不能有超过 3 个连续相同字符;PayPal 的上限是 20 位……
你根本不是忘了密码,你是忘了这个网站的密码规则是什么。
问题的本质
仔细想想,这件事非常荒谬:
每个网站都知道自己的密码规则是什么,但它们只在你注册或重置密码时才告诉你。
你平时登录的时候,密码框旁边什么提示都没有。你输入记忆中的密码 → 错了 → 再试一个 → 还是错 → 你已经不记得当初注册的时候被哪条奇葩规则逼着改了什么。只有当你放弃登录、点了”重置密码”之后,网站才在设置新密码的页面上列出所有规则。
但问题是:如果你在登录的时候就能看到这些规则,你大概率能一次就想起来正确的密码。 因为你的密码库通常就那么几套模板,区别只是有没有大写、有没有特殊字符、长度是多少。知道了规则,你自然就能回忆起当初用的是哪一套。
Don’t Reset Password
基于这个想法,我做了一个 Chrome 扩展:Don’t Reset Password[1]。
它做的事情非常简单:
-
自动检测密码输入框 -
从一个社区维护的规则数据库中查找当前网站的密码规则 -
在输入框下方直接显示:最小长度、最大长度、是否需要大写、是否需要特殊字符、允许哪些特殊字符……
就这样。没有其他功能了。
关于隐私
我知道你在想什么——”一个读取密码框的插件?”
所以我要把这件事说清楚:
-
不读取、不存储、不传输你的密码。 插件只是在密码输入框旁边显示一段提示文字,它不需要也不会访问你输入的内容。 -
不需要注册账号。 零个人数据。有一个匿名 ID 用来防止垃圾贡献,仅此而已。 -
规则本身是公开信息。 “密码必须包含大写字母”不是秘密,这是网站在你注册或重置密码时本来就会告诉你的东西——只不过在你正常登录的时候它不会显示。
代码完全开源,你可以自己审计。
社区驱动
一个人不可能覆盖所有网站的密码规则。所以这个规则数据库是社区众包的——任何人都可以贡献自己知道的网站规则,所有人都受益。
目前已经覆盖了 30 多个常见网站(Google、GitHub、Apple、Chase、PayPal、Steam、淘宝等),但显然还远远不够。如果你在使用中发现某个网站的规则缺失,点一下就可以贡献。
为什么要写这个
说实话,这个工具的技术含量不高。它没有用到什么高深的算法,没有 AI,甚至连后端都很简单。
但我觉得它解决了一个真实的、每天都在发生的、所有人都遇到过的问题。而且解决方案如此简单,简单到让人奇怪为什么之前没有人做。
最好的工具不是最复杂的工具,而是让你觉得”这不是理所应当的吗?”的工具。
试试看:GitHub[2] | 落地页[3]
Don’t Reset Password: https://github.com/kingname/dont-reset-password
[2]GitHub: https://github.com/kingname/dont-reset-password
[3]落地页: https://drp.kingname.info
END

未闻 Code·知识星球开放啦!
一对一答疑爬虫相关问题
职业生涯咨询
面试经验分享
每周直播分享
……
未闻 Code·知识星球期待与你相见~

夜雨聆风
