Как определить лучших законных поисковых роботов? - PullRequest
2 голосов
/ 14 декабря 2010

Я хочу разработать очень надежный метод, позволяющий обнаруживать только несколько популярных пауков поисковых систем, таких как googlebot, и разрешать им доступ к контенту на моем сайте, в противном случае для просмотра этого контента требуется обычная регистрация пользователя / логин.

Обратите внимание, что я также использую файлы cookie, чтобы позволить пользователям получать доступ к некоторому контенту без регистрации.Таким образом, если куки отключены в клиентском браузере, никакой контент, кроме главной страницы, не предлагается.Но я слышал, что пауки поисковых систем не принимают куки, так что это также блокирует законных поисковых роботов.Это правильно?

Одно предложение, которое я слышал, это сделать обратный поиск с IP-адреса, и если он разрешается, например, на googlebot.com, то выполнить прямой просмотр DNS и, если вернется исходный IP, то его законныйа не кто-то выдающий себя за гуглбота.Я использую Java на Linux-сервере, поэтому я ищу решение на основе Java.

Я позволяю использовать только самых хороших пауков в поисковых системах, таких как google yahoo bing alexa и т. Д., И не допускаю других для снижения нагрузки на сервер.Но его очень важные топ-пауки индексируют мой сайт.

Ответы [ 4 ]

3 голосов
/ 14 декабря 2010

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

Первая линия защиты:

Создайте файл robots.txt в корне вашего сайта. См. http://www.robotstxt.org/ для получения дополнительной информации об этом. Это будет держать хороших, хорошо управляемых ботов в тех областях сайта, которые имеют больше смысла. Помните, что robots.txt зависит от строки User-Agent, если вы предоставляете другое поведение для одного бота против другого бота. Смотри http://www.robotstxt.org/db.html

Вторая линия обороны:

Фильтр по User-Agent и / или IP-адресу. Меня уже критиковали за это, но удивительно, как немногие боты маскируют, кто они и что они - даже плохие. Опять же, это не остановит все плохое поведение, но обеспечивает уровень должной осмотрительности. Подробнее об использовании User-Agent позже.

Третья линия защиты:

Мониторинг журналов доступа вашего веб-сервера. Используйте анализатор логов, чтобы выяснить, откуда исходит основная часть вашего трафика. Эти журналы включают в себя как IP-адрес, так и строки агента пользователя, так что вы можете определить, сколько экземпляров бота поражает вас, и действительно ли это тот, о ком он говорит: см. http://www.robotstxt.org/iplookup.html

Возможно, вам придется запустить собственный анализатор логов, чтобы узнать частоту запросов от разных клиентов. Все, что выше определенного порога (например, может быть 10 / секунду), будет кандидатом на ограничение скорости позже.

Использование пользовательского агента для альтернативного содержимого сайта:

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

Заключительное примечание:

У вас только так много ресурсов, и не каждый законный бот ведет себя хорошо (то есть игнорирует robots.txt и создает большую нагрузку на ваш сервер). Вы должны будете обновить свой подход с течением времени. Например, если один IP-адрес оказывается пользовательским поисковым ботом, созданным вашим клиентом (или его клиентом), вам, возможно, придется прибегнуть к ограничению скорости этого IP-адреса вместо полной его блокировки.

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

2 голосов
/ 05 апреля 2015

Правильный и быстрый способ идентифицировать робота Googlebot:

  1. проверить строку user-agent
  2. , если Googlebot, проверить IP по DNS

Только клиенты, которые идентифицируют себя как Googlebot, платят единовременную цену за проверку IP / DNS.Предполагая, что вы некоторое время будете локально кэшировать результаты по IP-адресу.

Для проверки пользовательского агента вы можете использовать простую функциональность Java String.Что-то вроде userAgent.contains("Googlebot") в соответствии с https://support.google.com/webmasters/answer/1061943, иначе вы можете использовать эту библиотеку: https://github.com/before/uadetector

Что касается DNS, Google рекомендует https://support.google.com/webmasters/answer/80553

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

Например:

host 66.249.66.1 1.66.249.66.in-addr.arpa указатель доменного имени crawl-66-249-66-1.googlebot.com.

host crawl-66-249-66-1.googlebot.com crawl-66-249-66-1.googlebot.com имеет адрес 66.249.66.1

Bing работает так же с bingbot, см. http://www.bing.com/webmaster/help/how-to-verify-bingbot-3905dc26

Поскольку мне нужно то же самое, я поставилнемного кода Java в библиотеку и опубликовал его на GitHub: https://github.com/optimaize/webcrawler-verifier он доступен в Maven Central.И вот сообщение в блоге, описывающее это: http://www.flowstopper.org/2015/04/is-that-googlebot-user-agent-really-from-google.html

2 голосов
/ 14 декабря 2010

Я хочу разработать очень надежный метод, позволяющий обнаруживать только несколько популярных пауков поисковых систем, таких как googlebot, и разрешать им доступ к контенту на моем сайте, в противном случае для просмотра этого контента требуется обычная регистрация пользователя / логин.

Обычный подход к этому - настроить файл robots.txt , чтобы разрешить искатели, которые вам нужны, и запретить остальные. Конечно, это зависит от следователей, следующих правилам, но для тех, кто этого не делает, вы можете прибегнуть к таким вещам, как строки агента пользователя, проверка IP-адреса и т. Д.

Хорошее в robots.txt:

  • Это просто настроить.
  • Это оказывает минимальное влияние на ваш сайт. Сканер с хорошим поведением извлечет файл и (при условии, что вы запретили сканеру) просто уйдет.
  • Вы можете указать, какие части вашего сайта можно сканировать.

Обратите внимание, что я также использую файлы cookie, чтобы пользователи могли получать доступ к некоторому контенту без регистрации. Таким образом, если куки отключены в клиентском браузере, никакой контент, кроме главной страницы, не предлагается. Но я слышал, что пауки поисковых систем не принимают куки, так что это также блокирует законных поисковых роботов. Это правильно?

Я верю в это. См. Взгляд Google на то, что вы делаете.

Одно предложение, которое я услышал, это сделать обратный поиск по IP-адресу и, если он разрешается, например, на googlebot.com, то выполнить прямой просмотр DNS и, если вернется исходный ip, то он является законным, а не кем-то, выдающим себя за googlebot. ,

Это, вероятно, будет, но это довольно дорого. Robots.txt - более простой подход, и его легко реализовать в первую очередь.

0 голосов
/ 14 декабря 2010

Посетите этот сайт:

http://www.user -agents.org /

У них также есть версия базы данных в формате XML, которую можно загрузить и включить.Они классифицируют известные идентификаторы заголовка «Пользователь-агент» по тому, являются ли они браузером, средством проверки ссылок / сервера, средством загрузки, прокси-сервером, роботом / пауком / поисковой системой или спамом / плохим ботом.

ПРИМЕЧАНИЕ Я столкнулся с парой строк User-Agent, представляющих среду выполнения Java, которую кто-то взломал, чтобы очистить сайт.Оказалось, что в этом случае кто-то делал свой собственный скребок для поисковой машины, но он также мог быть пауком, чтобы загрузить весь ваш контент для внешнего / автономного использования.

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