Скрапер заблокирован: ошибки DNS, TLS, HTTP и страницы
Локализуйте сбой скрапера по подтверждённому уровню: DNS, TLS, HTTP или выполнение страницы. Сохраните ответ, не выдумывая причину антибот-проверки.
BotBrowser Team
Нужна структурированная документация по теме Сеть?
Эта статья относится к редакционной библиотеке. Для пошаговой настройки, справки и постоянных обновлений переходите сразу в соответствующий раздел docs.
Сообщение о блокировке скрапера обозначает инцидент, а не диагноз. Ошибка разрешения имени, ошибка сертификата, HTTP 403 и пустая панель данных подтверждают разные факты. BotBrowser документирует управляемые профилем поверхности браузера и настройки автоматизации, но не гарантирует доступ и не меняет политику сервера. До изменения браузера, прокси или нагрузки найдите последний этап, подтверждённый данными сбойного запроса. Полезным результатом может быть локализованный сбой с пока неизвестной серверной причиной. руководство по состоянию между запусками разделяет сохранение cookies, охват снимка и принятие сервером после нового контекста или процесса. Для HTTP-ответа этих поставщиков сигналы ответов Cloudflare и DataDome отделяют документированные маркеры от неизвестных внутренних решений.
Если пригодные данные сменяются испытанием в том же задании, диагностика CAPTCHA при сборе связывает последний пригодный ответ с первым испытанием, не превращая последовательность в причину.
Кратко
- Определите сбойный запрос, а не только внешне заблокированную страницу. Документ и запрос данных могут завершиться по-разному.
- Различайте отсутствие HTTP-ответа и полученный отказ. HTTP 403 или 429 всё ещё является ответом.
- Разделяйте DNS, соединение/TLS и выполнение страницы: ни один сбой сам по себе не определяет антибот-модель.
- Запрос из терминала наблюдает другой клиент, а не копирует браузерную сессию.
- Соблюдайте документированные границы доступа. Правило сервера требует документации сервиса или разрешённых серверных записей.
Содержание
- Запрос и окно наблюдения
- DNS: имя и источник HTTP-ответа
- Соединение и TLS: исходная ошибка
- HTTP: отказ остаётся ответом
- Выполнение страницы и принятие данных
- Пять диагностических строк и граница атрибуции
- Настройка BotBrowser не является решением сервера
- Практический вывод
Запрос и окно наблюдения
Начните с разрешённого инцидента: ревизии интеграции, версий браузера и фреймворка, роли запроса, времени и обезличенной ссылки на маршрут. Непрозрачный идентификатор, например requestId, связывает событие браузера с записью вашего сервера без раскрытия учётных данных. Главный документ, запрос прикладных данных и изображение не взаимозаменяемы как доказательства. Запишите, что именно отказало и были ли приняты необходимые данные, прежде чем оценивать всю страницу. Модель отслеживания позиций отделяет настроенные географию, язык или устройство от фактического контекста системы и не смешивает номер источника со средней позицией Search Console.
Например, документ HTTP 200 может загрузить оболочку приложения, а запрос данных получить 403. Снимок оболочки не определяет отклонённый запрос. И наоборот, отсутствие декоративной картинки не обязательно делает запись данных недействительной. Это иллюстрации, не перехваченные обмены. Заранее задайте обязательное поле или результат и сопоставьте его с конкретным запросом и ответом, не оценивая запуск только по финальному снимку.
Ограничьте окно наблюдения и сохраните первый существенный сбой. Повторы библиотеки не должны подменять исходное событие поздним успехом или общим тайм-аутом. Различайте состояния: запрос не отправлен, отправлен без ответа, ответ получен, результат приложения принят. Это предлагаемые состояния инцидента, не дополнительные коды HTTP. Поле lastEstablishedStage является локальной классификацией, а не объяснением сервера.
Фиксируйте изменения между наблюдениями. Если одновременно меняются прокси, версия, состояние приложения и параллелизм, другой результат не определяет причину различия. Сохраните исходную разрешённую конфигурацию и сбой, затем исследуйте один ограниченный вопрос. Не наращивайте трафик и не меняйте аккаунты ради поиска лимитов сервиса. Отсутствие доказательств требует оставить причину открытой, а не выбирать более уверенную формулировку.
DNS: имя и источник HTTP-ответа
Глоссарий DNS MDN описывает систему связи доменных имён с ресурсами, например IP-адресами. Ошибка разрешения возникает до подтверждения HTTP-ответа от этого назначения. Сама по себе она не доказывает отказ приложения обслужить браузер. Храните имя, контекст резолвера и категорию ошибки вместе: опечатка, недоступный резолвер и ответ политики требуют разных доказательств.
Справочник ошибок curl различает ошибку 5, неразрешённое имя прокси, и 6, неразрешённый удалённый узел. При использовании прокси ошибка его адреса не доказывает сбой имени назначения. Сохраняйте действительно использованные клиент и настройки. Успешное разрешение в другом терминале не устанавливает, какой резолвер использовал браузер или прокси для сбойного запроса.
Адрес в локальном кэше также отличается от наблюдения нового разрешения. Укажите, выполнял ли диагностический запрос поиск, не предполагая DNS при каждой успешной связи. Одно значение времени не раскрывает внутреннее состояние резолвера. На собственном сервисе сопоставьте журналы резолвера или шлюза в том же окне; на внешнем сохраняйте клиентскую ошибку без утверждения о невидимом решении инфраструктуры.
Ограниченный следующий шаг: проверить настроенное имя и путь разрешения в разрешённой среде. До исправления очевидной опечатки сохраните исходный ввод. Если вне браузера проблема не повторяется, опишите различие, не объявляя виновным отпечаток. Инцидент на уровне DNS ещё не предоставляет доказательств о содержимом, статусе или политике HTTP-ответа.
Соединение и TLS: исходная ошибка
Разрешение имени и установление соединения являются разными наблюдениями. Разрешённый адрес не доказывает успешную связь с назначением или прокси. Ошибка curl 7 сообщает о неудаче соединения, 28 о превышении времени операции; последняя сама по себе не локализует этап протокола. Сохраните категорию клиента и конкретные записи этапа вместо объявления каждого сбоя связи блокировкой сайта.
Глоссарий TLS MDN описывает защиту связи. Ошибка проверки сертификата подтверждает проблему доверия, наблюдаемую этим клиентом, а не HTTP-ответ об авторизации. Curl различает ошибку TLS 35 и проверку сертификата другой стороны 60. Разбор доверия браузерного соединения подробнее разделяет сертификаты и доверие; не превращайте каждый сбой TLS в доказательство обнаружения отпечатка.
Для собственного или явно разрешённого диагностического адреса команда сохраняет наблюдение отдельного клиента. Сначала задайте разрешённый URL в DIAGNOSTIC_URL. Она делает GET, отбрасывает тело, сохраняет проверку сертификатов, ограничивает время и не следует перенаправлениям или автоматическим повторам. Вывод является предлагаемым форматом записи, не примером успешного запуска:
code=0
curl --disable --silent --show-error --max-time 20 --output /dev/null \
--write-out 'http_code=%{http_code}\ntime_namelookup=%{time_namelookup}\ntime_connect=%{time_connect}\ntime_appconnect=%{time_appconnect}\n' \
"${DIAGNOSTIC_URL:?Set an owned or authorized diagnostic URL}" || code=$?
printf 'curl_exit=%s\n' "$code"
Времена являются диагностическими данными, а не доказательством нового выполнения каждого названного этапа. Повторное использование соединений и маршрут влияют на трактовку. Cookies, резолвер, настройки прокси и TLS терминала могут отличаться от браузера. Совпадение может подтвердить общий симптом, различие направить расследование, но ни то ни другое не воспроизводит браузерную сессию. Используйте то же объявленное окно и сохраняйте идентичность клиента.
Не добавляйте небезопасную опцию сертификата ради видимого успеха. В своей инфраструктуре проверьте действительность, ожидаемые имена и доверие с ответственным оператором. Для чужого сервиса сохраните сбой и используйте поддерживаемую интеграцию. Завершение TLS не означает разрешения следующего HTTP-запроса или принятия данных приложением.
HTTP: отказ остаётся ответом
Справочник статусов HTTP MDN различает классы ответов, включая ошибки клиента и сервера. Наблюдаемый HTTP 403 устанавливает отказ отвечающего компонента по этому запросу; без дополнительных доказательств он не определяет детектор, несоответствие отпечатка или правило аккаунта. Ответ 429 относится к ограничению частоты и нуждается в отдельной категории. Запись решений по лимитам объясняет необязательный Retry-After и планирование с конечным бюджетом без предположения о ключе подсчёта.
Документация события requestfailed Playwright отделяет сетевой сбой от ошибочного HTTP-ответа. Полученный 404 или 503 остаётся ответом, поэтому сам статус не вызывает requestfailed. Это также не даёт потерять 403 в неверной категории сетевых ошибок. Подключите слушатели до разрешённого действия и храните статус ответа отдельно от неудачи запроса.
Регистратор подключается к переданному Playwright Page. Он не запускает браузер, не переходит по адресу, не повторяет запросы и не меняет настройки. Вызывающая сторона управляет emit и удаляет чувствительный текст ошибки перед сохранением. Справка pageerror задаёт отдельное событие неперехваченного исключения страницы:
export function attachDiagnosticListeners(page, emit) {
page.on('response', response =>
emit({
event: 'response',
status: response.status(),
role: response.request().resourceType(),
})
);
page.on('requestfailed', request =>
emit({
event: 'requestfailed',
role: request.resourceType(),
error: request.failure()?.errorText ?? null,
})
);
page.on('pageerror', error =>
emit({
event: 'pageerror',
name: error.name,
})
);
}
События намеренно не содержат URL и секретов. Окружающий инструмент должен добавить обезличенную связь запроса и время; одинаковый тип ресурса не различает несколько вызовов данных. Порядок событий несвязанных запросов не образует причинную цепь. Приход ответа также не означает завершения приёма всего содержимого или принятия приложением. Храните эти последующие результаты отдельно.
Выполнение страницы и принятие данных
Ответ документа не является вердиктом выполнения страницы. Неперехваченное исключение, сбой ресурса и отсутствие поля являются разными наблюдениями. Найдите данные через отдельные pageerror, requestfailed и ответы, затем проверьте объявленное условие результата. Исключение может прервать нужную операцию или не относиться к ней; само наличие не доказывает остановку сбора антибот-скриптом.
На собственной fixture заранее задайте устойчивое условие готовности и небольшую ожидаемую запись. Для внешней интеграции используйте документированный контракт результата, не объявляя успех по видимому заголовку. Документ HTTP 200 может содержать вход в аккаунт, ошибку сервиса или другое состояние. Храните классификацию содержимого рядом со статусом HTTP без его переписывания под результат приложения.
Сохраните контекст связи отсутствующего поля с производящим запросом или этапом скрипта. Запрос мог не отправиться, получить отказ или вернуть данные, которые страница не применила. Дальнейшие проверки различаются. Тайм-аут селектора не доказывает отказ сервера: он означает только невыполнение условия за настроенное окно, а не причину. Укажите ограниченное ожидание и фактически ожидаемое условие.
Сравнение требует одинаковых ревизии приложения, начального состояния и разрешённой последовательности. Если одно наблюдение начинается с авторизацией, а другое без неё, разница не доказывает обнаружение браузера. Проверьте необходимую разрешённую сессию или операцию прежде, чем связывать пустую панель с сигналом устройства. Не помещайте закрытые данные аккаунта в публичные журналы; непрозрачная ссылка связывает инцидент с защищёнными эксплуатационными записями.
Пять диагностических строк и граница атрибуции
Первые четыре строки описывают наблюдаемые клиентом этапы. Пятая относится к политике сервиса, включая предполагаемое поведенческое правило; это не пятый протокольный обмен, видимый в каждом запросе. Только документация сервиса, разрешённый ответ поддержки или запись решения вашего сервера могут установить правило конкретного инцидента. Незнакомая страница проверки или изменившийся результат не заменяют доказательства.
| Диагностическая строка | Что сохранить | Ограниченное следующее решение |
|---|---|---|
| DNS | Клиент, имя, контекст резолвера и ошибка | Проверить разрешение; причина HTTP ещё неизвестна |
| Соединение/TLS | Ссылка на маршрут, ошибка связи или доверия | Проверить этап без отключения доверия |
| HTTP | Запрос с ответом, статус и выбранные заголовки | Применить документированную политику без названия детектора |
| Скрипт/данные | Исключение, результат ресурса и обязательное поле | Найти невыполненное условие без переименования ответа |
| Политика сервиса | Документированное правило или cause=unknown | Обратиться к оператору; остановиться без разрешения |
Разделяйте наблюдения и трактовки по полям. httpStatus=403 наблюдается; cause=unknown может оставаться верным после локализации ответа. «Вероятно, оценка поведения» является неподтверждённой гипотезой, не фактом. Если позднее серверные данные определят правило доступа, добавьте ссылку и время, не меняя исходную запись браузера.
Запись собственного сервера тоже должна совпадать с инцидентом. Сопоставьте идентификаторы, окно, ресурс и ответивший компонент; шлюз и приложение могут отклонять по разным решениям. Общий документ объясняет возможную политику, связанная запись объясняет конкретный ответ. Для третьей стороны без такой записи ограничьте вывод и используйте поддерживаемые доступ или поддержку вместо зондирования невидимой логики.
Настройка BotBrowser не является решением сервера
Документация согласованности автоматизации BotBrowser описывает параметры профиля и фреймворка. Обзор отпечатков описывает поверхности движка, управляемые системой профилей. Это возможности настройки браузера, не объяснение отказа сервера. Сохраняйте бинарный файл, ссылку на профиль и настройки фреймворка без смешения намерения конфигурации и проверенного удалённого результата.
Смена поверхности браузера сама по себе не доказывает исправление DNS, доверие к сертификату или разрешение квоты на новый запрос. Прокси меняет заявленный маршрут; отличие результата не раскрывает причину исходного отказа. Сохраните наблюдение и ищите доказательства на найденном уровне. Настроенный браузер не предоставляет разрешение и не обещает принятие данных приложением.
Вопросы и ответы
Доказывает ли 403 обнаружение отпечатка?
Нет. Это отказ HTTP. Правило требует серверных данных или документированного объяснения именно этого запроса, не угаданного детектора.
Считается ли ошибка HTTP сбоем запроса в Playwright?
Не только из-за статуса. Playwright различает полученный ответ и невозможность получить ответ. Сохраняйте оба типа событий со связью с конкретным запросом.
Доказывает ли успех curl работоспособность браузера?
Нет. Curl является другим клиентом со своими состоянием и настройками. Результат может подтвердить наблюдение, но не воспроизводит браузерную сессию.
Достаточна ли видимая проверка для определения поведенческого правила?
Нет. Сохраните видимое состояние, ответ и последовательность. Причина политики остаётся неизвестной без данных ответственного сервиса.
Источники
- MDN: статусы ответа HTTP
- MDN: DNS
- MDN: TLS
- curl: коды ошибок
- curl: параметры командной строки
- Playwright: событие requestfailed
- Playwright: событие pageerror
- BotBrowser: согласованность автоматизации
- BotBrowser: обзор отпечатков
- Доверие браузерного соединения
- Решения по лимитам скрапинга
Практический вывод
Найдите сбойный запрос и сохраните последний подтверждённый этап. До смены настроек разделите ошибки DNS или TLS, HTTP-отказ и невыполненное условие данных. Без ответственного источника причина политики остаётся неизвестной. Сохраните ответ или ошибку и исследуйте конкретный этап в разрешённой интеграции, не превращая расплывчатое сообщение о блокировке в выдуманный вердикт детектора.
Эта статья входит в руководство: Обзор настройки прокси: карта сетевых решений браузера
Похожие статьи
CAPTCHA при сборе данных: диагностика смены ответа
СетьCloudflare и DataDome: ответы при сборе данных
СетьЛимиты скрейпинга: 429, Retry-After и параллелизм
СетьРотация прокси: границы сессии при сборе данных
СетьDNS over TLS: приватность резолвера, развертывание и границы сбоев
СетьTLS-сертификаты и доверие браузера к соединению
Выполните ту же проверку в BotBrowser
Загрузите профиль, сохраните внутри браузера те сигналы, о которых только что прочитали, и подтвердите результат на своей машине до раскатки.