Тему скорее не в этот раздел но я думаю новичкам это будет тоже полезно знать...
1. Есть такая вещь в СЕО как серверные заголовки "if-modified-since" и "last-modified-since" названия говорят сами за себя. Но в целом это такая вещь которая отвечает поисковому роботу когда были внесены последние изменения на страницу чтобы лишний раз он ее не индексировал.
2. Есть такая вещь как Кеширование, я думаю тут рассказывать не нужно что это и для чего. Но если мы будем отдавать пользователям наши серверные заголовки то их браузеры автоматом начнут кешировать все подряд. И получится что то типо мы добавили товар в корзину перешли на другую страницу бац а товара там как небывало ну и прочие несуразные вещи...
В общем решение как я понимаю тут только одно:
1. Определяем кто зашел на сайт робот или человек + (это не плохая статистика)
2. Серверные заголовки отдаем только роботам
3. Пишем нормальный кеширующий класс и проводим через него пользователей
Все было бы замечательно если бы не убийственная задача с определением поискового робота.
Я начал гуглить и на все что я натыкался это темы 2008 года о том что робота очень просто определить через серверную переменную:
$_SERVER['HTTP_USER_AGENT']
АГА! как бы ни так!
Конечно с большенством поисковиков это срабатывает и даже очень неплохо но вот какой парадокс выяснился на днях.
У mail.ru что то вроде 27 поисковых машин, "и я раньше думал что они берут поиск яндекса"
Так вот отсидев сутки за мониторингом я увидел около 50 секундных сессий на главную страницу моего домена
Причем именно сессий каждое новое подключение было с пустыми COOKIE, Сессии определились как гостевые то есть сайт не узнал в них робота.
в $_SERVER['HTTP_USER_AGENT'] было вот это (mozilla/5.0 (x11; linux x86_64; rv:18.0) gecko/20100101 firefox/18.0)
ip адресс: 217.69.133.186
Whois определил домен: spider7.mail.ru
С секундными сессиями все понятно их можно объединить в одну жирную.
Но вот с определением робота немного не ясно.
Я написал что то вроде:
if(stristr(gethostbyaddr($_SERVER['REMOTE_ADDR']), 'mail.ru')){...}
В конкретно данном случае это сработает но кто знает на что еще способны поисковики?
Лучшим способом было бы определение домена входящего если такой имеется
+ куча мутатени с определением пришел ли человек через прокси гугла чтобы случайно не идентифицировать его как робота.
Собственно вопрос: Есть ли какой ни будь альтернативный, правильный, 100% метод определения ботов?
Ну или хотябы без сокетов, курла и сторонних сервисов определить домен зашедшего?