Почему Chrome постоянно спрашивает логин и пароль прокси
Содержание

Коротко: Chrome показывает окно входа на прокси, когда прокси отвечает статусом 407, Proxy Authentication Required. Учётные данные из настроек прокси или флагов запуска Chrome не берёт, поэтому их вводят в это окно или их подставляет расширение. Если окно появляется снова после входа, чаще всего прокси отклонил то, что вы отправили. SOCKS5-прокси с паролем в Chrome работать не может: аутентификацию SOCKS5 браузер не реализует.
Chrome постоянно спрашивает логин и пароль прокси, когда прокси требует входа, а ответить на это требование иначе Chrome не может. За проблемой стоят четыре ситуации, и три из них решаются внутри Chrome. Четвёртая, SOCKS5-прокси с паролем, требует изменений на стороне прокси или другого браузера.
Что означает окно входа на прокси?
Прокси отказался передавать ваш запрос, пока вы не войдёте. На языке HTTP он ответил статусом 407, Proxy Authentication Required, который RFC 9110 описывает как означающий, что «the client needs to authenticate itself in order to use a proxy for this request» (клиенту нужно пройти аутентификацию, чтобы использовать прокси для этого запроса). Прокси называет способы входа, которые принимает, а браузер может повторить запрос с учётными данными.
Chrome собирает их в окне с заголовком «Sign in» (Вход). Его текст в
строках окон Chromium
звучит так: «The proxy $1 requires a username and password.» (прокси $1
требует имя пользователя и пароль), где вместо $1 стоит адрес прокси. Для
HTTP-прокси Chrome поддерживает способы Basic, Digest, Negotiate и NTLM,
перечисленные в
заметках Chromium о прокси.
Почему Chrome постоянно спрашивает пароль прокси?
Чаще всего прокси отклонил учётные данные и снова ответил 407, поэтому Chrome спрашивает ещё раз. Неверный пароль, логин, скопированный с пробелом в конце, или учётная запись, которую провайдер заблокировал, со стороны браузера выглядят одинаково.
Окно возвращается и тогда, когда пароль лежит там, где Chrome его не читает, например в настройках прокси, и когда расширению, которое его хранит, не дали разрешения отвечать. SOCKS5-прокси с паролем ведёт себя иначе: Chrome не показывает для него окна, а подключение не устанавливается. Все четыре ситуации и что делать в каждой собраны в таблице «Найдите свой случай».
Почему пароль в настройках прокси игнорируется?
Chrome не читает учётные данные, вписанные в настройки прокси. Многие системы
позволяют ввести там логин и пароль или записать их прямо в адрес в виде
user:password@host:port, но
заметки Chromium о прокси
говорят прямо: «Chrome does not implement this, and will not use any credentials
embedded in the proxy settings» (Chrome этого не реализует и не будет
использовать учётные данные, встроенные в настройки прокси). Аутентификация
идёт через обычный механизм входа, и для большинства людей это окно.
Прокси, заданный флагом запуска --proxy-server, это ещё один способ ввести
ручные настройки, поэтому пароль, вписанный во флаг, тоже ни на что не влияет.
Как расширение может ответить на окно за вас?
Chrome позволяет расширению ответить на запрос входа от прокси до того, как
появится окно. API webRequest
генерирует событие onAuthRequired, у которого флаг isProxy равен true, когда
спрашивает прокси, и расширение с разрешением webRequestAuthProvider может
ответить логином и паролем.
Наше бесплатное расширение ProxyJam Connector использует это событие. Вы сохраняете логин и пароль в каждом профиле прокси, и расширение отвечает за тот сохранённый прокси, чьи хост и порт совпадают с запрашивающим.
- В Chrome оно отвечает после того, как вы дадите ему доступ к сети на его странице настроек (Settings); до тех пор, как обычно, появляется собственное окно браузера.
- Если прокси дважды отклоняет учётные данные для одного и того же запроса, Connector прекращает попытки, а на его значке на панели инструментов появляется AUTH.
- Оно отвечает за HTTP- и HTTPS-прокси. Профиль SOCKS5 с логином и паролем получает предупреждение, потому что Chrome не может их использовать.
Может ли Chrome работать с SOCKS5-прокси с паролем?
Нет. Заметки Chromium о прокси утверждают, что «No authentication methods are supported for SOCKSv5 in Chrome (although some do exist for the protocol)» (Chrome не поддерживает ни одного способа аутентификации для SOCKSv5, хотя в самом протоколе они есть), и для SOCKS4 тоже ни одного. Клиент SOCKS5 в Chrome предлагает прокси только способ, не требующий учётных данных, поэтому прокси, который настаивает на пароле, отклоняет подключение. В API расширений нет события для входа на SOCKS, на которое расширение могло бы ответить.
Что работает:
- Зарегистрируйте свой адрес у провайдера. Некоторые провайдеры прокси умеют пускать подключения со списка IP-адресов, который вы им дадите, без пароля.
- Используйте HTTP-точку подключения провайдера. Если тот же прокси принимает и HTTP-подключения, Chrome может войти на него через окно или через расширение.
- Используйте для этого прокси Firefox. API расширений Firefox передаёт логин и пароль для SOCKS-прокси (справочник MDN по ProxyInfo). Сборка Connector для Firefox этим пользуется, и её можно установить из Firefox Add-ons.
Что дальше?
Если вы переключаетесь между несколькими прокси с паролями, расширение, которое хранит учётные данные каждого, отвечает за них на HTTP и HTTPS, а на странице расширения перечислено, что Connector делает в Chrome. Как пустить через такой прокси только часть сайтов, рассказано в статье как направить через прокси только некоторые сайты. Правила для расширений, которые изменились для всех переключателей, описаны в статье что Manifest V3 изменил для прокси-расширений.
Если вы выбираете прокси для Connector, прочитайте, что такое ISP-прокси: ProxyJam продаёт статические резидентные (ISP) прокси на странице ISP-прокси, цены на странице цен.
