Распространенные проблемы при сборе данных и как их интерпретировать
Прежде чем что-либо менять, выясните, что именно мешает вам: заголовок, в котором указан поставщик, что на самом деле означает каждый код статуса и какие из этих проблем прокси-сервер может решить, а какие — нет.
- Доверие к NAT операторского класса — адрес, который целевой сайт не может заблокировать, не заблокировав при этом реальных абонентов.
- Ротация по запросу — избавьтесь от адреса, который действительно стал проблемным, когда сочтете нужным.
- Выходы, сопоставленные по стране — чтобы геоблокировка не принималась за блокировку ботов.
- Специализированное оборудование — репутация вашего IP-адреса зависит от того, как вы его заработали.
IP-адреса провайдера используются совместно с реальными абонентами, поэтому блокировка одного из них обходится дорого.
Если даже «чистый» Mobile IP не помогает, значит, проблема изначально не была связана с IP-адресом.
Большая часть времени, потерянного из-за заблокированного скрейпера, уходит на устранение не той проблемы. Один только код статуса редко дает представление о том, что именно произошло, а инстинктивная реакция — сменить IP-адрес и повторить попытку — сводит все симптомы к одной и той же причине. Эта страница представляет собой схему диагностики: сначала определите, что именно мешает работе, а затем выберите соответствующее решение.
Определите, что вам мешает
Прежде чем что-либо менять, обратите внимание на текст ответа, а не на строку статуса. Крупнейшие поставщики решений для борьбы с ботами идентифицируют себя — как правило, непреднамеренно — и каждый из них подразумевает свой способ устранения проблемы:
| Разоблачительный | Кто это | Что это означает |
|---|---|---|
| cf-ray заголовок, или server: cloudflare | Cloudflare | В теле сообщения часто указывается собственный код — 1020 для правила брандмауэра, 1015 для ограничения скорости. Всплывающее окно на JavaScript означает, что требуется браузер. |
| x-datadome заголовок, фирменная страница конкурса | DataDome | В значительной степени зависит от отпечатков пальцев. Одной только чистой IP-адреса редко бывает достаточно; клиент должен выглядеть как браузер. |
| _px3 cookie или ссылка на px-captcha | PerimeterX (ныне HUMAN) | Поведенческой оценке уделяется большое значение — темп речи и взаимодействие с аудиторией имеют не меньшее значение, чем содержание выступления. |
| Без маркировки производителя, простой корпус короткой формы | Правила сайта | Как правило, это проще: фильтр User-Agent, обязательный заголовок или правило ограничения частоты запросов, которое вы можете соблюдать. |
При первой же ошибке выведите в консоль все заголовки ответа и первые несколько сотен байтов тела сообщения и сохраните их. Эта запись содержит ответы почти на все вопросы, приведенные ниже, а воспроизвести сбой после того, как вы начали вносить изменения, гораздо сложнее, чем записать его один раз.
Что на самом деле означает каждый код статуса
Две реакции, которые с первого взгляда кажутся одинаковыми провалами, могут иметь противоположные причины. Вот какую взаимосвязь стоит усвоить:
| Ответ | Наиболее вероятная причина | Первое, что стоит попробовать |
|---|---|---|
| 403 сразу же, крошечное или пустое тело | Защита от ботов — по отпечаткам или заголовкам, а не по правам доступа | Перед тем как обращаться к прокси, настройте профиль TLS и заголовки клиента |
| 403 после череды успехов | Адрес заслужил это — по рейтингу или по объему | Уменьшите количество одновременных подключений, а затем заблокируйте IP-адрес, с которого поступили подозрительные запросы |
| 429 с параметром Retry-After | Честное ограничение скорости | Подождите именно столько времени. Не поворачивайте и не повторяйте попытку сразу же |
| 407 | Вас отклонил ваш прокси, а не целевой сервер | Проверить учетные данные или наличие данного хоста в списке разрешенных |
| 503 со страницей с заданием | Ожидание выполнения JavaScript в промежуточном режиме | Настоящий браузер или конечный узел, возвращающий данные без него |
| 200 при отсутствии данных — программная блокировка | Препятствие или пустая оболочка послужили залогом успеха | Ориентируйтесь на содержание, а не на статус — именно это незаметно приводит к искажению наборов данных |
| Цикл перенаправлений, «стена согласия» или «региональная стена» | Географическое положение или состояние файлов cookie, а не обнаружение ботов | Выйти из нужной страны и сохранить файлы cookie на протяжении всей сессии |
«Мягкий блок» заслуживает особого внимания, поскольку это единственный вид сбоя, который внешне не выглядит как сбой. Скребок, который интерпретирует HTTP 200 как успешный результат, без проблем запишет тысячи пустых записей и сообщит о «зеленом» прохождении. Перед тем как принять страницу, убедитесь в наличии известного поля.
Распоряжение о сортировке пациентов, позволяющее сэкономить целый день
Три вопроса, именно в таком порядке. Каждый из них исключает целый класс возможных причин, поэтому вы меняете по одному фактору за раз, а не перебираете сразу четыре:
- Сбой произошел уже при первом же запросе?
В таком случае репутация ещё не сформирована, и адрес почти наверняка не представляет угрозы. Проверьте заголовки, User-Agent и профиль TLS. Смена IP-адресов в данном случае ничего не изменит и приведёт к их напрасной трате.
- Или после серии успехов?
Тогда форма клиента была в порядке, и вы заслужили это своими действиями. Ставка, объем или схема. Сначала сократите количество одновременных подключений на один хост; переключайтесь только после того, как убедитесь, что сам адрес уже израсходован.
- Работает ли это в браузере при использовании того же подключения?
В таком случае сетевой путь в порядке, а проблема заключается в вашем клиенте. Отправьте запрос на сервис проверки отпечатков, например tls.peet.ws, через ваш клиент и сравните его отпечатки JA3, JA4 и HTTP/2 с отпечатками реального браузера. Несоответствие в этом случае и будет ответом на все вопросы.
Изменяйте по одной переменной за раз и сохраняйте запрос, приводящий к сбою, в качестве фикстуры. Обычно сбой происходит из-за одновременной замены прокси, User-Agent и клиентской библиотеки: все работает, но вы так и не узнаете, какой именно фактор оказал влияние — и при следующем тестировании приходится начинать с нуля.
Исправления, соответствующие причине
Отсортировано в соответствии с тем, на что указывают доказательства, и с честным указанием того, на какие из этих аспектов на самом деле влияет данный показатель:
- Репутация IP-адреса, ограничения по скорости, географические ограничения — Это действительно задача прокси-сервера. IP-адрес провайдера, находящийся за CGNAT, заблокировать целевому ресурсу дорого, поскольку за ним находятся тысячи реальных абонентов, а выход из нужной страны позволяет обойти геоблокировки, которые выглядят как блокировки ботов.
- Отпечаток TLS или HTTP/2 — Это вовсе не проблема прокси. Используйте клиент, который имитирует процесс установления соединения реального браузера, например curl_cffi, или запустите настоящий браузер. Ни один адрес не заставит urllib3 установить соединение так, как это делает Chrome.
- Утечка без видимых признаков — navigator.webdriver, отсутствующие поверхности плагинов и рендерер SwiftShader WebGL позволяют идентифицировать автоматизированный браузер независимо от того, где он завершает работу.
- Противоречия — Выход из Великобритании в сочетании с часовым поясом «America/New_York» или мобильным User-Agent в диапазоне IP-адресов центра обработки данных. Согласованность на всех уровнях имеет большее значение, чем надежность любого из них в отдельности.
- Шаблон — Идеально равные интервалы и частота, которую никто не может выдержать, измеряются напрямую. Никакие прокси не скрывают характер доступа; это удаётся сделать только путем изменения самого характера доступа.
Преимущество тестирования на «чистом» IP-адресе оператора заключается в том, что оно позволяет исключить некоторые варианты. Если новый мобильный адрес ведет себя точно так же, как и старый, значит, причина никогда не заключалась в адресе, и вы только что исключили из списка самый дорогостоящий вариант. Это направляющая стойки более подробно рассматривает слои отпечатков пальцев, а также руководство по передовым методам охватывает меры по соблюдению норм, которые позволяют предотвратить большинство таких случаев ещё до их возникновения.
Проверка по «чистому» IP-адресу провайдера
Активные локации PXM2 — выберите страну, из которой, по вашему замыслу, должен поступать запрос, и получите выделенный IP-адрес с поддержкой 4G/5G, неограниченной пропускной способностью и возможностью смены адреса:
Великобритания
Испания
Индия
Часто задаваемые вопросы
Почему при сборе данных я получаю ошибку 403?
Если сразу же поступает «голый» код 403 без тела запроса или с небольшой ошибкой JSON, это почти всегда связано с защитой от ботов, а не с ограничениями доступа. Если это происходит при самом первом запросе, проверьте свои заголовки и отпечаток TLS. Если это начинается после серии успешных запросов, проверьте свою скорость отправки запросов. Эти две ситуации требуют совершенно разных решений, и неправильное предположение может стоить целого дня.
Как определить, какая система защиты от ботов меня блокирует?
Обратите внимание на текст ответа, а не на строку статуса. Cloudflare оставляет заголовок cf-ray и заголовок сервера Cloudflare, а в теле ответа появляются его собственные коды ошибок, такие как 1020 и 1015. DataDome устанавливает заголовки x-datadome и отображает фирменную страницу проверки. PerimeterX, теперь HUMAN, устанавливает файл cookie _px3 и ссылается на px-captcha. Каждый из этих случаев требует своего способа устранения.
В чём разница между кодами 403 и 429?
Код 429 с заголовком Retry-After — это честное ограничение скорости: сервер сообщает вам, что темп запросов неверный, и указывает, когда можно повторить попытку. Примите это во внимание. Код 403 означает полный отказ в обслуживании, и постоянная смена IP-адресов при таких запросах, без изменения остальных параметров, как правило, приводит лишь к блокировке адресов.
Почему страница загружается в моём браузере, но не в Python?
Потому что ваш клиент не выполняет обмен данными для установления соединения так же, как браузер. Порядок шифров, порядок расширений TLS и настройки HTTP/2 формируют отпечаток JA3 или JA4, который сравнивается со значениями, характерными для известных браузеров. Вы можете убедиться в этом, отправив через свой клиент запрос к сервису проверки отпечатков, например tls.peet.ws, и сравнив результаты. Решением проблемы является клиент, который имитирует настоящий профиль TLS или настоящий браузер — а не какой-либо другой прокси-сервер.
Может ли мобильный прокси обойти все блокировки, связанные со скрейпингом?
Нет, и в этом стоит четко разобраться. Прокси устраняет проблемы с репутацией IP-адреса, ограничениями скорости, привязанными к адресу, и геоблокировками. Он бессилен в случае несоответствия TLS-отпечатков, обнаружения «безголового» браузера, отсутствующих или противоречивых заголовков, а также при наличии схемы доступа, которую не смог бы воспроизвести ни один человек. Если чистый мобильный IP-адрес не помогает, причина лежит именно в этом списке.
Связанные руководства по мобильным прокси-серверам
Как только вы поймёте, что именно мешало вам, в остальной части этого блока подробно описано, как исправить эту проблему.
Руководства по веб-парсингу
Основные руководства по мобильным прокси-серверам
Как исключить IP-адрес за пять минут
Специализированные модемы 4G/5G с реальным диапазоном частот операторов связи — протестируйте целевой ресурс с «чистого» адреса и выясните, была ли проблема связана с прокси.
Попробуйте использовать чистый IP-адрес провайдера