如何阻止机器人在PHP中递增我的文件下载计数器?

时间:2008-10-24 23:09:12

标签: php bots

当用户点击链接以在我的网站上下载文件时,他们会转到this PHP file,这会增加该文件的下载计数器,然后标题() - 将它们重定向到实际文件。我怀疑机器人正在关注下载链接,因此下载次数不准确。

  • 我如何让机器人知道他们不应该关注这个链接?
  • 有没有办法检测大多数机器人?
  • 有没有更好的方法来计算文件的下载次数?

4 个答案:

答案 0 :(得分:16)

robots.txt:http://www.robotstxt.org/robotstxt.html

并非所有机器人都尊重它,但大多数人都这样做。如果你真的想阻止通过僵尸程序访问,请将链接指向POST而不是GET。机器人不会关注POST网址。 (例如,使用一个小型表格回发到将您带到相关URL的网站。)

答案 1 :(得分:4)

我认为Godeke的robots.txt答案就足够了。如果您绝对无法将计数器放在计数器上,那么我建议您同时使用机器人文件,而不是使用common robot user agents增加点击次数。

两种方式都不完美。但两者的混合可能更严格一些。如果是我,我可能只是坚持机器人文件,因为它很容易,可能是最有效的解决方案。

答案 2 :(得分:3)

Godeke是对的,robots.txt是阻止机器人下载的第一件事。

关于计数,这实际上是一个网络分析问题。您是否保留了www访问日志,并通过WebalizerAWStats等分析程序(或Webtrends或Urchin等花哨的替代方案)运行它们?对我而言,这是收集此类信息的方法,因为它很容易,并且在用户下载文件时没有PHP,重定向或其他性能损失。你只是使用你正在保留的Apache日志。 (而grep -c将为您提供特定文件或通配符模式的快速'n'脏计数。)

您可以将统计软件配置为忽略机器人,特定用户代理和其他条件的命中(如果您稍后更改条件,则只需重新处理旧的日志数据)。当然,这确实要求你拥有所有旧日志,所以如果你用logrotate之类的东西抛弃它们,你将不得不在没有任何历史数据的情况下开始。

答案 3 :(得分:0)

您还可以使用http://www.bad-behavior.ioerror.us/检测不符合robots.txt的恶意机器人。