通过记住成功的验证码用户来减少验证码调用

Reduce captcha calls by remembering successful captcha users

我正在寻找一种解决方案来减少我需要进行的验证码调用次数。

我有一个网站,允许免费使用一个带有文本框和按钮的应用程序。用户可能会使用它 10 次,因此我调用了 10 次验证码。然而,这增加了我无法继续负担的荒谬费用。我需要一个解决方案来跟踪成功的验证码,这样 如果成功,用户只会收到一个验证码。

我的想法:

  1. 验证码成功
  2. 在redis中存储真实的用户标识符(Hash out IP, User Agent, and WebRTC(不完全知道这是什么,但我被推荐使用这个))
  3. 未来的调用会通过检查用户的散列标识符(90 天的 TTL)来检查用户是否有效

还有其他推荐或建议吗?有什么潜在问题吗?

PS:有关此用例中的 WebRTC 的信息也会有所帮助

我决定使用 IPUser-Agent 的散列,因为考虑到我从客户端获取的所有内容都可能被欺骗(甚至 User-Agent 也可能)。为了打击欺骗,我添加了 ip 速率限制。

现在,在从客户端发出 API 调用之前,我会调用以验证该用户是否为经过验证的用户(我认为经过验证的验证码是 24 小时的非机器人验证。我会搞砸的随着时间的推移增加)。

这应该有效地将我的验证码调用减少 60%。