Владельцам сайтов сложно и крайне дорого содержать свою собственную систему защиты, а ещё им нужен удобный инструмент по ускорению доставки своего контента в разные удалённые регионы. Как раз тут на помощь приходят такие сервисы, как Cloudflare. Это одновременно сеть доставки контента (CDN) и веб-файрволл (WAF) с адаптивными технологиями защиты.
Но что, если вы парсите конкретный сайт и вдруг сталкиваетесь с ошибкой 1005? Это значит, что вас забанил Cloudflare, который отвечает за защиту данного ресурса.
Рассказываем о том, как обойти заблокированный сайт при возникновении ошибки с кодом 1005.
Почти всегда ошибки с запретом доступа к веб-страницам возникают из-за нарушения простейших правил поведения парсера. Набор базовых принципов скрапинга можно описать так.
Но что делать, если ваш парсер обнаружили и заблокировали? Давайте сосредоточимся на этичном обходе ошибки 1005 от Cloudflare.
Ошибка с кодом 1005 чаще всего ассоциируется с баном от сервиса Cloudflare и означает «доступ запрещён». Обычно она сопровождается формулировкой «Access denied». К такой ошибке могут привести разные сценарии. Ниже рассмотрим каждый по-отдельности.
Самая распространённая и официальная причина из документации Cloudflare – это блокировка доступа к веб-странице или ко всему сайту для целой автономной подсети Интернета. В роли такой подсети, например, может выступать пул адресов вашего сетевого провайдера или хостера.
Ошибка 1005 прямо намекает на то, что Cloudflare посчитал всю подсеть источником паразитных запросов. Она могла быть заражена вирусами, ботами и т.п. Но такую блокировку могут получить: прокси-сети, VPN-сервисы, дата-центры и корпоративные сети (сети компаний).
Основная причина санкций – высокий уровень злоупотреблений: спам, боты, DDoS и т.п.
Иногда санкции накладывает не сам Cloudflare, а владелец сайта. Он особым образом настраивает логику блокировок, например, запрещает доступ к веб-страницам для конкретных подсетей (с выбранными номерами ASN), провайдеров связи или даже целых регионов: городов, стран, областей/штатов.
Причины такого поведения: лицензионные ограничения (особо актуально для онлайн-кинотеатров, стриминговых сервисов и онлайн-игр), санкции и региональные законы, а также просто нежелание обслуживать трафик из конкретной локации.
Многие сайты специально блокируют популярные VPN или операторов статичных прокси через ASN или IP-диапазоны. Если вы заходите на сайт через коммерческий VPN, дата-центровый или статичный резидентный прокси с «подмоченной» репутацией, то сайт может выдать ошибку 1005.
Что выбрать: VPN или прокси?
При масштабном автоматизированном сборе данных, похожие запросы могут отправляться не с одного конкретного IP-адреса, а с целой подсети, например, если разработчик парсера выбрал для ротации конкретную локацию и оператора связи. Для Cloudflare это сигнал о том, что он нашёл сеть ботов и весь трафик из неё является паразитным.
Особенно часто ошибка 1005 возникает при веб-скрапинге даже без явного нарушения правил. Так срабатывают эвристические алгоритмы Cloudflare.
Что примечательно, вы сами при этом можете ничего не делать. Например, вы впервые посетили сайт, но он всё равно выдал вам ошибку 1005. Скорее всего правила нарушали другие пользователи подсети. Такое часто случается в сетях небольших провайдеров связи или в сетях операторов мобильного интернета.
А что делать с ошибкой Cloudflare 1010?
Если вы неправильно настроили свой парсер, например, не позаботились о естественном указании User-Agent, частоте обращений или о параметрах цифровых отпечатков, в том числе нарушаете правила работы с сайтом и директивы из robots.txt, то опять же – вполне может сработать файрволл Cloudflare.
Как этично обойти WAF при парсинге.
В некоторых сетевых сервисах и приложениях, например, Google IMA SDK для рекламы, Apple Family Sharing, ошибка с кодом 1005 может означать следующее:
Но в 95%+ случаев в вебе под ошибкой 1005 подразумевается именно Cloudflare + бан ASN. Тут стоит помнить, что внешние онлайн-сервисы и игры часто используют защиту от Cloudflare. Поэтому их ошибка 1005 означает ту же самую проблему с баном, просто она не афишируется пользователям.
Если вы ничего не парсили, то напишите о проблеме своему провайдеру связи. Скорее всего он даже не знает о блокировке своих подсетей. Если списки систем защиты устарели или настроены неправильно, то провайдер займётся решением проблемы самостоятельно – он будет обращаться в Cloudflare. Но не ждите, что блокировка будет снята быстро. На это может уйти масса времени.
Если вы торопитесь, то попробуйте подключиться к сайту через VPN или через прокси, причём из разных локаций, чтобы не попасть в ещё одну ASN-подсеть, которая относится к списку заблокированных.
Ниже мы сосредоточимся только на решениях, которые связаны со скрапингом – разбираемся, как обойти защиту заблокированного сайта.
Если вы для парсинга выбирали конкретное расположение (город, оператора связи или даже подсети с заданными номерами ASN), то выберите другие параметры подключения: другой город, регион или интернет-провайдера (ISP).
Если ваш прокси-провайдер имеет небольшую сеть прокси, то вполне возможно, что под блокировку попали все его серверы. В этом случае нужно поменять провайдера на более качественного.
Например, Froxy обеспечивает ротацию на основе 10+ млн IP адресов домашних и мобильных пользователей. Заблокировать такое огромное количество ASN-подсетей просто невозможно.
Если смена прокси провайдера ничего не даёт или через время ваш парсер всё равно блокируют – изучите следующие пункты.
Классические парсеры на основе библиотек для отправки HTTP-запросов выявляются благодаря отсутствию поддержки JavaScript. Чтобы запустить и отрендерить JS-код, нужен специальный движок. А он есть только в составе полноценных браузеров.
Логика систем защиты, в том числе и Cloudflare, выстраивается примерно так: потенциальная аудитория обращается к целевому сайту либо через актуальную версию популярного браузера (а значит в нём будет поддержка JavaScript), либо через официальное мобильное приложение (приложения клиентов подписываются специальными сертификатами).
Cloudflare предварительно запускает JS-скрипт и проверяет «естественность» браузера пользователя. Если он не проходит чекап, то IP-блокируются.
Имитировать оригинальное мобильное приложение достаточно сложно, а вот браузер – вполне. Для этого достаточно настроить интеграцию с имеющимся реальным браузером через библиотеки веб-драйверов, либо установить и задействовать отдельные экземпляры headless-браузеров. За это отвечают такие готовые решения, как Puppeteer, Selenium, Playwright, chromedp и пр. Они работают на разных платформах и с разными языками программирования. Некоторые имеют возможность развёртывания на сервере, чтобы к ним можно было обратиться по API-интерфейсу из любого скрипта или программы.
Как итог:
Алгоритмы защиты Cloudflare постоянно совершенствуются. Они в том числе научились с высокой достоверностью выявлять трафик от headless-браузеров – по ряду технических признаков и заголовков.
Существуют разные подходы к обходу защиты Cloudflare.
Но если в общих чертах, то они сводятся к:
При таком подходе отделить реального пользователя от бота нереально.
Чтобы разобраться в деталях того, как целевой сайт и его системы защиты видят браузер клиента, могут подойти такие решения, как Wireshark (это анализатор сетевых запросов с открытым исходным кодом). Если WAF Cloudflare безошибочно определяет ваш парсер, но при этом не блокирует браузер реального пользователя, то вы можете сравнить запросы и выявить расхождения в отправляемых и получаемых данных.
Вместо того, чтобы писать свой парсер с нуля и разбираться с его проблемами, можно поставить задачу на исполнение по API или через личный кабинет / дашборд в профильном сервисе. Например, Froxy Scraper – это No-code решение для сбора форматированных данных с нескольких десятков популярных площадок: поисковые системы (SERP Google, Bing, Yahoo и др.), e-Commerce, онлайн-карты, социальные сети и т.п. Если готового решения нет, то можно воспользоваться универсальным HTML-скрейпером – он сохраняет весь результирующий код страниц и дополнительно вычленяет типовые атрибуты.
Когда данные собраны и готовы к выдаче клиенту, Froxy Scraper может отправить уведомление посредством веб-хука. Соответственно, процесс скачивания и разбора данных можно автоматизировать на 100%.
О прокси здесь заботиться не нужно. Их использование и настройки уже включены в облачный парсер.
Чтобы исключить ошибку 1005 ещё на этапе проектирования своего парсера, нужно позаботиться о следующих моментах:
Больше подробностей – в материале «Парсим как профи! Лучшие практики для веб-скрапинга без блокировок».
Ошибка с кодом 1005 показывается, когда целевой сайт использует защиту от Cloudflare. При этом сама ошибка с кодом 1005 означает, что WAF Cloudflare заблокировал не один конкретный IP-адрес, а целую подсеть (ASN). Это может произойти по разным причинам, но алгоритм обхода при парсинге только один – смена локации и выходного IP на другие.
Ключевой фактор – качество прокси. Бесплатные прокси и VPN легко обнаруживаются и потому попадают в чёрные списки. Ротируемые резидентные или мобильные прокси лишены такого недостатка – расположение IP и ASN можно менять сколько угодно, без покупки новых прокси.