[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Правильное определение поискового робота
Remka
Всем привет.
Тему скорее не в этот раздел но я думаю новичкам это будет тоже полезно знать...

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% метод определения ботов?
Ну или хотябы без сокетов, курла и сторонних сервисов определить домен зашедшего?
alexbel2404
if(stristr(gethostbyaddr($_SERVER['HTTP_USER_AGENT']), 'mail.ru')){...}


ip наверное, а не useragent)
Remka
Да прошу прощения все верно ip вместо useragent, я подредактировал.

Но всеже есть ли выходы из данной ситуации?
glock18
Цитата (Remka @ 28.06.2013 - 10:14)
Да прошу прощения все верно ip вместо useragent, я подредактировал.

Но всеже есть ли выходы из данной ситуации?

Никогда эту задачу не решал, но всегда придерживался мнения, что юзер-агента достаточно для большинства нужных ботов. Впрочем, от mail.ru и так не много хорошего можно сказать, а уж после этого...
Remka
Это все понятно. это не только для роботов...
Я соглашусь что мне кроме гугла и яши никто в принципе не нужен.

Но речь идет не только о роботах. Очень нужны правельные серверные заголовки в правильных местах. И нужна правильная статистика.
Дело в том что данная наработка будет применяться на сайте оптовика который продвигает мой знакомый.
И тут речь идет о чистой конверсии сайта. Тоесть нам надо знать сколько зашло человек, сколько человек что либо заказало, сколько из них постоянные клиенты и сколько пришло новых клиентов. Для компании у которой 30.000 постоянных клиентов нужно быть придельно точным в показателях.

А если раз в сутки будет приходить mail.ru и на каждой странице оставлять по 50 подключений это не совсем будет точно=)
glock18
Цитата (Remka @ 28.06.2013 - 11:20)
Это все понятно. это не только для роботов...
Я соглашусь что мне кроме гугла и яши никто в принципе не нужен.

Но речь идет не только о роботах. Очень нужны правельные серверные заголовки в правильных местах. И нужна правильная статистика.
Дело в том что данная наработка будет применяться на сайте оптовика который продвигает мой знакомый.
И тут речь идет о чистой конверсии сайта. Тоесть нам надо знать сколько зашло человек, сколько человек что либо заказало, сколько из них постоянные клиенты и сколько пришло новых клиентов. Для компании у которой 30.000 постоянных клиентов нужно быть придельно точным в показателях.

А если раз в сутки будет приходить mail.ru и на каждой странице оставлять по 50 подключений это не совсем будет точно=)

ммм... гугл аналитикс, яндекс метрика?
Remka
Они не помогут мне в заголовках и отключении кеша для пользователей.
asdf27
Я тебе один умный вещь скажу, только ты не обижайся... smile.gif

Боты не используют JavaScript...
Remka
Причем тут javascript я вообще не понял... (если имелось в виду использовать для индификации javascript то это не сюда)
А ну и кстати роботы уже давно работают с javascript иначе как быть с ajax сайтами? Ясно что URL меняется но всеже javascript интерпретируется роботами, они такиеже браузеры + анализ...

Удевительно тему помоему обозначил явно но 4 ответа и все в пустоту.
asdf27
По JS не буду участвовать в споре, останусь при своем мнении.

Цитата
Удевительно тему помоему обозначил явно но 4 ответа и все в пустоту.

А что хотел? Форум технический, тема специфическая. Сперва на SEO-форуме нужно посмотреть как народ прячет, а потом уже здесь реализацию думать.
asdf27
Ну коль уж ПС'ы кроме поиска ссылок интерпретируют весь js, пусть тогда отдадут ширину своего разрешения (монитора). Попробуй по этому параметру ($width<1)
Remka
Цитата
пусть тогда отдадут ширину своего разрешения (монитора)

зачет!
Просто мысль действительно отличная считывать разрешение.

Сеошники не парятся на этот счет поэтому и спрашивать с них нечего. Да и тема не совсем сеошная
Конечно можно сделать и на js небольшой плагин но я заголовки должен отдать перед загрузкой всего на сайте вот тут js уже не подойдет=(

По сути самые первые вещи которые должен сделать сайт это:
1. Установить кодировку
2. Завести сессию
3. Подключить базу
4. Определить робота
5. Отдать заголовки
И уж потом все остальное, именно по этому реализация должна быть придельно простая. И именно на пыхе.

Я вижу 2 решения
1. Оставить все как есть (2 уровня проверки: 1."HTTP_USER_AGENT" 2."REMOTE_ADDR")
2. Создать еще одну табличку с диапазонами ip поисковых роботов и там уж отсеивать их...

Третий как вариант через курл к примеру подключать whois и смотреть кто идет, но это + один класс до серверных заголовков. А если проект сильно нагружен и имеет много страниц то время возврата заголовков очень важно.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.