Как использовать SOCKS5-прокси в Chrome с именем пользователя и паролем (метод локального моста)
Chrome не может передавать учётные данные SOCKS5, поэтому прокси с аутентификацией не работают «из коробки». В этом руководстве создаётся локальный мост с помощью gost или Privoxy, который хранит ваше имя пользователя и пароль IPRoyal и направляет трафик Chrome через прокси.
Обзор
Chrome и другие браузеры на Chromium могут использовать SOCKS5-прокси через флаг --proxy-server, но не могут передавать имя пользователя и пароль SOCKS5. В Chrome нет диалога ввода учётных данных для SOCKS5, а распространённые прокси-расширения аутентифицируют только HTTP- и HTTPS-прокси. Если ваш прокси требует входа, Chrome либо завершается ошибкой ERR_PROXY_CONNECTION_FAILED, либо подключается без учётных данных и получает отказ.
Решение — локальный мост: небольшой форвардер, который слушает 127.0.0.1, принимает неаутентифицированный трафик от Chrome и пересылает его на аутентифицированный upstream-эндпоинт SOCKS5. Chrome никогда не видит учётные данные, а сетевой стек браузера никогда не обращается к upstream напрямую.
Как каждый способ проксирования ведёт себя в Chrome
| Способ | Обрабатывает учётные данные SOCKS5 | Примечания |
|---|---|---|
Флаг --proxy-server="socks5://..." |
Нет | Разрешает DNS на прокси, но не работает, когда upstream требует аутентификацию |
| Настройка прокси в ОС или системе | Нет | Та же ограниченность, к тому же влияет на все приложения, а не на один профиль браузера |
| Прокси-расширение | Нет | Большинство расширений поддерживают только аутентификацию HTTP и HTTPS |
| Список разрешённых IP у провайдера | Не требуется | Работает только если ваш тариф и конфигурация это поддерживают |
| Локальный мост (это руководство) | Да | Учётные данные остаются на вашей машине; Chrome обращается к localhost |
Предварительные требования
- Установленный Chrome или Chromium, который можно запустить из командной строки
- Учётные данные IPRoyal SOCKS5: хост шлюза, порт, имя пользователя, пароль из вашей панели управления
- Локальный форвардер:
gost(рекомендуется) или Privoxy - Права на запуск слушателя, привязанного к
127.0.0.1
Шаги
-
Проверьте, не снимает ли проблему полностью разрешение по IP. Некоторые провайдеры позволяют авторизовать фиксированный IP-адрес вместо отправки учётных данных. Откройте панель управления IPRoyal и уточните, есть ли такая опция для используемого вами тарифа. Если есть и ваш публичный IP стабилен, можно пропустить мост и использовать флаг
--proxy-serverнапрямую. -
Установите локальный форвардер.
gostподдерживает SOCKS5 в обоих направлениях и поставляется одним бинарным файлом, что делает его самым простым выбором.
- Windows: скачайте бинарный файл
gostсо страницы официальных релизов и добавьте его вPATH - macOS: установите
gostчерез ваш пакетный менеджер, если пакет доступен, иначе скачайте бинарный файл - Linux: установите бинарный файл со страницы релизов или воспользуйтесь пакетом дистрибутива, если он доступен
- Запустите мост. Он слушает локальный порт без аутентификации и пересылает всё на аутентифицированный upstream.
gost -L socks5://127.0.0.1:1080 -F 'socks5://USERNAME:PASSWORD@GATEWAY_HOST:GATEWAY_PORT'
В Windows PowerShell заключите URL upstream в кавычки:
gost -L socks5://127.0.0.1:1080 -F "socks5://USERNAME:PASSWORD@GATEWAY_HOST:GATEWAY_PORT"
Оставьте этот процесс работать в отдельном окне терминала, пока вы работаете в браузере.
- Проверьте мост, прежде чем трогать Chrome. Этот запрос идёт через мост, поэтому возвращённый адрес должен быть IP-адресом выхода прокси, а не адресом вашего интернет-провайдера.
curl --socks5-hostname 127.0.0.1:1080 https://api.ipify.org
Если команда зависает, мост не пересылает трафик. Если возвращается ошибка аутентификации, учётные данные upstream неверны.
- Запустите Chrome через мост. Используйте отдельный профиль, чтобы повседневный браузинг остался нетронутым и флаг не попал в вашу обычную сессию.
macOS:
"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" \
--proxy-server="socks5://127.0.0.1:1080" \
--user-data-dir="$HOME/.chrome-proxy-profile"
Linux:
google-chrome \
--proxy-server="socks5://127.0.0.1:1080" \
--user-data-dir="$HOME/.chrome-proxy-profile"
Windows:
& "C:\Program Files\Google\Chrome\Application\chrome.exe" `
--proxy-server="socks5://127.0.0.1:1080" `
--user-data-dir="$env:TEMP\chrome-proxy-profile"
-
Подтвердите IP-адрес выхода внутри Chrome. Откройте страницу определения IP в новом окне и сравните адрес с тем, который вернул
curl. Они должны совпадать. Если Chrome показывает ваш реальный IP, см. раздел устранения неполадок. -
Сделайте переиспользуемый лаунчер, чтобы не вводить флаги заново. В macOS или Linux сохраните команду в shell-скрипте или алиасе. В Windows создайте ярлык, цель которого включает флаги и путь
--user-data-dir. -
Меняйте IP, перезапуская мост с новой upstream-идентичностью. Мост сохраняет одну upstream-идентичность, пока работает, поэтому смена IP-адреса выхода или переход на эндпоинт конкретной страны из панели управления означает остановку
gost, повторный запуск с новой строкой таргетинга и перезагрузку Chrome.
Альтернатива: Privoxy как фронтенд
Если вам нужен HTTP-прокси перед upstream SOCKS5, потому что используемый инструмент или расширение поддерживает только HTTP-прокси, Privoxy может выполнить преобразование.
Добавьте эти строки в его файл конфигурации:
listen-address 127.0.0.1:8118
forward-socks5t / USERNAME:PASSWORD@GATEWAY_HOST:GATEWAY_PORT .
Затем направьте Chrome на локальный HTTP-слушатель:
google-chrome --proxy-server="http://127.0.0.1:8118" --user-data-dir="$HOME/.chrome-privoxy-profile"
forward-socks5t сохраняет разрешение DNS на стороне прокси, что важно, когда вы проверяете контент, привязанный к региону.
Устранение неполадок
ERR_PROXY_CONNECTION_FAILED: мост не запущен, указан неверный порт или Chrome направлен на upstream-эндпоинт вместо127.0.0.1.- Chrome игнорирует флаги: существующий процесс Chrome мог перехватить новое окно. Закройте все окна Chrome и фоновые процессы, затем запустите снова. Отдельный
--user-data-dirпредотвращает это. - Страницы загружаются, но показывают ваш реальный IP: убедитесь, что вы в профиле, который запустили с флагом. Расширения, управляющие настройками прокси, корпоративная политика и PAC-скрипты могут переопределять прокси из командной строки.
- Учётные данные отклонены upstream: закодируйте специальные символы в пароле процентным кодированием (
@становится%40,:становится%3A) или передайте upstream отдельными параметрами, если ваш форвардер это поддерживает. - Некоторые сайты зависают при первой загрузке: пересылка SOCKS5 покрывает TCP, но не UDP, а Chrome может пытаться использовать QUIC поверх UDP. Запускайте с
--disable-quic, если сайт отваливается по тайм-ауту до отрисовки. - WebRTC раскрывает локальные адреса: проксирование SOCKS5 не покрывает WebRTC. Установите обработку IP-адресов WebRTC в
disable_non_proxied_udpчерез корпоративную политику или управляйте этим с помощью политики браузера либо расширения. - Мост доступен из вашей сети: всегда привязывайтесь к
127.0.0.1, никогда к0.0.0.0. Любой, кто может достучаться до слушателя, сможет использовать вашу прокси-учётную запись.
Итог
Chrome не может передавать учётные данные SOCKS5, поэтому практичное решение — локальный мост: gost или Privoxy слушает на loopback, хранит имя пользователя и пароль IPRoyal и пересылает трафик Chrome на аутентифицированный upstream SOCKS5. Проверьте IP-адрес выхода с помощью curl перед запуском браузера, используйте отдельный --user-data-dir и перезапускайте мост всякий раз, когда нужен новый IP или другая страна.