Как определить веб-сканеры Google / Yahoo / MSN с помощью PHP? - PullRequest
1 голос
/ 27 мая 2009

AFAIK,

$ _ SERVER ['REMOTE_HOST'] должен заканчиваться на "google.com" или "yahoo.com".

но это самый надежный метод?

любой другой выход?

Ответы [ 8 ]

9 голосов
/ 27 мая 2009

Вы определяете поисковые системы по пользовательскому агенту и IP-адресу . Более подробную информацию можно найти в Как определить пауков и веб-роботов поисковых систем . Также стоит отметить этот список . Однако вы не должны относиться к пользовательским агентам (или даже к удаленным хостам) как к определенным. Пользовательские агенты на самом деле не более, чем то, что говорит вам другой конец, и, конечно, вы можете сказать вам что угодно. Писать код под видом робота Google просто.

В PHP это означает просмотр $_SERVER['HTTP_USER_AGENT'] и $_SERVER['REMOTE_HOST'].

Есть много поисковых систем, но, честно говоря, это всего лишь немногие, о которых вы действительно заботитесь вообще. Google и Yahoo вместе имеют почти весь рынок. Но, конечно, это зависит от того, чего вы пытаетесь достичь.

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

8 голосов
/ 27 мая 2009

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

  • Проверка Googlebot (используйте user-agent, откройте DNS, если хотите быть уверенным)
  • Пользовательский агент Yahoo будет содержать "Slurp"

Тем не менее, некоторые люди, пишущие (как правило, плохо ведущие себя) веб-скреберы, будут устанавливать свои строки User Agent такими же, как у «законных» сканеров, таких как Google. Вы можете поймать их, выполнив поиск по IP-адресу / имени хоста бота, чтобы убедиться, что они действительно исходят от Google / Yahoo / etc. Еще немного информации о том, что искать в поисках имени хоста ( из этой статьи ):

  • Сканеры Google заканчивают googlebot.com, как в crawl-66-249-70-244.googlebot.com.
  • Сканеры Yahoo заканчивают crawl.yahoo.net, как в llf520064.crawl.yahoo.net.
  • Сканеры Live Search заканчиваются search.msn.com, как в msnbot-65-55-104-161.search.msn.com.
  • Спрашивают, что сканеры заканчиваются на ask.com, как в crawler4037.ask.com.
5 голосов
/ 27 мая 2009

Вам, вероятно, лучше использовать $ _SERVER ['HTTP_USER_AGENT'] и искать Googlebot или Yahoo! Slurp.

2 голосов
/ 27 мая 2009

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

Что вам нужно сделать, это посмотреть на IP разных ботов. http://www.google.com/support/webmasters/bin/answer.py?hl=en&answer=80553

1 голос
/ 26 июля 2014

IP-адреса сканеров Google / Bing / Yahoo -

http://myip.ms/info/bots/Google_Bing_Yahoo_Facebook_etc_Bot_IP_Addresses.html

1 голос
/ 27 мая 2009
$_SERVER['HTTP_USER_AGENT']

Проверьте различные строки агента пользователя: http://www.user -agents.org /

0 голосов
/ 27 мая 2009

Я что-то взломал, но вам нужно будет посмотреть на $ _SERVER ['HTTP_USER_AGENT'], чтобы узнать, пришли ли они из домена поисковой системы.

function is_crawlers() {

   $sites = 'Google|Yahoo|msnbot|'; // Add the rest of the search-engines 

   return (preg_match("/$sites/", $_SERVER['HTTP_USER_AGENT']) > 0) ? true : false;  

   }
0 голосов
/ 27 мая 2009

Лучший способ сделать это с хорошо известными и действующими роботами, как те, о которых вы упомянули, это пользовательский агент , который вы можете найти в $ _SERVER ['HTTP_USER_AGENT'].

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