Аутентифицированные прокси в антидетект-браузерах: карта поддержки 2026 года
Chromium никогда не принимал учетные данные на SOCKS5, и у запускающего, который только передает --proxy-server, нет никого, кто бы ответил на запрос аутентификации. Вот какой фреймворк принимает user:pass, какой нуждается в помощнике, а какой является тупиком.
Аутентифицированный прокси в антидетект-браузере не работает тремя способами, и симптомы никогда не меняются: всплывающее окно учетных данных Chrome, которое невозможно закрыть, 407 на каждый запрос или страница, которая загружается идеально с вашего собственного IP. Прокси редко виноват. Chromium никогда не принимал имя пользователя и пароль на SOCKS5, и у запускающего, который только передает --proxy-server в бинарный файл, нет никого, кто бы ответил на запрос аутентификации браузера. Это карта 2026 года: какие фреймворки принимают user:pass нативно, какие нуждаются в помощнике и где дорога заканчивается.
Одна причина, три симптома
Прокси-стек Chromium имеет слот для адреса сервера SOCKS5 и не имеет слота для учетных данных. Запрос находится в трекере Chromium как проблема 40323993 уже много лет, расширение SwitchyOmega зафиксировало подтверждение команды Chrome в своей собственной проблеме #1455, а пользователи ChromeDriver, преследующие то же самое, получают указание на crbug 40829748. Исключение составляет Firefox — он аутентифицирует SOCKS5 нативно — поэтому Camoufox попадает в другую колонку по сравнению со всем остальным здесь. Если разделение протоколов для вас ново, начните с SOCKS5 против HTTP прокси.
HTTP и HTTPS прокси — это другая история: учетные данные работают, но никогда не с командной строки. Chrome отвечает на 407, поднимая запрос аутентификации, и что-то должно ответить — в обычном браузере это всплывающее окно, которое вы видите. В автоматизации это должно быть загруженное расширение, обработчик CDP, подписанный на Fetch.authRequired, или сам фреймворк. Все, что только передает флаг запуска, оставляет запрос без ответа, и это та зависшая страница, которую люди продолжают скриншотить. Половина формата учетных данных освещена в исправлении 407 proxy authentication required.
Поддержка аутентифицированных прокси в антидетект-браузерах: карта 2026 года
Три категории: учетные данные, принимаемые API, учетные данные, принимаемые только через помощника, которого вы создаете, и ограничение движка, которое никакая конфигурация не изменит.
Работает нативно с user:pass
- Playwright —
proxy={server, username, password}при запуске или для каждого контекста, задокументировано только для HTTP(S); другая половина в аутентификации прокси SOCKS5 в Playwright. - Patchright — замена Playwright, идентичный объект прокси, и он намеренно сохраняет включенные расширения, убирая
--disable-extensions. См. настройка прокси Patchright. - browser-use —
ProxySettings(server=..., username=..., password=...), но закрепите версию: проблема #2445 показывает конфигурацию, которая работала на 0.1.45 и тихо перестала на 0.5.4. См. конфигурация прокси browser-use. - Camoufox — движок Firefox, словарь прокси Playwright, и единственный, который также получает часовой пояс, локаль, координаты и поддельный адрес WebRTC из выходного IP через
geoip=True. См. Camoufox прокси и GeoIP. - Puppeteer — запуск
--proxy-serverбез учетных данных, затем вызовpage.authenticate({username, password})перед навигацией.
Требуется расширение, реле или обработчик CDP
- nodriver — обсуждение #1798 было главным результатом с марта 2024 года: Chrome не принимает учетные данные через аргументы браузера, и принятое решение подключает обработчик CDP
Fetch. Пошаговое руководство в аутентификация прокси в nodriver. - zendriver — форк наследует пробел; проблема #208 запрашивает аутентифицированные прокси, и проблема #10 имеет пользователя, переключающегося на расширение прокси. См. zendriver прокси с аутентификацией.
- SeleniumBase UC Mode —
--proxy=USER:PASS@host:portработает на Chromium, но только потому, что он генерирует для вас расширение Chrome; изменения в расширении Chrome 137 сломали именно это, и проблемы #3046 и #3918 отслеживают прокси с аутентификацией, борющиеся с обходом. Контрольный список в SeleniumBase UC Mode прокси не работает. - Обычный Selenium с Chrome — вообще нет нативного механизма; ответ экосистемы — это то же самое сгенерированное расширение, которое делают все вспомогательные пакеты на PyPI.
Никогда не работает: SOCKS5 с учетными данными
- Каждый фреймворк на Chromium выше — nodriver, zendriver, Patchright, SeleniumBase, Puppeteer и Playwright на Chromium все наследуют ограничение движка; по крайней мере, Playwright выдает
Browser does not support socks5 proxy authentication. - Проблема Playwright #10567 — открыта с ноября 2021 года и все еще помечена как сбор отзывов. Не планируйте, что это будет реализовано.
- Camoufox — HTTP-аутентификация работает на его движке Firefox, но пользователи сообщают, что учетные данные SOCKS5 работают только при установке локального прокси перед ним, поэтому рассматривайте этот путь как неясный, а не поддерживаемый.
- Честное исправление — используйте HTTP-эндпоинт или добавьте свой IP в белый список и полностью уберите учетные данные.

