Аутентификация прокси по логину и паролю: как подключиться и избежать ошибок
При аутентификации по логину и паролю программа передаёт прокси данные доступа, выданные провайдером. Прокси проверяет их и разрешает использовать услугу. Такой способ удобен для работы с разных устройств и из разных сетей: если услуга не требует дополнительной привязки по IP, после переезда скрипта на другой сервер менять разрешённый адрес не нужно.
Для подключения понадобятся не только логин и пароль, но и правильные адрес, порт и протокол прокси. Кроме того, программа должна уметь передавать данные доступа именно выбранным способом. Поэтому сообщение об ошибке аутентификации ещё не доказывает, что пароль неверный.
Сравнение способов доступа и помощь с выбором — в статье «Аутентификация прокси». Здесь разберём подключение по логину и паролю: от заполнения полей до поиска ошибок в рабочем скрипте.
Что такое аутентификация по логину и паролю
Логин определяет учётную запись или доступ к конкретной услуге, а пароль подтверждает право её использовать. После проверки прокси обслуживает соединение в пределах выданных прав: доступного списка адресов, оплаченного пакета и действующих ограничений.
Реквизиты прокси не следует путать с паролем личного кабинета. Данные для подключения программы могут отличаться от тех, с которыми вы входите на сайт провайдера. API-ключ предназначен для обращения к API сервиса, а пароль целевого сайта — для входа на этот сайт. Подставлять их в поле пароля прокси нужно только тогда, когда провайдер прямо указывает такой способ подключения.
Успешный вход на прокси также не означает автоматический вход на сайт назначения. Если сайту нужны собственная учётная запись, cookie или токен, программа по-прежнему должна предоставить их отдельно.
Когда этот способ удобен
Доступ по логину и паролю подходит для программ в разных местах — как постоянных, так и меняющихся. Если IP-привязки нет, каждой программе нужны реквизиты и параметры прокси; отдельная запись whitelist для её сети не требуется.
Например, команда работает из двух офисов и из дома, у каждого места свой публичный IP. Программы могут использовать одинаковые реквизиты прокси, если сервис разрешает этим программам пользоваться одной парой реквизитов без IP-привязки. Настройки находятся в каждой программе, а прокси проверяет реквизиты при её подключении.
Для нескольких постоянных серверов этот способ тоже подходит. Однако число устройств, одновременных соединений и доступные ресурсы определяются тарифом. Один пароль сам по себе не даёт неограниченного доступа.
Как программа передаёт реквизиты прокси
Общий порядок прост: программа связывается с прокси, проходит проверку доступа и через него обращается к нужному ресурсу. Детали проверки зависят от протокола.
У HTTP-прокси сервер может сначала ответить 407 Proxy Authentication Required и сообщить, какой способ проверки он принимает. Программа передаёт данные для аутентификации в заголовке Proxy-Authorization. Некоторые клиенты отправляют их сразу, поэтому отдельного первого отказа в журнале может не быть.
При открытии HTTPS-сайта через обычный HTTP-прокси проверка может происходить во время запроса CONNECT, создающего туннель. После его открытия программа устанавливает защищённое соединение с сайтом. Последующие запросы к сайту внутри этого туннеля не повторяют аутентификацию на прокси, выполненную при его создании.
В SOCKS5 логин и пароль проверяются на начальном этапе соединения, до запроса подключения к адресу назначения. Если проверка не пройдена, программа не получает нужное соединение через прокси. Собственный отказ SOCKS5 не является HTTP-ответом с кодом 407.
Выбирайте протокол и способ аутентификации, которые поддерживает услуга. В SOCKS4 есть поле идентификатора пользователя, но нет обмена логином и паролем, определённого для SOCKS5. Заполнение этого поля не заставит SOCKS4-клиент пройти проверку пароля по правилам SOCKS5.
Какие параметры вводить в программе
Начните с параметров конкретной услуги. Если у программы есть отдельные поля, распределите данные по ним:
| Параметр | Что вводить | Что проверить |
|---|---|---|
| Протокол | HTTP, HTTPS или SOCKS5 — согласно параметрам услуги. | Название протокола в программе должно соответствовать соединению с прокси. |
| Адрес прокси | IP или доменное имя выданного прокси либо шлюза. | Нужен адрес прокси, а не ваш IP и не адрес сайта назначения. |
| Порт | Номер порта из параметров подключения. | Не заменяйте его привычным номером: для разных протоколов или режимов порты могут отличаться. |
| Логин | Имя пользователя для этой услуги. | Сохраните регистр, разделители и дополнительные параметры, если они входят в выданную строку. |
| Пароль | Пароль доступа к прокси. | Копируйте целиком; не добавляйте пробел, перевод строки или кавычки вместе с текстом. |
Некоторые программы принимают одну строку в формате protocol://username:password@host:port. Например, в http://client01:River%[email protected]:8080 имя пользователя — client01, пароль — River@2026, адрес — proxy.example, порт — 8080. Символ @ внутри пароля представлен как %40, чтобы не спутать его с разделителем перед адресом.
Такой разбор строки поддерживает, например, curl. В отдельное поле пароля обычно вводят сам пароль, без URL-кодирования. Поэтому переносить закодированное значение из строки в отдельное поле без проверки формата нельзя: программа может принять его за другой пароль. Для строк с %, двоеточиями и другими специальными символами сверяйтесь с форматом конкретного клиента.
Кодируйте нужные символы внутри реквизитов один раз; кодирование всей строки испортит её разделители. Кавычки при запуске команды не заменяют URL-кодирование. У самого способа аутентификации тоже могут быть ограничения: например, HTTP Basic допускает двоеточие в пароле, но не в имени пользователя.
Форматы импорта тоже различаются. Строки host:port:username:password и username:password@host:port не взаимозаменяемы. Если импортёр ждёт один порядок, правильные данные в другом порядке не заработают.
Префикс http:// в строке прокси описывает способ связи с самим прокси. Он не запрещает открывать HTTPS-сайты: для них клиент может создать туннель. А простая замена префикса на https:// не добавит серверу поддержку защищённого соединения с прокси.
У некоторых сервисов в логин включены параметры страны, группы выходных адресов или сессии. Копируйте такую строку целиком. Эти параметры управляют выбором маршрута по правилам провайдера; придумывать или переносить их синтаксис из другого сервиса не стоит.
Почему нужно проверить поддержку аутентификации в программе
Умение работать через прокси и умение авторизоваться на нём — разные возможности. Наличие полей адреса и порта ещё не означает, что клиент сможет отправить логин и пароль.
Проверяйте конкретное сочетание: протокол прокси, способ аутентификации и программу. Например, встроенная реализация SOCKS5 в Chrome не поддерживает аутентификацию на SOCKS5-прокси. Поэтому правильные реквизиты такого прокси сами по себе не решат проблему. Наличие расширения для выбора прокси также не гарантирует, что оно добавляет недостающий способ проверки.
В скриптах поддержка может зависеть от библиотеки, её дополнительных компонентов и способа передачи настроек. Приложение не обязано брать параметры из системных настроек или из того браузера, в котором подключение уже работает.
Перед запуском большой задачи проверьте один запрос именно в рабочей программе. Убедитесь, что она использует заданный прокси и при отказе не продолжает запрос напрямую. Успешное открытие страницы без такой проверки ещё не подтверждает правильность настройки.
Что происходит при смене вашего IP
При ADSL-подключении с динамическим IP интернет-провайдер может выдать новый адрес после перезапуска роутера или переподключения. Если прокси проверяет только логин и пароль, программа подключается с прежними реквизитами: новый IP не нужно добавлять в панель. То же относится к переходу из офиса на домашнюю сеть.
Однако смена сети может оборвать уже открытые соединения. Клиенту придётся подключиться заново; незавершённый запрос может потребовать повтора. Ошибку сразу после переключения с Wi-Fi на мобильный интернет не следует автоматически считать проблемой пароля.
Некоторые услуги одновременно проверяют реквизиты и адрес источника. Тогда правильный пароль не отменяет сетевое ограничение: новый IP должен соответствовать разрешённому адресу или диапазону. Перед переносом скрипта выясните, действует ли доступ из любой сети или применяется комбинированная проверка.
Защищён ли пароль при передаче
Аутентификация отвечает на вопрос «как прокси проверяет клиента», а шифрование — «можно ли прочитать передаваемые данные на пути». Сам факт наличия пароля не делает соединение зашифрованным.
При HTTP Basic логин и пароль кодируются в Base64. Это обратимое представление данных, а не шифрование. Если соединение с прокси не защищено, наблюдатель на этом участке сети может получить реквизиты. Стандартная проверка по логину и паролю в SOCKS5 также сама по себе не шифрует их передачу.
HTTPS у сайта назначения защищает соединение программы с этим сайтом. Для HTTP-прокси проверка доступа при создании туннеля происходит раньше; TLS сайта не защищает уже переданные прокси реквизиты. Аналогично, HTTPS-запрос через SOCKS5 не добавляет шифрование к предшествующей проверке пароля на прокси.
Чтобы защитить этот участок, нужна защита именно соединения от программы до прокси — например, HTTPS-прокси с TLS, если его поддерживают и сервис, и клиент. При таком подключении программа должна проверять сертификат прокси. Название «HTTPS-прокси» в списке продаж иногда означает лишь возможность открывать HTTPS-сайты, поэтому уточняйте, где именно работает TLS.
Если раскрылась полная строка с действующим паролем, другой человек может использовать услугу в пределах её правил: расходовать пакет или занимать доступные соединения. Это не равнозначно получению пароля личного кабинета, если реквизиты разделены. При этом сам способ аутентификации не гарантирует, что адрес невозможно распознать как прокси: доступный извне запрос аутентификации может выдать наличие сервиса.
Можно ли использовать одни реквизиты в нескольких программах
Технически несколько клиентов могут передавать одинаковые логин и пароль. Допустимость такой работы и её пределы определяет провайдер: условия совместного доступа, число активных соединений, объём пакета и дополнительные ограничения.
Например, два скрипта могут использовать одну учётную запись, но одновременно открывать разное число соединений. Один пароль не означает одно соединение. И наоборот, запуск десяти процессов не увеличивает общий лимит услуги в десять раз.
Число пар логина и пароля также не равно числу выходных IP. Одна пара логина и пароля может давать доступ к списку статических прокси или к шлюзу с пулом адресов. Какой IP увидит сайт, определяется выбранным прокси и правилами маршрутизации услуги.
Если сервис выдаёт отдельные реквизиты для программ или участников команды, один доступ можно отключить без изменения остальных. Общий пароль при замене нужно обновить в каждой программе, которая его использует. Отдельные реквизиты при этом не означают отдельные лимиты соединений или трафика: проверьте, какие ограничения у них общие.
Почему прокси не принимает логин и пароль
Начните с того, кто вернул ошибку. HTTP-код 407 относится к проверке доступа на прокси; код 401 от сайта назначения — к доступу на сам сайт. Сообщение 403 или тайм-аут без дополнительных данных не позволяют сделать вывод о правильности пароля.
| Что происходит | Возможная причина | Что проверить |
|---|---|---|
| Программа снова и снова запрашивает пароль | Неверные реквизиты, сохранённый старый пароль или неподдерживаемый способ проверки. | Данные именно этой услуги, выбранный метод и сохранённые настройки клиента. Один первоначальный HTTP-ответ 407 может быть обычным началом проверки; важен результат следующей попытки. |
| Отдельные поля работают, импорт строки — нет | Другой порядок полей, спецсимволы или лишние пробелы. | Ожидаемый формат импорта и обработку символов в логине и пароле. |
| В одном приложении работает, в другом — нет | Второй клиент не поддерживает нужный протокол или аутентификацию либо не использует переданные настройки. | Поддержку конкретного сочетания и фактический способ подключения. Проверка должна идти из сопоставимой сети. |
| После переезда на сервер перестало работать | Изменился исходный IP, осталась IP-привязка или на сервер не перенесены настройки. | Комбинированные ограничения, адрес нового источника и конфигурацию запущенного процесса. |
| Соединение не устанавливается или обрывается сразу | Недоступен адрес или порт, перепутан протокол, соединение блокируется либо сервис отклоняет запрос. | Выданный адрес, порт, протокол и точное сообщение клиента. Сам обрыв ещё не показывает, дошло ли дело до проверки пароля. |
| Раньше работало, теперь отказывают все клиенты | Пароль изменён, доступ отключён, закончился срок услуги или исчерпан пакет. | Состояние услуги и последние изменения. Не все такие отказы сервисы обозначают как ошибку пароля. |
| Одиночная проверка проходит, под нагрузкой появляются отказы | Лимит соединений или запросов, перегрузка клиента либо сервиса. | Параллелизм, действующие ограничения и точные ответы. Уменьшите нагрузку и сравните результат, прежде чем менять реквизиты. |
Проверьте состояние услуги и остаток пакета, затем выполните один запрос с выданными настройками в рабочей программе. Если он не проходит, по таблице проверьте поддержку клиента, формат реквизитов и ограничения исходного IP, меняя по одному параметру. После устойчивого результата увеличивайте нагрузку и следите за ограничениями, которые проявляются только при параллельной работе.
Как хранить и менять реквизиты в рабочих скриптах
Отделяйте реквизиты от кода: храните их в конфигурации с ограниченным доступом или в хранилище секретов вашей среды. Приложение может получать их через переменные окружения, но они сами по себе не являются шифрованием. Не включайте действующий пароль в репозиторий и шаблоны, которые передаёте другим людям.
В журнале обычно достаточно адреса и порта прокси, результата подключения и кода ошибки. Полная строка подключения содержит пароль; скрывайте его до записи в лог. При запуске из командной строки учитывайте, что секрет может сохраниться в истории команд или оказаться видимым среди аргументов процесса — это зависит от программы и системы.
Перед заменой пароля найдите все программы и процессы, которые его используют: локальные приложения, серверные процессы, планировщик задач и систему запуска сборок. После изменения обновите настройки и создайте новое соединение для проверки. Убедитесь, что давно запущенные процессы тоже подхватили новое значение; некоторым для этого нужен перезапуск.
Если старый пароль больше не должен работать, проверьте отказ нового подключения с ним. Судьба уже открытых соединений зависит от правил сервиса: смена пароля не всегда немедленно разрывает их. Для срочного прекращения доступа используйте предусмотренный провайдером способ отключения.
Комбинированная аутентификация: IP и пароль
При комбинированной аутентификации прокси проверяет два условия: реквизиты и адрес, с которого подключается программа. Для доступа должны выполняться оба. Правильный пароль сам по себе не отменяет ограничение по IP.
В статических пакетах ProxyCompass комбинированный режим использует подсеть /24. Если у вас несколько внешних IPv4 в одной такой подсети, достаточно внести один из них в whitelist. С остальных адресов этой подсети можно подключаться с правильными логином и паролем — отдельная запись для каждого не требуется.
На схеме первые три числа публичного IP программы совпадают с адресом в whitelist. С правильными реквизитами программа может подключиться; адрес из другой подсети не проходит сетевую проверку, а неверный пароль не сработает и внутри разрешённой подсети. Другие клиентские IP из той же подсети тоже могут использовать эту запись. Это удобно для программ, которым нужны поля логина и пароля. Правило относится к публичным IP ваших программ, а не к купленным выходным IP прокси.
