Подтвердить что ты не робот

Как распознать ботов с php?

Я создаю статистику для своих пользователей и не желаю посещать ботов, чтобы их учитывали.

Теперь у меня есть базовый php с mysql, увеличивающий 1 при каждом вызове страницы.

Но боты также добавляются к счету.

Кто-нибудь может подумать о пути?

В основном это просто главные из них. Google, Yahoo, Msn и т.д.

4b9b3361

Ответ 1

Вы должны фильтровать строки user-agent. Вы можете найти список около 300 общих пользовательских агентов, заданных ботами здесь: http://www.robotstxt.org/db.html Выполнение этого списка и игнорирование ботов-агентов-агентов до вы запускаете инструкцию SQL, чтобы решить вашу проблему практически для всех практических целей.

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

Ответ 2

Вы можете проверить строку User Agent, пустые строки или строки, содержащие "robot", "spider", "crawler", "curl", скорее всего, будут роботами.

preg_match('/robot|spider|crawler|curl|^$/i', $_SERVER['HTTP_USER_AGENT']));

Ответ 3

У нас есть аналогичный случай использования, и один из вариантов, который мы недавно нашли весьма полезным, - это класс UASParser от user-agent-string.info.

Это класс PHP, который извлекает последний набор определений строк пользовательского агента и кэширует их локально. Класс может быть настроен так, чтобы вытягивать определения так часто или редко, как вы считаете нужным. Автоматическое получение их, как это означает, что вам не нужно держать в курсе различных изменений ботов пользовательских агентов или новых, поступающих на рынок, хотя вы полагаетесь на UAS.info, чтобы сделать это точно.

Когда класс вызывается, он анализирует текущий пользовательский агент посетителя и возвращает ассоциативный массив, разбивающий составные части, например.

Array
(
    [typ] => browser
    [ua_family] => Firefox
    [ua_name] => Firefox 3.0.8
    [ua_url] => http://www.mozilla.org/products/firefox/
    [ua_company] => Mozilla Foundation
    ........
    [os_company] => Microsoft Corporation.
    [os_company_url] => http://www.microsoft.com/
    [os_icon] => windowsxp.png
)

Поле typ установлено на browser, когда UA идентифицирован как вероятный принадлежащий человеку посетитель, и в этом случае вы можете обновить свою статистику.

Несколько оговорок здесь:

  • Вы полагаетесь на UAS.info для строк пользовательского агента, которые являются точными и актуальными.
  • Боты, такие как google и yahoo, объявляют себя в своих строках агента пользователя, но этот метод все равно будет считать посещения ботов, претендующих на роль посетителей-людей (отправка поддельных UA).
  • Как @amdfan, упомянутый выше, блокирование ботов через robots.txt должно остановить большинство из них до достижения вашей страницы. Если вам нужно индексировать контент, но не увеличивать его, то метод robots.txt не будет реалистичным вариантом

Ответ 4

Перед увеличением количества просмотров страницы проверьте пользовательский агент, но помните, что это может быть подделано. PHP предоставляет пользовательский агент в $_SERVER['HTTP_USER_AGENT'], предполагая, что веб-сервер предоставляет ему эту информацию. Более подробную информацию о $_SERVER можно найти на http://www.php.net/manual/en/reserved.variables.server.php.

Список пользовательских агентов можно найти в http://www.user-agents.org; Googling также предоставит имена тех, кто принадлежит основным провайдерам. Третий возможный источник - это ваши журналы доступа к веб-серверу, если вы можете их заполнить.

Ответ 5

Вы пытались идентифицировать их по информации своего агента-агента? Простой поиск Google должен предоставить вам пользовательские агенты, используемые Google и т.д.

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

РЕДАКТИРОВАТЬ: Предполагая, что вы не хотите ограничивать доступ к ботам, но просто не считайте его посещение в своем статистике.