【问题标题】:How to ban crawlers, bot, fake user and allow only specific browser?如何禁止爬虫、机器人、虚假用户并只允许特定浏览器?
【发布时间】:2017-05-29 20:45:35
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 这里的麻烦是任何东西都可以被伪造,包括IP地址。您可以在浏览器上运行一些 javascript 来尝试检测浏览器,而不是依赖用户代理,但这也可以被伪造。我的问题是:你真正想要完成什么?为什么要根据浏览器过滤?
  • @RogerCracel 我只是想避免所有垃圾(蜘蛛、机器人、爬虫等),只关注使用 Firefox 的真实用户。我知道一切都可以伪造。但我会寻找最好的方法来找出答案,最后是否有一些用户制造了假货并不重要。重要的是过滤最大值并使该任务变得困难。

标签: javascript php .htaccess browser-detection robot


【解决方案1】:

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

您应该使用多种技术:

  1. 机器人会将合法爬虫排除在外;
  2. 在客户端使用一些 Javascript 验证来阻止大多数爬虫(这些爬虫很少有能力运行 Javascript);
  3. 在您的服务器端,也使用user agent service 来识别和过滤用户代理;
  4. 跟踪 IP 地址,以便您可以一次性封禁“已知罪犯”;

为了进一步扩展 #2,您的目标网页可以使用 JavaScript 来删除具有“已知”值的 cookie,该值可以映射回创建者。一个示例是获取用户代理和 IP 地址并计算哈希。这仍然可以伪造,但大多数违规者只是决定忽略您的网站,而不是努力绕过您的保护措施。

希望这会有所帮助。

【讨论】:

  • 目前我认为这是最好的方法
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-11-16
  • 2016-07-25
  • 2012-04-29
  • 1970-01-01
  • 2011-12-13
  • 1970-01-01
  • 2010-12-10
相关资源
最近更新 更多