GEO: либо трусы наденьте, либо антибот снимите
Сайты хотят попадать в ответы нейросетей и сами же не пускают к себе их краулеров. Я проверил 518 сайтов из топа Яндекса и выяснил, что делают это чаще, чем кажется, и обычно не по своей воле.
Сайты хотят попадать в ответы нейросетей и сами же не пускают к себе их краулеров. Я проверил 518 сайтов из топа Яндекса и выяснил, что делают это чаще, чем кажется, и обычно не по своей воле.
Первое место Яндекса по запросу «туры в турцию» занимает страница Coral Travel. Chrome получает её целиком. GPTBot, ClaudeBot и ещё три AI-бота получают 403 и фразу «Доступ к сайту временно ограничен владельцем веб-ресурса». В robots.txt при этом ни слова ни об одном из них.
Про GEO, оптимизацию под ответы нейросетей, сейчас пишут много. Советуют блоки вопросов и ответов, микроразметку, «экспертный» тон и авторские страницы, чтобы ChatGPT или Perplexity процитировали именно вас. Обычно всё это начинают с контента. Я бы начинал с логов сервера: цитировать страницу, которую не удалось скачать, нейросеть не будет.
В прошлых статьях я писал о том, как дать нейросети доступ к данным. На этот раз стало интересно посмотреть с другой стороны: пускают ли её сами сайты и с чем столкнулись агенты при разработке SEO ассистента Сейки AI.
Как я проверял
Взял 30 коммерческих запросов (диваны, пластиковые окна, стоматология, клининг, туры, новостройки, бухгалтерия) и снял топ-20 Яндекса по России. После удаления сервисов самого Яндекса, YouTube, VK и повторов осталось 518 сайтов. Проверял ровно ту страницу, что стоит в выдаче, и robots.txt сайта.
Каждую страницу запрашивал семь раз. Заголовки одинаковые, отличается только имя клиента, User-Agent. Сначала обычный Chrome, потом в случайном порядке пять AI-ботов: GPTBot, OAI-SearchBot и ChatGPT-User от OpenAI, ClaudeBot от Anthropic и PerplexityBot. В конце снова Chrome, для контроля. Если он не проходил, сайт в расчёт не шёл, потому что это уже не про ботов, а про то, что я слишком часто стучусь.
Клиент был намеренно простым, примерно как обычный краулер. Следует редиректам, cookie не хранит, JavaScript не выполняет.
Весь замер я повторил дважды. Дальше привожу только то, что воспроизвелось оба раза; совпадение между прогонами 95%.
Оговорку сделаю сразу и потом к ней вернусь. Я проверял с домашних IP в Москве и Нижнем Новгороде и подделывал только имя бота, а настоящие краулеры ходят из дата-центров в США и других странах.
Цифры
Из 459 сайтов, которые нормально открылись в браузере в обоих прогонах, 145 не пустили хотя бы одного AI-бота. Почти треть. Шестнадцать не пустили никого из пятерых.
Режут неравномерно. ClaudeBot не пускают 28% сайтов, GPTBot 26%. Остальным троим отказывают в 4–5 раз реже, примерно на 6% сайтов. Среди них ChatGPT-User, который приходит, когда пользователь сам просит нейросеть открыть страницу.
Закрыться от обучающих краулеров и пускать поисковых вполне осмысленно: на моих текстах не обучайтесь, а цитировать можно. Беда в том, что позицией это назвать трудно. Позицию где-нибудь записывают.
robots.txt говорит одно, сервер делает другое
Для слова «не входить» существует robots.txt. Это не замок, а табличка на двери, и крупные AI-компании заявляют, что табличку читают.
Файл robots.txt есть у 486 сайтов из выборки. GPTBot упомянут в 38 из них, ClaudeBot в 20.
Из 157 сайтов, закрытых от AI-ботов в первом прогоне, 156 не пускают хотя бы одного бота, которому их же robots.txt разрешает вход. Запрет в robots.txt совпал с блокировкой на сервере ровно для одного бота на четырёх сайтах.
На табличке «добро пожаловать», дверь заперта. Скорее всего, владелец сайта её и не запирал.
Кто на самом деле запирает дверь
Хостинг Сайтов. Не пускают ≥1 AI-бота
REG.RU 48 33
Timeweb. 49 35
Beget. 69 27
SpaceWeb. 10 8
Selectel и Yandex Cloud
(VPS, облако). 63 8
На виртуальных хостингах AI-ботов не пускает от 40 до 80% сайтов. На VPS и в облаке, где сервер настраивает сам владелец или его разработчик, около 13%.
Самый частый способ отказа выглядит как ничего. Соединение просто обрывается, ни кода, ни страницы (так ведёт себя nginx с правилом return 444). На REG.RU все 33 случая именно такие. Реже попадаются 503 «сервис временно недоступен», голый 403 от nginx, заглушка хостинга с кодом 415 и капча Yandex Cloud «Вы не робот?».
Несколько сайтов я перепроверил вручную. Chrome получает страницу, у GPTBot и ClaudeBot рвётся соединение, а бот с выдуманным именем FooBot снова получает страницу. Это не распознавание ботов, а чёрный список имён.
Утверждать, что это настройка хостинга по умолчанию, я не могу, доступа к их конфигам у меня нет. Но у одного провайдера две трети сайтов одинаково обрывают соединение на одно и то же имя, а в их robots.txt об этом ни слова. Версия «владельцы договорились» выглядит наименее вероятной.
Три ступеньки защиты
Кроме 459 сайтов, куда браузер проходит, было ещё 49 (9% выборки), куда простой клиент без JavaScript не пускают вообще. Ни бота, ни Chrome. На них хорошо видно, против кого защита от ботов работает на самом деле.
Ступенька первая: чёрный список имён. То, что описано выше. Останавливает только того, кто честно представился. Назовись браузером, и проходи.
Ступенька вторая: проверка cookie. Классический пример здесь Variti. На первый запрос сайт отвечает редиректом 307 на тот же самый адрес и ставит две cookie, ipp_uid и ipp_key. Браузер их сохраняет, возвращается и получает страницу. Простой fetch() без cookie ходит по кругу, пока не сдастся.
Я проверил на mybox.ru, это один из сайтов выборки. Без cookie бесконечный 307, с cookie 200 после одного редиректа. Причём даже с именем GPTBot. Variti не спрашивает, кто вы; ей важно, умеете ли вы хранить cookie. На трёх из четырёх Variti-сайтов, где простой клиент упёрся в стену, хватило включить cookie. В curl это один флаг.
Скрипт, который долбит сайт голыми запросами, так отсекается надёжно, а живой посетитель ничего не замечает. Против любого, кто потратил на своего бота на пять минут больше, это уже не работает.
Ступенька третья: JavaScript и репутация IP. Qrator и ServicePipe, иногда капча. Cookie здесь не помогают совсем, 0 из 30. Headless-браузер из дата-центра прошёл на 1 сайт из 30, а Avito прямо написал «проблема с IP». Обычный headless Chromium с моего домашнего IP прошёл 2 из 39.
Честно скажу, к этому моменту мои IP уже десятки раз побывали на этих сайтах. Часть блокировок я, вероятно, заработал сам. Антидетект-браузеры я проверять не стал, статья не об этом.
За третьей ступенькой в выборке стоят DNS, ПИК, Hoff, Лемана Про, Спортмастер, Самолёт, ДомКлик, ПроДокторов и «Все инструменты». Крупные компании, для которых это осознанный и оплаченный выбор. Цена у него тоже есть: такой сайт закрыт от всех агентов сразу, в том числе от тех, что пришли выбрать товар по просьбе человека.
Мир уже не из двух поисковиков
Вопрос «какие боты ко мне ходят» лет двадцать сводился к Яндексу и Google. Их пускали, остальных при желании резали, и никто ничего не терял.
Сначала к ним добавились краулеры AI-компаний. Дальше интереснее. Люди запускают собственных агентов, OpenClaw, Hermes и им подобных, на домашнем компьютере или на VPS за несколько сотен рублей в месяц. Такой агент ищет и сравнивает по поручению конкретного человека. Представляться он не обязан, ходит с обычным браузерным User-Agent с обычного IP. И их будут не единицы, а миллионы.
Теперь посмотрите на ступеньки с этой стороны. Первые две останавливают как раз вежливых: тех, кто назвал себя и не возится с cookie, потому что никому не собирался вредить. Кто не представляется, тот их почти не замечает. Третья держит, но стоит денег и режет всех подряд, включая покупателя, который прислал агента вместо себя.
Получается ровно по анекдоту. Хотим, чтобы нейросети нас цитировали, и не пускаем их на порог. Хотим защититься от ботов, а защищаемся только от вежливых.
Реальность ещё хуже, чем мои цифры
Обещанная оговорка. Все замеры сделаны с домашних IP в Москве и Нижнем Новгороде. Я подделывал только имя бота, всё остальное в запросах выглядело как обычный посетитель из России.
Настоящие краулеры ходят из дата-центров в США и других странах. Такие адреса и сами по себе вызывают у защиты больше подозрений, это видно по третьей ступеньке. К тому же между Россией и остальным миром ограничения действуют с обеих сторон. Часть российских сайтов и хостингов режет зарубежный трафик целиком, часть зарубежных сервисов не работает с российскими адресами. Мои 32% получены в условиях, которые для бота лучше реальных, так что это нижняя граница.
Вторая оговорка, чтобы не пугать зря. Алиса и Нейро отвечают по индексу Яндекса, а YandexBot я не трогал, и на видимость в экосистеме Яндекса всё это не влияет. Речь о ChatGPT, Claude, Perplexity и всех, кто придёт после них.
Как проверить свой сайт за пять минут
Сначала посмотрите, как вас видит браузер и как бот:
Браузер получает 200, а бот 403, 503 или 000 (соединение оборвано)? Значит, вы в той самой трети.
Дальше:
- Решите, чего вы хотите. Не пускать обучающих ботов, но пускать поисковых можно. Не пускать никого тоже можно. Плохо, когда решение за вас принял кто-то другой.
- Запишите решение в robots.txt. Это единственное место, которое боты читают и которое вы сами найдёте через год.
- Если режет хостинг, спросите хостинг. У части провайдеров блокировка отключается в панели или через поддержку. Если у вас свой WAF, пускайте ботов по опубликованным диапазонам IP (часть AI-компаний их публикует), а не по имени. Имя подделывается одной строкой.
- Проверьте, что боту есть что читать. В выборке нашлось 22 сайта, которые даже браузеру без JavaScript отдают пустую оболочку. AI-краулеры в большинстве своём JavaScript не выполняют.
Если руками не хочется, Сейка AI при разборе сайта сама замечает защиту от ботов, будь то cookie-проверка вроде Variti и DDoS-Guard или страница с капчей, и сертификаты, которым не доверяют зарубежные клиенты. И говорит, через что пришлось пройти, чтобы увидеть страницу. Появилось это, кстати, после того, как наш собственный агент однажды споткнулся о Variti.
Если же дверь заперта, у Сейки AI есть обходные пути. Можно открыть страницу настоящим браузером, как открыл бы её человек. А если страница уже есть в индексе Яндекса, можно взять сохранённую копию: YandexBot-то пускают все. Цена у второго пути очевидная. Копия показывает страницу на момент последнего обхода, и вчерашних правок в ней может не оказаться. Читать по ней чужой сайт нормально, проверять свой нужно осторожно.
Напоследок одна проверка, которая отвечает на вопрос из заголовка. Повторите второй curl, заменив GPTBot на любое выдуманное имя. Если FooBot проходит, а GPTBot нет, значит, решение о GEO на вашем сайте принимали не вы. Дальше выбирайте сами: либо трусы, либо антибот.