Обходной путь 1: используйте HTTP-эндпоинт провайдера
Это исправляет большинство обсуждаемых выше тем и ничего не стоит. Если ваш провайдер предоставляет тот же пул через HTTP и SOCKS5, укажите браузеру HTTP-шлюз, и учетные данные станут поддерживаемым параметром, а не неподдерживаемым. DNS на стороне прокси идет бесплатно: Chromium всегда передает разрешение имен HTTP-прокси. Каждый план QuantumProxies обслуживает HTTP и SOCKS5 с одного и того же шлюза на одних и тех же учетных данных, так что переключение — это изменение схемы, а не новый заказ.
# Playwright, Patchright and Camoufox all take the same proxy object.
# Swap the import line; the proxy config does not change.
from playwright.sync_api import sync_playwright # or: from patchright.sync_api import ...
PROXY = {
"server": "http://gate.quantumproxies.io:PORT", # HTTP endpoint, not socks5://
"username": "USER",
"password": "PASS",
}
with sync_playwright() as p:
browser = p.chromium.launch(proxy=PROXY, headless=False)
page = browser.new_page()
page.goto("https://httpbin.org/ip")
print(page.inner_text("pre"))
browser.close()
# Camoufox: same dict, plus geoip so timezone/locale/WebRTC follow the exit IP.
# pip install -U "camoufox[geoip]"
# with Camoufox(geoip=True, proxy=PROXY) as browser: ...
Обходной путь 2: добавление IP в белый список
Самый чистый ответ — удалить шаг аутентификации. С добавлением IP в белый список вы регистрируете публичный IP машины, на которой работает браузер, и шлюз авторизует его по исходному адресу — без имени пользователя, без пароля, без всплывающего окна, ничего, на что фреймворк должен ответить. Все проблемы на этой странице исчезают сразу, включая SOCKS5, потому что нет учетных данных, которые нужно передавать. Это подходит для фиксированного сервера для скрапинга или контейнера за статическим выходным IP, и неправильно для ноутбуков в меняющихся сетях. Добавление в белый список идет наряду с user:pass на каждом плане QuantumProxies, так что производство может быть добавлено в белый список, в то время как разработка сохраняет учетные данные.
Добавьте свой IP в белый список на 90M+ резидентском пуле
Обходной путь 3: сгенерированное расширение для аутентификации в Chrome или обработчик CDP
Если вам необходимо сохранить учетные данные на фреймворке Chromium, который их не принимает, что-то внутри браузера должно ответить на запрос. Первый вариант — это расширение, которое устанавливает прокси и отвечает на onAuthRequired — именно то, что SeleniumBase строит за своим флагом --proxy. В рамках Manifest V3 два разрешения, которые делают это возможным, это webRequest и webRequestAuthProvider; пропустите второе, и слушатель никогда не сработает.
// manifest.json (MV3) — webRequestAuthProvider is the one people forget
{
"name": "proxy-auth",
"version": "1.0",
"manifest_version": 3,
"permissions": ["proxy", "webRequest", "webRequestAuthProvider"],
"host_permissions": ["<all_urls>"],
"background": { "service_worker": "background.js" }
}
// background.js
const HOST = "gate.quantumproxies.io";
const PORT = 8080; // your gateway port
const USER = "USER", PASS = "PASS";
chrome.proxy.settings.set({
value: {
mode: "fixed_servers",
rules: { singleProxy: { scheme: "http", host: HOST, port: PORT } },
},
scope: "regular",
});
chrome.webRequest.onAuthRequired.addListener(
() => ({ authCredentials: { username: USER, password: PASS } }),
{ urls: ["<all_urls>"] },
["blocking"],
);
Два предупреждения. Расширения не загружаются в каждой безголовой конфигурации, поэтому это часто вынуждает использовать полноэкранный режим плюс виртуальный дисплей на серверах. И поверхность расширения меняется: пользователи SeleniumBase потеряли аутентификацию прокси из-за изменения расширения Chrome 137, так что закрепите версии браузера и фреймворка.
Второй вариант пропускает расширение и отвечает на запрос через CDP. Это принятое решение в обсуждении nodriver, и порядок действий всех сбивает с толку: зарегистрируйте обработчики перед включением домена Fetch, и никогда не ожидайте внутри обработчика, иначе вы заблокируете цикл событий.
import asyncio, nodriver as uc
PROXY = "http://gate.quantumproxies.io:PORT" # no credentials in the flag
USER, PASS = "USER", "PASS"
async def main():
browser = await uc.start(browser_args=[f"--proxy-server={PROXY}"])
tab = await browser.get("draft:,")
async def on_auth(event: uc.cdp.fetch.AuthRequired):
# fire-and-forget: awaiting here blocks every other request
asyncio.create_task(tab.send(uc.cdp.fetch.continue_with_auth(
request_id=event.request_id,
auth_challenge_response=uc.cdp.fetch.AuthChallengeResponse(
response="ProvideCredentials", username=USER, password=PASS),
)))
async def on_paused(event: uc.cdp.fetch.RequestPaused):
asyncio.create_task(tab.send(uc.cdp.fetch.continue_request(request_id=event.request_id)))
tab.add_handler(uc.cdp.fetch.RequestPaused, on_paused)
tab.add_handler(uc.cdp.fetch.AuthRequired, on_auth)
# enable AFTER the handlers are registered, or no event ever arrives
await tab.send(uc.cdp.fetch.enable(handle_auth_requests=True))
page = await browser.get("https://httpbin.org/ip")
print(await page.get_content())
uc.loop().run_until_complete(main())

