如何禁止爬虫、机器人、虚假用户并只允许特定浏览器?

How to ban crawlers, bot, fake user and allow only specific browser?

我正在尝试制作一个好的网络流量过滤器,我的目标是禁止所有机器人、爬虫、蜘蛛、非真实用户并只允许特定浏览器。

我在 PHP 中做了一些测试,在 JavaScript 中做了一些测试,但我不觉得它做得很好。我想听听专家的意见。我认为使用 PHP + JavaScript + robots.txt + .htaccess 的组合可以做到这一点。

我知道用户代理可以被伪造,但我想知道是否有更好的检测方法。例如,我想只允许用户使用 Mozilla Firefox(无论版本如何)。

所有其他浏览器都应该进入排除列表或类似的列表,这就像一个过滤器。

最好的方法是什么?简而言之,检测浏览器只允许Firefox,避免所有虚假用户、机器人、蜘蛛、爬虫和其他垃圾。

那好吧,让我试着在这里提供一些想法。

您应该结合使用以下技巧:

  1. 机器人会将合法的爬虫拒之门外;
  2. 在客户端使用一些 Javascript 验证来阻止大多数爬虫(这些爬虫很少能够 运行 Javascript);
  3. 在您的服务器端,也使用 user agent service 来识别和过滤用户代理;
  4. 跟踪 IP 地址以便您可以 one-off 禁止 "known offenders";

为了进一步扩展 #2,您的着陆页可以使用 JavaScript 来放置一个具有 "known" 值的 cookie,该值可以映射回发起者。一个例子是获取用户代理和 IP 地址并计算哈希值。这仍然可以被伪造,但大多数违规者只会决定忽略您的网站,而不是努力绕过您的保护措施。

希望对您有所帮助。