Как определить, поступил ли веб-запрос от сканера Google? - PullRequest
5 голосов
/ 22 июля 2010

С точки зрения HTTP-сервера.

Ответы [ 3 ]

8 голосов
/ 22 июля 2010

Вы можете прочитать официальную страницу Проверка Googlebot .

Цитирование страницы здесь:

Вы можете проверить, что бот, обращающийся к вашему серверу, действительно является роботом Googlebot. (или другой пользовательский агент Google) с помощью обратного поиска DNS, проверить, что имя находится в домене googlebot.com, а затем выполнить прямой просмотр DNS с использованием этого имени googlebot. Это полезно, если вы обеспокоены тем, что спаммеры или другие нарушители прав доступа ваш сайт, утверждая, что он является роботом Google.

Например:

> host 66.249.66.1
1.66.249.66.in-addr.arpa domain name pointer  crawl-66-249-66-1.googlebot.com.

> host crawl-66-249-66-1.googlebot.com
crawl-66-249-66-1.googlebot.com has address 66.249.66.1

Google не публикует публичный список IP адреса для веб-мастеров в белый список. Это потому что эти IP диапазоны адресов могут меняться, вызывая проблемы для любых веб-мастеров, которые жестко закодировал их. Лучший способ определить доступы по Googlebot использовать пользовательский агент (Googlebot).

6 голосов
/ 22 июля 2010

Я зафиксировал запрос гусеничного робота в своем приложении asp.net, и вот как выглядит подпись гусеничного сканера.

Запрашивающий IP : 66.249.71.113
Клиент : Mozilla / 5.0 (совместимо; Googlebot / 2.1; + http://www.google.com/bot.html)

В моих журналах наблюдается много разных IP-адресов для сканера Google в 66.249.71.*диапазон. Все эти IP-адреса географически расположены в Маунтин-Вью, Калифорния, США.

Хорошим решением для проверки того, поступает ли запрос от Google Crawler, было бы подтверждение того, что запрос содержит Googlebot и * 1019.*. Как я уже сказал, с одним и тем же запрашивающим клиентом наблюдается множество IP-адресов, я бы не рекомендовал проверять IP-адреса. И, возможно, именно здесь на снимке указывается личность клиента. Так что пойдите для проверки личности клиента.

Вот пример кода на C #.

    if (Request.UserAgent.ToLower().Contains("googlebot") || 
             Request.UserAgent.ToLower().Contains("google.com/bot.html"))
    {
        //Yes, it's google bot.
    }
    else
    {
        //No, it's something else.
    }

Важно отметить, что любой Http-клиент может легко подделать это.

0 голосов
/ 22 июля 2010

Если вы используете Apache Webserver, вы можете взглянуть на файл журнала 'log \ access.log'.

Затем загрузите IP-адреса Google с http://www.iplists.com/nw/google.txt и проверьте, содержится ли один из IP-адресов в вашем журнале.

...