403 Forbidden
Сервер понял запрос и отказал. При сборе данных это обычно означает, что класс адреса отклонили раньше, чем рассмотрели что-либо ещё.
Код 403 это отказ, а не ошибка. Запрос дошёл, был понят и отклонён, поэтому повтор без изменений будет возвращать тот же ответ бесконечно.
Момент появления говорит почти всё. Отказ на самом первом запросе, до всякого объёма, это решение о том, кем вы выглядите: чаще всего что адрес принадлежит хостинговому диапазону. Отказ после сотен успешных запросов это про то, что вы делали, и по сути ближе к лимиту частоты, чем к блокировке.
От этого различия зависит лечение. Первый случай решается сменой класса адреса, с датацентра на резидентку, и никакой темп тут не поможет. Второй решается замедлением или распределением по большему числу адресов, а смена класса это деньги, потраченные не на ту проблему.
Кодом 403 сайты отвечают и тогда, когда имеют в виду другое. Кто-то отдаёт его вместо 429, кто-то когда не обработан баннер согласия, кто-то когда не хватает заголовка. Прежде чем делать выводы, посмотрите тело: настоящий отказ обычно короткий, а страница проверки большая и полна скриптов.
Что сервер решил и когда
Сам код причины не несёт. Сервера возвращают 403 за класс адреса, за отсутствующую аутентификацию, ради которой не хочется отдавать 401, за географические ограничения, за непройденную проверку и иногда просто за запрос без заголовков, которые прислал бы браузер.
Сужает картину положение в последовательности. Отказ на первом запросе это про личность. Отказ после объёма это про поведение. Отказ только на части путей это про права. Отказ только из некоторых стран это про географию.
Второй сигнал это тело ответа. Однострочный отказ приходит от правила, полноценная HTML-страница со скриптами это проверка, а проверка это не то же самое, что блокировка, хотя приходят они одинаково.
Что менять и в каком порядке
Лестница короткая, и каждый шаг проверяется дёшево:
Сужение 403
# 1. дело в классе адреса? попробуйте резидентку на той же цели
curl -o /dev/null -s -w "%{http_code}\n" -x login:password@YOUR-DC-IP:50100 https://target.example/
curl -o /dev/null -s -w "%{http_code}\n" -x login_c_US:password@proxy.sotaproxy.com:10000 https://target.example/
# 2. дело в заголовках? отправьте настоящий язык
curl -o /dev/null -s -w "%{http_code}\n" -H "Accept-Language: en-US" -x login_c_US:password@proxy.sotaproxy.com:10000 https://target.example/
# 3. это проверка, а не отказ? посмотрите на размер
curl -s -x login_c_US:password@proxy.sotaproxy.com:10000 https://target.example/ | wc -c- Код 403 на первом запросе с датацентрового адреса это самый частый единичный результат в этом деле, и он не означает, что с вашей настройкой что-то не так.
- Если резидентка тоже сразу отдаёт 403, дело не в классе адреса. Смотрите заголовки, куки и нужно ли выполнять скрипты.
- Логируйте 403 отдельно от 429 и от таймаутов. Их смешение даёт долю блокировок, завышающую проблему.
Чем 403 не является
Это не бан лично вам
Про ваш аккаунт ничего не записано. Отказали диапазону, и другой диапазон обслуживается секундой позже нормально.
Это не лечится более быстрой ротацией
Если отказывают всему классу адресов, перебор большего их числа просто ускоряет отказы.
Это не всегда 403
Часть сайтов отвечает кодом 403 на превышение частоты, а часть кодом 429 на блокировку. Код это подсказка, доказательство это последовательность.
Страница проверки это не отказ
Большое тело со скриптами означает, что сайт хочет что-то выполнить, а не что он решил против вас.
Смотри на практике
Готов использовать 403 forbidden?
SotaProxy даёт доступ к ротирующим резидентским, мобильным, дата-центр и ISP прокси. Без минимальных платежей.
Начать