Как остановить ботов от наращивания счетчика загрузки файлов в 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/.