Обходной путь 4: локальное реле
Реле — это небольшой прокси, который вы запускаете на localhost, который общается с вышестоящим шлюзом с учетными данными и предлагает вашему фреймворку неаутентифицированный слушатель. Браузер подключается к 127.0.0.1, не видит запроса аутентификации, и проблема с учетными данными перемещается в процесс, который с ней справляется без проблем. Это единственный способ использовать SOCKS5 с учетными данными из Chromium, и то, что пользователи Camoufox сообщают, что делают. Открытые реле на GitHub принимают учетные данные вышестоящего прокси как переменные окружения. Держите слушатель привязанным к loopback — открытый прокси без аутентификации на публичном интерфейсе — это бесплатная полоса пропускания для кого-то другого. Сборка против установки освещена в инструменты реле для аутентификации SOCKS5.
# SeleniumBase UC Mode: one flag, extension generated for you
pytest test_proxy.py --uc --proxy=USER:PASS@gate.quantumproxies.io:PORT
# Relay route: credentials upstream, no auth on the local listener
SOCKS5_SERVER=gate.quantumproxies.io:PORT \
SOCKS5_USER=USER SOCKS5_PASSWORD=PASS \
./socks-relay.py 127.0.0.1:1080
# now every framework can use it, credentials and limitations gone
# playwright: proxy={"server": "socks5://127.0.0.1:1080"}
# nodriver: browser_args=["--proxy-server=socks5://127.0.0.1:1080"]
Какой маршрут выбрать
- Фиксированный сервер или статический выходной IP: добавьте его в белый список и перестаньте читать.
- Динамические машины, цели HTTP: HTTP-эндпоинт с
user:pass. - Нет аутентификации API (nodriver, zendriver, обычный Selenium): обработчик CDP, если вы владеете кодом, расширение, если нет.
- SOCKS5 обязателен, или инструмент, который не говорит ни на чем другом: локальное реле.
- Обход был регрессирован в момент, когда вы добавили прокси: подозревайте репутацию выходного IP, а не фреймворк — сначала проверьте его с помощью бесплатного проверщика качества IP.
Часто задаваемые вопросы
Почему Chrome не поддерживает SOCKS5 с именем пользователя и паролем?
Потому что сеть Chromium никогда не реализовывала метод аутентификации с именем пользователя и паролем SOCKS5. Запрос находится в трекере Chromium уже много лет как проблема 40323993, и команда Chrome подтвердила, что он не поддерживается в связанных темах расширений. Это не флаг, который вы пропустили: никакое сочетание аргументов командной строки не передает учетные данные SOCKS5 в Chromium, и каждый фреймворк на основе Chromium наследует это.
Какой антидетект-фреймворк имеет лучшую поддержку прокси?
Для аутентифицированных HTTP-прокси семейство Playwright — Playwright, Patchright, browser-use и Camoufox — наименее болезненно, потому что учетные данные являются параметром первого класса. Camoufox идет дальше, выравнивая часовой пояс, локаль и WebRTC с выходным IP через свою опцию GeoIP. Инструменты с приоритетом CDP, nodriver и zendriver, сильны в стелсе, но ожидают, что вы сами решите проблему аутентификации.
Ломает ли аутентифицированный прокси обход Cloudflare в UC Mode?
Это может, и отчеты обычно обвиняют две отдельные вещи как одну. Сгенерированное расширение для аутентификации изменяет поверхность браузера, а прокси изменяет выходной IP — и IP с плохой репутацией вызывает жесткие проверки, которые ни один фреймворк не может пройти. Проверьте ту же цель дважды, один раз с прокси и один раз с IP в белом списке, прежде чем винить фреймворк.
Является ли добавление IP в белый список безопаснее, чем user:pass?
Операционно это проще и устраняет целый класс отказов, поскольку ничего не должно отвечать на запрос, и учетные данные никогда не находятся в флаге запуска или списке процессов. Компромисс — это гибкость: он связывает пул с фиксированным исходным адресом, так что ноутбуки в меняющихся сетях и автоскалируемые рабочие узлы все еще нуждаются в учетных данных. Большинство команд добавляют в белый список производство и сохраняют user:pass для разработки.
Карта достаточно коротка, чтобы запомнить. Playwright и его форки принимают учетные данные; nodriver и zendriver заставляют вас создавать ответ; SeleniumBase строит его для вас и иногда ломается; SOCKS5 с учетными данными — это тупик в Chromium. Остальное — это выбор между HTTP-эндпоинтом, IP в белом списке, расширением и реле — в этом порядке, потому что это также от наименьшего к наибольшему обслуживанию.
Получите HTTP, SOCKS5 и добавление IP в белый список в одном плане