Скажите ботов, кроме людей, для статистики? - PullRequest
56 голосов
/ 11 ноября 2009

Я хочу запустить свой собственный простой скрипт веб-статистики.

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

Существует ли какой-либо открытый сервис, который делает это, как Akismet для спама? Или есть проект PHP, который посвящен распознаванию пауков и ботов и предоставляет частые обновления?

Чтобы уточнить: Я не собираюсь блокировать ботов. Мне не нужны 100% водонепроницаемые результаты . я просто хочу исключить как можно больше из моей статистики. В знать, что анализ пользователя-агента является вариант, но поддерживая шаблоны разбирать это много работы. мой вопрос в том, есть ли проект или услуга, которая делает это уже.

Баунти: Я подумал, что я бы выдвинул это в качестве справочного вопроса по теме. Лучший / самый оригинальный / наиболее технически жизнеспособный вклад получит сумму вознаграждения.

Ответы [ 15 ]

1 голос
/ 16 декабря 2010

Условие - реферер установлен

уровень apache:

LogFormat "%U %{Referer}i %{%Y-%m-%d %H:%M:%S}t" human_log
RewriteRule ^/human/(.*)   /b.gif [L]
SetEnv human_session 0

# using referrer
SetEnvIf Referer "^http://yoursite.com/" human_log_session=1

SetEnvIf Request_URI "^/human/(.*).gif$" human_dolog=1
SetEnvIf human_log_session 0 !human_dolog
CustomLog logs/human-access_log human_log env=human_dolog

На веб-странице вставьте /human/$hashkey_of_current_url.gif.
Если это бот, маловероятно, чтобы был установлен реферер (это серая область).
При прямом попадании в адресную строку браузера оно не будет включено.

В конце каждого дня, /human-access_log должен содержать все ссылки, которые фактически являются просмотром страниц человеком.

В целях безопасности хеш реферера из журнала apache должен соответствовать имени изображения

0 голосов
/ 20 декабря 2010

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

У вас также могут быть проблемы с ложными срабатываниями - как человек, я не очень часто читаю robots.txt в своем браузере, но я, конечно, могу. Чтобы эти некорректно отображались как боты, вы можете внести в белый список некоторые распространенные пользовательские агенты браузера и считать их всегда людьми. Но это просто привело бы к ведению списка пользовательских агентов для браузеров вместо одного для ботов.

Итак, такой подход did-they-request-robots.txt определенно не даст 100% водонепроницаемых результатов, но он может обеспечить некоторую эвристику для подачи в полное решение.

0 голосов
/ 20 июня 2010

Я удивлен, что никто не рекомендовал проводить тест Тьюринга . Просто установите окно чата с человеком на другом конце.

Простое решение просто не сработает: посмотрите, что произойдет, когда ПАРРИ встретится с ВРАЧОМ

Эти два «персонажа» - оба бота-болтовни, которые были написаны в ходе исследований ИИ в 70-х годах: чтобы увидеть, как долго они могут обмануть реального человека, думая, что он тоже человек. Персонаж ПАРРИ был смоделирован как параноидальный шизофреник, а ДОКТОР - как стереотипный психотерапевт.

Вот еще немного фона

0 голосов
/ 11 ноября 2009

Сделайте 1x1 GIF на своих страницах, которые вы отслеживаете. Если загружен, то, скорее всего, это браузер. Если он не загружен, скорее всего это будет скрипт.

0 голосов
/ 11 ноября 2009

=? Извините, неправильно понял. Вы можете попробовать другой вариант, который я настроил на своем сайте: создать несвязанную веб-страницу с жестким / странным именем и регистрировать посещения этой страницы. Большинство, если не все посетители этой страницы, будут ботами, так что вы сможете динамически создавать свой список ботов.

Далее следует оригинальный ответ (получение отрицательных оценок!)

Единственный надежный способ рассказать ботам от человека являются [CAPTCHAS] [1]. Вы можете используйте [reCAPTCHA] [2], если вам подходит.

[1]: http://en.wikipedia.org/wiki/Captcha
[2]: http://recaptcha.net/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...