Ошибки таймаута прокси: соединение зависает и сбрасывается
Обновлено:
Таймаут неприятнее других ошибок, потому что он ничего не сообщает: ни отказа в соединении, ни запроса пароля — лишь тишина, пока программа не прекратит попытки. Чаще всего пакеты уходят в никуда и теряются, либо прокси принимает соединение, но не успевает вовремя ответить. Главная задача — понять, на каком именно этапе возникает эта тишина.
Три примера вывода при таймауте, которые мы зафиксировали
Мы настроили тестовый прокси, который принимает TCP-соединения и никогда не отвечает, после чего выполнили один и тот же запрос с двумя вариантами ограничения времени (адрес изменен на 203.0.113.10:8080, user123:pass456):
curl --connect-timeout 10 -x http://user123:[email protected]:8080 https://example.comвозвращаетcurl: (28) Proxy CONNECT aborted due to timeout. Этот лимит ограничивает только этап подключения.- При замене на
-m 10(лимит на всю передачу данных целиком) возвращаетсяcurl: (28) Connection timed out after 10002 milliseconds. - Chromium при обращении к тому же прокси выдает
ERR_TIMED_OUT; прокси-чекер показывает статусtimeout.
Причины в порядке убывания вероятности
- Ваша сеть незаметно блокирует порт прокси. Wi-Fi в офисах, отелях и учебных заведениях часто просто сбрасывает пакеты к нестандартным портам вместо явного отклонения, из-за чего ожидание длится бесконечно.
- Слишком короткий таймаут в коде. Для прокси в отдаленной локации требуется чуть больше времени на установку соединения (handshake); лимит в 2–3 секунды может оборвать полностью рабочий прокси.
- Перегружен прокси или целевой сайт. Прокси принимает соединение, но ждет ответа от сайта, и таймер вашей программы истекает первым.
- Неверный IP-адрес. Опечатка, из-за которой запрос попадает на неотвечающий адрес, приводит именно к глухой тишине, а не к отказу в соединении.
Решения для разных сред
- Windows/Chrome: проверьте тот же прокси через мобильный интернет со смартфона. Если таймаут исчез, блокировка происходит в исходной сети; ознакомьтесь с материалом проверка прокси и брандмауэра.
- Антидетект-браузеры: кнопка проверки прокси обычно имеет фиксированное время ожидания. Повторите проверку несколько раз, а если ошибка возникает только в отдельных профилях, сравните их строку прокси с работающей.
- Telegram: зависание в статусе «Подключение...» после включения прокси — это тоже чаще всего таймаут; проверьте прокси в чекере перед изменением настроек Telegram.
- Python requests: передавайте параметр
timeout=(10, 30), что означает 10 секунд на подключение и 30 секунд на чтение ответа. Перехватывайтеrequests.exceptions.ConnectTimeoutиrequests.exceptions.ReadTimeoutраздельно, чтобы видеть место зависания, и используйте несколько повторных попыток с интервалом вместо бесконечного ожидания. - curl: используйте параметр
--connect-timeout, чтобы замерить только фазу подключения, и флаг-m, чтобы ограничить выполнение всей команды.
Таймаут или просто медленная работа?
Медленный прокси все равно отвечает, пусть и с задержкой. Тест скорости прокси покажет реальное время отклика; если оно вплотную приближается к таймауту в вашей программе, увеличьте лимит или выберите прокси в стране, расположенной ближе к целевому ресурсу. Если при повторных проверках ответа так и нет, это реальный таймаут, и следующим шагом стоит открыть тикет в поддержке, приложив результат проверки чекером.
Пошаговая инструкция
- 1
Подтвердите таймаут через чекер
Вставьте строку прокси в прокси-чекер. Результат
timeoutозначает, что ответ не был получен в пределах времени ожидания. - 2
Смените сеть для локализации проблемы
Повторите попытку через мобильный интернет. Если прокси заработал, причина в исходной сети или ее брандмауэре.
- 3
Замерьте время отклика
Запустите тест скорости прокси, чтобы понять, работает ли прокси медленно или не отвечает вовсе.
- 4
Настройте таймауты и повторные попытки в коде
Увеличьте время ожидания подключения примерно до 10 секунд, добавьте логику повторных попыток и запустите задачу снова.
Часто задаваемые вопросы
Означает ли таймаут, что прокси не работает?
Не обязательно. Во многих случаях таймауты вызваны тем, что сеть пользователя блокирует нужный порт. Перед выводами обязательно проверьте подключение через другую сеть.
Какой таймаут для прокси стоит выставлять в коде?
Разумная отправная точка — около 10 секунд на подключение и 30 секунд на чтение. Для удаленных прокси или тяжелых страниц может потребоваться больше времени.
Почему таймаут через прокси возникает только на определенных сайтах?
В этом случае прокси исправен, а медленно отвечает или блокирует запросы сам целевой ресурс. Если сайт возвращает 502 вместо тишины, см. 502 Bad Gateway.
Чем таймаут отличается от сброса соединения (refused connection)?
Отказ в соединении возвращается мгновенно, а при таймауте соединение ждет ответа до истечения лимита времени. См. прокси-сервер отклоняет соединения.
Выберите прокси ближе к вашему целевому рынку
VinaProxy предлагает IP-адреса во Вьетнаме, США, Японии, Южной Корее, Сингапуре, Великобритании и Гонконге, помогая вам находиться ближе к целевым серверам.
Посмотреть тарифы