Продвинутый клоакинг: как роботы индексируют платный контент
04.09.2007 SEO
Воспользовавшись как-нибудь поиском Google и кликнув по понравившейся ссылке, вы можете попасть на страницу, которая спросит пароль для просмотра контента. Как пользователей, нас всех это может только раздражать, и последнее что мы хотим - это получить новый ник и пароль, чтобы просмотреть одну страницу. Но для контент провайдера это отличный ход. Платный/премиум контент - хорошая тактика монетизации, если ваш контент достаточно для этого хорош. Пример такого премиум контента - на seomoz.org.
Это также интересный вопрос для SEO. Как именно Google индексирует платный контент?
Запускаем механизм клоакинга
Чтобы добиться индексации запароленного контента, нужно использовать клоакинг. Перед тем, как говорить, что клоакинг - это прием из арсенала black hat SEO и что вы не хотите, чтобы ваш сайт забанили/песимизировали, нужно знать, что Google штрафует не за всякий клоакинг. Все зависит от намерения. Давайте я объясню концепцию, а потом уже буду углубляться в технические детали.
Ваш платный или закрытый контент (например для определенного круга пользователей) может быть защищен вашим веб-сервером или веб-приложением (скриптом каким-нибудь). Давайте назовем это охранником. Этот охранник решает, можно ли пройти посетителю или нет в зависимости от того, какой это посетитель.
В нашем случае мы должны научить охранника отличать роботов поисковых систем от простых серферов, чтобы он не спрашивал пароль у роботов.
Вообще клоакинг (cloaking) - это когда роботу поисковой системы выдается одна страница сайта, а пользователю - другая. Например можно подсунуть роботу страницу, битком набитую ключевиками по нужной теме, и заиметь много трафика с поисковика на свой сайт, причем юзер будет видеть правильную страницу с “человеческим” текстом. Такой клоакинг относится к поисковому спаму.
Традиционно используются две стратегии для разделения трафика на роботов и людей: по user agent и по IP адресу. Первый способ заключается в проверке серверной переменной HTTP_USER_AGENT на наличие в ней названия бота (например Googlebot, Yahoo Slurp и так далее). Второй способ - проверка IP на наличие в списке IP адресов ботов. Список юзер-агентов роботов поисковых систем можно найти здесь: http://www.user-agents.org/, а список IP адресов, с которых приходят боты, здесь: http://iplists.com/.
Оба способа достаточно просты в реализации, но имеют свои недостатки и их легко обойти. Для продвинутого юзера не составит труда получить доступ к запароленному контенту бесплатно. Например можно гулять по Интернету под любым юзер-агентом, используя User Agent Switcher для Firefox. С его помощью вы можете заставить простую защиту думать, что вы - поисковый бот, если замените свой юзер-агент агентом робота. Метод идентификации по IP более стойкий, но отследить все обновления IP адресов трудно, да и публично доступные IP - лишь малая часть действительно бегающих по нету роботов.
А вот стратегия получше
Этот метод не стопроцентно устойчивый, но для наших целей он подходит как нельзя лучше. Алгоритм:
- Делаем простой детектор роботов, как в вышеприведенном методе
- Чтобы обнаружить фальшивых роботов, используем технологию реверсивного DNS детектирования. Эту операцию производим только в том случае, если в первом шаге был обнаружен робот. Потому что если делать два DNS запроса для каждого посетителя, то очень скоро ваш сервер уйдет в даун
- Если результат подтверждает, что запрос пришел от поискового робота, мы даем боту доступ к защищенному контенту
Обратите внимание
Чтобы вся эта работа не пропала даром, будет мудрым решением запретить поисковой системе сохранять кеш страницы с платным контентом.
Как знают мои постоянные читатели, сделать это достаточно просто, использую мета тег для робота, который называется “noarchive”. Либо вы можете установить значение noarchive в переменной X-Robots-Tag HTTP-заголовка (подробнее), но это на данный момент будет работать только с Google. Не стоит забывать и о других поисковых системах.
Теперь о технических деталях
Если ваш “охранник” - это веб-сервер, использующий HTTP аутентификацию, то вы можете использовать mod_rewrite для установки правила идентификации ботов и статус-кода 401 (Authorization Required), если реферер - не поисковый бот (то есть серфер). Ну а чтобы рассказать, как создать более сложную систему “охранника”, нужна специальная статья.
Определение робота по user agent или IP адресу
Код просто должен проверить несколько переменных, значения которых устанавливает веб-сервер для каждого запроса. Это HTTP_USER_AGENT и REMOTE_ADDR.
Большинство скриптовых языков, такие как Python, Php и Ruby имеют специальный класс или модуль под названием CGI, который дает доступ к этим переменным. Если вы используете framework вроде Django, Ruby on Rails или Cake Php, посмотрите соответствующую документацию, чтобы узнать, как организовать программный доступ (чтение, изменение) к HTTP заголовкам. Нужно помнить, что любой код, который изменяет заголовки, должен быть выполнен до того, как следующий запрос достигнет браузера.
Реверсивные DNS запросы
Суть в том, что нужно послать запрос на DNS кеш или name server. На низком уровне это организуется вызовом системных функций уровня С, которые доступны в любой BSD-based TCP/IP реализации (большинство серверов как раз управляются Unix-подобными системами). Это функции gethostbyaddr() и gethostbyname(). Первым запросом ваш скрипт производит поиск имени, используя IP адрес, сохраненный в переменной REMOTE_ADDR. Следующим запросом скрипт проверяет результат первого шага, чтобы убедиться, что сервер с данным DNS действительно отвечает с данного IP (чтобы определить виртуальные сервера). Чтобы все это работало, очень важно то, что поисковые системы поддерживают точные значения прямой (A) и обратной (PTR) записей DNS для IP адресов своих пауков.Также очень важно иметь свой постоянный DNS кеш, если ваш сайт получает много трафика.
Я не думаю, что это плохо, но многие вебмастера не любят эти C - функции. Но полезно знать, что эти API портированы и доступны для использования в программировании функций/методов на любом современном скриптовом языке, таких как Php, Python, Ruby и Perl.
Надеюсь этот материал будет вам полезен. А непонятные слова ищем в Гугле
.
Оригинал статьи: Advanced Cloaking Technique: How to feed password-protected content to search engine spiders
Еще почитать:
- Ничего похожего не найдено.




05.09.2007 в 4:18 pm
Спасибо автору. Очень помогла в работе.
05.09.2007 в 4:23 pm
На здоровье
. Рад за вас.
13.09.2007 в 5:36 pm
Спасибо.
21.09.2007 в 3:29 pm
И это решение можно обойти и читать ваш платный контент бесплатно
Из вашей ссылки:
I don’t think just doing a reverse DNS lookup is sufficient, because a spoofer could set up reverse DNS to point to crawl-a-b-c-d.googlebot.com
21.09.2007 в 4:39 pm
У меня нет платного контента
Обойти такой вариант конечно можно, но опять же трудность с DNS, так же как и с IP роботов. В статье описан принцип и его простая реализация, но подобные коммерческие защиты будут просто сложнее для обхода.
Сломать ведь можно все что угодно, но нет смысла это делать если затраты на взлом не окупятся.
14.03.2008 в 12:52 pm
Интересная статья,прояснила многие моменты,в закладки.
11.06.2008 в 4:04 pm
Отличная статья, многое уточнил для себя, спасибо. а вот если кому нужно наполнение грамотное контентом: http://www.e-generator.ru/packs/content/
07.07.2008 в 4:12 pm
Как раз в скрипте делаю определение ботов и юзеров, статья здорово помогла. Спасибо автору