仅为真人创建帐户

Create accounts only for real people

我正在构建一个简单的网站,用户无需注册即可试用该网站。我基本上创建 shadow 帐户并在用户不知情的情况下登录用户,因此我不必为未登录用户的功能而烦恼。

然后我将 cookie 设置给用户,这样他们以后就可以随时访问网站而不会丢失任何数据。

问题是有很多 scraper、机器人、爬虫...这些机器人每次访问时都会无意中创建一个新帐户,因为它们不接受 cookie,我无法在第二次访问时识别它们。其中一些经常访问,所以我最终得到了成千上万个从未真正使用过的帐户。

我想到了一些事情:

  1. Expire/remove 用户如果页面上没有进一步的操作 (似乎是最好的主意)
  2. 检测用户是否接受 cookies (这需要我重定向用户并验证他是否可以接受 cookies - 不确定 efficient/slow 这是怎么回事)
  3. 解析用户代理并识别浏览器,如果无法识别它是一个机器人(我不确定这有多可靠)

解决这个问题我有什么选择,你有什么建议?

您可以通过 AJAX 检查您的用户是否接受 cookie。在着陆页上设置一个 cookie,然后在使用 cookie 加载页面后立即将请求发送回服务器。并且仅当 cookie 存在时,才创建您的用户。这将很快并确认用户浏览器支持 cookie。

Expire/remove 用户也可以正常工作,但您最终可能会创建和删除大量用户,这在服务器上的开销很大。

发送虚拟 User-agent header 对于机器人来说是一件非常简单的事情,我认为他们无论如何都会这样做(坏机器人)以确保网络服务器允许爬行。所以他们不能保证浏览器的真实性。