当用户单击链接以在我的网站上下载文件时,他们会转到此 PHP 文件,该文件会增加该文件的下载计数器,然后 header() 将它们重定向到实际文件。但是,我怀疑机器人正在跟踪下载链接,因此下载次数不准确。
- 我如何让机器人知道他们不应该点击链接?
- 有没有办法检测大多数机器人?
- 有没有更好的方法来计算文件的下载次数?
robots.txt:http ://www.robotstxt.org/robotstxt.html
并非所有机器人都尊重它,但大多数都尊重它。如果您真的想阻止通过机器人进行访问,请将指向它的链接设为 POST 而不是 GET。机器人不会遵循 POST 网址。(即,使用一个小表单回发到将您带到相关 URL 的站点。)
我认为 Godeke 的 robots.txt 答案就足够了。如果您绝对不能让机器人成为您的计数器,那么我建议您使用 robots 文件,同时不要使用一些常见的机器人用户代理来增加点击次数。
两种方式都不是完美的。但两者的混合可能更严格一些。如果是我,我可能会坚持使用 robots 文件,因为它很容易并且可能是最有效的解决方案。
Godeke 是对的,robots.txt 是阻止机器人下载的第一件事。
关于计数,这确实是一个网络分析问题。您是否没有保留您的 www 访问日志并通过Webalizer或AWStats等分析程序(或 Webtrends 或 Urchin 等花哨的替代方案)运行它们?对我来说,这是收集此类信息的方法,因为它很简单,并且在用户下载文件时没有 PHP、重定向或其他性能损失。您只是在使用您保留的 Apache 日志。(并且grep -c
会给你一个特定文件或通配符模式的快速“n”脏计数。)
您可以将统计软件配置为忽略机器人或特定用户代理和其他标准的点击(如果您稍后更改标准,您只需重新处理旧的日志数据)。当然,这确实需要您拥有所有旧日志,因此如果您一直在折腾它们,那么logrotate
您将不得不在没有任何历史数据的情况下开始。
您还可以使用http://www.bad-behavior.ioerror.us/检测不尊重 robots.txt 的恶意机器人。