Как остановить ботов от наращивания счетчика загрузки файлов в PHP?

Когда пользователь нажимает ссылку для загрузки файла на моем веб-сайте, он переходит в этот файл PHP, который увеличивает счетчик загрузки для этого файла а затем header() - перенаправляет их в фактический файл. Я подозреваю, что боты следуют ссылке для скачивания, однако количество загрузок неточно.

  • Как сообщить ботам, что они не должны следовать ссылке?
  • Есть ли способ обнаружить большинство ботов?
  • Есть ли лучший способ подсчитать количество загрузок файла?

Ответ 1

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

Не все боты уважают это, но большинство это делает. Если вы действительно хотите предотвратить доступ через ботов, сделайте ссылку на него POST вместо GET. Боты не будут следовать URL-адресам POST. (I.E., используйте небольшую форму, которая отправляется обратно на сайт, который приведет вас к рассматриваемому URL.)

Ответ 2

Я бы подумал, что ответа Godeke robots.txt будет достаточно. Если у вас абсолютно нет ботов на вашем счетчике, я бы рекомендовал использовать файл robots вместе с тем, чтобы не увеличивать количество кликов с помощью общих агентов пользователя робота.

Ни один из способов не является совершенным., но смесь двух, вероятно, немного более строгая. Если это был я, я бы, вероятно, просто придерживался файла robots, поскольку это легко и, вероятно, самое эффективное решение.

Ответ 3

Годеке прав, robots.txt - первое, что нужно сделать, чтобы боты не загружались.

Что касается подсчета, это действительно проблема веб-аналитики. Не сохраняете ли вы свои журналы доступа к WWW и запускаете их через программу аналитики, такую ​​как Webalizer или AWStats (или причудливые альтернативы, такие как Webtrends или Urchin)? Для меня это путь для сбора такого рода информации, потому что это легко, и там нет PHP, перенаправления или другой производительности, когда пользователь загружает файл. Вы просто используете журналы Apache, которые вы все равно сохраняете. (И grep -c даст вам быстрый "n" грязный подсчет определенного файла или шаблона подстановки.)

Вы можете настроить программное обеспечение статистики для игнорирования обращений к ботам, конкретным пользовательским агентам и другим критериям (и если вы измените свои критерии позже, вы просто переработаете старые данные журнала). Конечно, это требует, чтобы у вас были все ваши старые журналы, поэтому, если вы бросали их с чем-то вроде logrotate, вам придется начинать без каких-либо исторических данных.

Ответ 4

Вы также можете обнаружить вредоносные боты, которые не будут уважать файл robots.txt, используя http://www.bad-behavior.ioerror.us/.