Чому Chrome весь час питає ім'я користувача й пароль від проксі
Зміст

Коротко: Chrome показує вікно входу на проксі, коли проксі відповідає статусом 407, Proxy Authentication Required. Chrome не бере облікових даних зі своїх налаштувань проксі чи прапорців запуску, тож ви вводите їх у вікно, або їх підставляє розширення. Вікно, яке повертається після входу, найчастіше означає, що проксі відхилив надіслане. SOCKS5-проксі з паролем не може працювати в Chrome, бо 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 цього не реалізує і не використовуватиме жодних
облікових даних, вбудованих у налаштування проксі» (Chrome does not implement
this, and will not use any credentials embedded in the proxy settings).
Автентифікація проходить через звичайний механізм входу, і для більшості людей
цей механізм і є вікном.
Проксі, заданий прапорцем запуску --proxy-server, це ще один спосіб ввести
ручні налаштування, тож пароль, вписаний у прапорець, теж нічого не дає.
Як розширення може відповісти на вікно за вас?
Chrome дозволяє розширенню відповісти на запит входу від проксі ще до появи
вікна. webRequest API
генерує подію onAuthRequired, у якої прапорець isProxy дорівнює true,
коли питає проксі, і розширення з дозволом webRequestAuthProvider може
відповісти ім’ям користувача й паролем.
Наш безкоштовний ProxyJam Connector використовує цю подію. Ви зберігаєте ім’я користувача й пароль у кожному профілі проксі, а розширення відповідає за збережений проксі, чиї хост і порт збігаються з тим, що питає.
- У Chrome воно відповідає, щойно ви надасте доступ до мережі на його сторінці Settings (налаштування); до того з’являється звичайне вікно браузера.
- Коли проксі двічі відхиляє облікові дані для того самого запиту, Connector припиняє повторні спроби, а його значок на панелі інструментів показує AUTH.
- Воно відповідає за HTTP- і HTTPS-проксі. Профіль SOCKS5 з ім’ям користувача й паролем отримує попередження, бо Chrome не може їх використати.
Чи може Chrome працювати із SOCKS5-проксі з паролем?
Ні. Нотатки Chromium про проксі стверджують, що «для SOCKSv5 у Chrome не підтримується жоден метод автентифікації (хоча для протоколу вони існують)» (No authentication methods are supported for SOCKSv5 in Chrome (although some do exist for the protocol)), і для SOCKS4 теж жодного. Клієнт SOCKS5 у Chrome пропонує проксі лише метод, що не потребує облікових даних, тож проксі, який наполягає на паролі, відхиляє з’єднання. В API розширень немає події для входу на SOCKS, на яку розширення могло б відповісти.
Що працює:
- Зареєструйте свою адресу в провайдера. Деякі провайдери проксі можуть приймати з’єднання зі списку IP-адрес, який ви їм надасте, без пароля.
- Використайте HTTP-точку доступу провайдера. Якщо той самий проксі приймає і HTTP-з’єднання, Chrome може входити на нього через вікно або розширення.
- Використовуйте для цього проксі Firefox. API розширень Firefox передає ім’я користувача й пароль для SOCKS-проксі (довідник MDN з ProxyInfo). Збірка Connector для Firefox цим користується, і її можна встановити з Firefox Add-ons.
Що далі?
Якщо ви перемикаєтеся між кількома проксі з паролями, розширення, яке зберігає облікові дані кожного, відповідає за них на HTTP і HTTPS, а сторінка розширення перелічує, що Connector робить у Chrome. Щоб пускати через такий проксі лише деякі сайти, прочитайте статтю як у Chrome використовувати проксі лише для деяких сайтів. Правила для розширень, які змінилися для кожного перемикача, описано у статті що Manifest V3 змінив для проксі-розширень.
Якщо ви обираєте проксі для Connector, прочитайте що таке ISP-проксі: ProxyJam продає статичні резидентні (ISP) проксі на сторінці ISP-проксі, а ціни є на сторінці цін.
