Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Разное

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как отличить бота от посетителя?
 
 автор: Enter   (30.10.2014 в 11:39)   письмо автору
 
 

Собственно, вопрос. Да, надо парсить user_agent на всякие нехорошие слова, типа, yandex, bot, crawler и т.д. но, что делать, если боты подделывают user_agent и там нет всяких нехороших слов?
Например, вот такие встречаются:

Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705)

Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.16) Gecko/20120421 Firefox/11.0

Mozilla/5.0 (Windows NT 6.1; Win64; x64; Trident/7.0; rv:11.0) like Gecko

Боты это или люди.. вот в чем вопрос.
Как распознать бота, если он может подделывать user_agent?

  Ответить  
 
 автор: Саня   (17.11.2014 в 17:09)   письмо автору
 
   для: Enter   (30.10.2014 в 11:39)
 

Можно определить "сервис-код" на основе IP адреса.
Если вкратце, то по IP адресу можно определить владельца, а по нему уже определить способ использование адресов. Если владелец - провайдер домашнего интернета, то, скорее всего, это самый обычный живой посетитель.
Если владелец - хостинговая компания, значит запрос пришел с какого-то сервера. Обычные пользователи не ходят в интернет таким образом.

Способ ненадежный, так как запросы с сервера вполне могут быть пользовательскими, если сервер выступает в качестве VPN прокси. Или провайдер домашнего интернета одновременно предоставляет хостинг и при этом не отделяет абонентские ip адреса от адресов, назначаемых серверам (сомнительно, конечно, но если пофантазировать, то вариант вполне себе). Или ещё какая-нибудь более извращённая конфигурация.
Есть ещё куча других нюансов, связанных с таким способом определения "человечности". Чуть более подробно описано в ссылке, что я дал выше.


Ещё можно отслеживать загрузку внедряемых на страницу объектов. Например, вставить на страницу однопиксельный прозрачный gif. Если страница загрузилась, а картинка - нет, значит кто-то загрузил страницу скриптом. Никто не заморачивается выкачиванием внедрённого контента. Но этот вариант тоже не на 100% надежен. Он не сработает при отключенных картинках или агрессивном кешировании. Или если браузер не поддерживает внедрённый контент (консольные браузеры).
Так же способ не сработает на продвинутых ботах, использующих какой-нибудь selenium или настоящий браузер напрямую.

  Ответить  
 
 автор: Enter   (17.11.2014 в 17:46)   письмо автору
 
   для: Саня   (17.11.2014 в 17:09)
 

Спасибо. Почитаю про сервис-коды. а вот второй метод как-то не годится. может, куки буду использовать, но пока что отложил эту задачу до лучших времен. 70 - 80 (может, 60)% ботов отсекаю. может, потом будет какое-то решение, как распознать поддельный браузер.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования