Uwierzytelnione proxy w przeglądarkach anty-detekcyjnych: mapa wsparcia na 2026 rok
Chromium nigdy nie akceptował poświadczeń na SOCKS5, a launcher, który przekazuje tylko --proxy-server, nie ma nikogo, kto odpowiedziałby na monit o uwierzytelnienie. Oto, które frameworki przyjmują user:pass, które potrzebują pomocnika, a które są ślepą uliczką.
Uwierzytelnione proxy w przeglądarce anty-detekcyjnej zawodzi na jeden z trzech sposobów, a objawy nigdy się nie zmieniają: okienko poświadczeń Chrome, którego nic nie może zamknąć, 407 przy każdym żądaniu lub strona, która ładuje się idealnie z twojego własnego IP. Winą rzadko jest proxy. Chromium nigdy nie akceptował nazwy użytkownika i hasła na SOCKS5, a launcher, który przekazuje tylko --proxy-server do binarnego, nie ma nikogo, kto odpowiedziałby na wyzwanie uwierzytelniające przeglądarki. Oto mapa na 2026 rok: które frameworki przyjmują user:pass natywnie, które potrzebują pomocnika, a gdzie droga się kończy.
Jedna przyczyna, trzy objawy
Stos proxy Chromium ma miejsce na adres serwera SOCKS5 i brak miejsca na poświadczenia. Żądanie to od lat znajduje się na trackerze Chromium jako problem 40323993, rozszerzenie SwitchyOmega zarejestrowało potwierdzenie zespołu Chrome w swoim własnym problemie #1455, a użytkownicy ChromeDriver ścigający to samo są kierowani do crbug 40829748. Firefox jest wyjątkiem — uwierzytelnia SOCKS5 natywnie — dlatego Camoufox znajduje się w innej kolumnie niż wszystko inne tutaj. Jeśli podział protokołów jest dla ciebie nowością, zacznij od SOCKS5 vs HTTP proxies.
HTTP i HTTPS proxies to inna historia: poświadczenia działają, ale nigdy z linii poleceń. Chrome odpowiada 407, podnosząc wyzwanie uwierzytelniające, i coś musi odpowiedzieć — w normalnej przeglądarce to okienko, które widzisz. W automatyzacji musi to być załadowane rozszerzenie, obsługiwacz CDP subskrybujący Fetch.authRequired, lub sam framework. Wszystko, co tylko przekazuje flagę uruchamiania, pozostawia wyzwanie bez odpowiedzi, i to jest zawieszona strona, którą ludzie ciągle robią zrzuty ekranu. Połowa dotycząca formatu poświadczeń jest omówiona w naprawa 407 proxy authentication required.
Wsparcie dla uwierzytelnionych proxy w przeglądarkach anty-detekcyjnych: mapa na 2026 rok
Trzy kategorie: poświadczenia akceptowane przez API, poświadczenia akceptowane tylko przez pomocnika, którego zbudujesz, i ograniczenie silnika, którego żadna konfiguracja nie przesunie.
Działa natywnie z user:pass
- Playwright —
proxy={server, username, password}przy uruchomieniu lub na kontekst, udokumentowane tylko dla HTTP(S); druga połowa jest w Playwright SOCKS5 proxy authentication. - Patchright — zamiennik Playwright, identyczny obiekt proxy, i celowo utrzymuje włączone rozszerzenia, usuwając
--disable-extensions. Zobacz Patchright proxy setup. - browser-use —
ProxySettings(server=..., username=..., password=...), ale przypnij wersję: problem #2445 pokazuje konfigurację, która działała na 0.1.45 i cicho przestała na 0.5.4. Zobacz browser-use proxy configuration. - Camoufox — silnik Firefox, słownik proxy Playwright, i jedyny, który również wyprowadza strefę czasową, lokalizację, współrzędne i fałszywy adres WebRTC z IP wyjściowego przez
geoip=True. Zobacz Camoufox proxy and GeoIP. - Puppeteer — uruchom
--proxy-serverbez poświadczeń, a następnie wywołajpage.authenticate({username, password})przed nawigacją.
Potrzebuje rozszerzenia, przekaźnika lub obsługiwacza CDP
- nodriver — dyskusja #1798 jest najlepszym wynikiem od marca 2024: Chrome nie przyjmuje poświadczeń przez argumenty przeglądarki, a zaakceptowana odpowiedź łączy obsługiwacz CDP
Fetch. Przewodnik w nodriver proxy authentication. - zendriver — fork dziedziczy lukę; problem #208 prosi o uwierzytelnione proxy, a problem #10 ma użytkownika przełączającego się na rozszerzenie proxy zamiast tego. Zobacz zendriver proxy with authentication.
- SeleniumBase UC Mode —
--proxy=USER:PASS@host:portdziała na Chromium, ale tylko dlatego, że generuje dla ciebie rozszerzenie Chrome; zmiany w rozszerzeniach Chrome 137 dokładnie to zepsuły, a problemy #3046 i #3918 śledzą proxy uwierzytelniające walczące z obejściem. Lista kontrolna w SeleniumBase UC Mode proxy not working. - Zwykłe Selenium z Chrome — brak natywnego mechanizmu; odpowiedzią ekosystemu jest to samo wygenerowane rozszerzenie, które robią wszystkie pakiety pomocnicze na PyPI.
Nigdy nie działa: SOCKS5 z poświadczeniami
- Każdy framework Chromium powyżej — nodriver, zendriver, Patchright, SeleniumBase, Puppeteer i Chromium Playwright dziedziczą ograniczenie silnika; Playwright przynajmniej rzuca
Browser does not support socks5 proxy authentication. - Playwright issue #10567 — otwarty od listopada 2021 i nadal oznaczony jako zbierający opinie. Nie planuj, że to się pojawi.
- Camoufox — uwierzytelnianie HTTP działa na jego silniku Firefox, ale użytkownicy zgłaszają, że uzyskują działające poświadczenia SOCKS5 tylko przez umieszczenie lokalnego proxy z przodu, więc traktuj tę ścieżkę jako niejasną, a nie wspieraną.
- Szczere rozwiązanie — użyj punktu końcowego HTTP lub dodaj swoje IP do białej listy i całkowicie zrezygnuj z poświadczeń.

Obejście 1: użyj punktu końcowego HTTP dostawcy
To rozwiązuje większość wątków powiązanych powyżej i nic nie kosztuje. Jeśli twój dostawca udostępnia tę samą pulę przez HTTP i SOCKS5, skieruj przeglądarkę na bramę HTTP, a poświadczenia stają się obsługiwanym parametrem zamiast nieobsługiwanego. DNS po stronie proxy jest darmowy: Chromium zawsze przekazuje rozwiązywanie nazw do proxy HTTP. Każdy plan QuantumProxies obsługuje HTTP i SOCKS5 z tej samej bramy na te same poświadczenia, więc przełączenie to zmiana schematu, a nie nowe zamówienie.
# 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: ...
Obejście 2: biała lista IP
Najczystsza odpowiedź to usunięcie kroku uwierzytelniania. Dzięki białej liście IP rejestrujesz publiczne IP maszyny uruchamiającej przeglądarkę, a brama autoryzuje je na podstawie adresu źródłowego — bez nazwy użytkownika, bez hasła, bez okienka, nic do odpowiedzi dla frameworka. Każdy problem na tej stronie znika od razu, w tym SOCKS5, ponieważ nie ma już poświadczeń do przekazania. Jest to odpowiednie dla stałego serwera scrapingowego lub kontenera za statycznym adresem wyjściowym, i niewłaściwe dla laptopów w zmieniających się sieciach. Biała lista działa obok user:pass na każdym planie QuantumProxies, więc produkcja może być na białej liście, podczas gdy rozwój utrzymuje poświadczenia.
Dodaj swoje IP do białej listy na puli rezydencyjnej 90M+
Obejście 3: wygenerowane rozszerzenie Chrome do uwierzytelniania lub obsługiwacz CDP
Jeśli musisz zachować poświadczenia na frameworku Chromium, który ich nie przyjmuje, coś wewnątrz przeglądarki musi odpowiedzieć na wyzwanie. Opcja pierwsza to rozszerzenie, które ustawia proxy i odpowiada na onAuthRequired — dokładnie to, co SeleniumBase buduje za swoim flagą --proxy. W ramach Manifest V3 dwa uprawnienia, które to umożliwiają, to webRequest i webRequestAuthProvider; pominięcie drugiego oznacza, że słuchacz nigdy się nie uruchamia.
// 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"],
);
Dwa zastrzeżenia. Rozszerzenia nie ładują się w każdej konfiguracji bezgłowej, więc to często wymusza tryb z głową plus wirtualny wyświetlacz na serwerach. I powierzchnia rozszerzenia się zmienia: użytkownicy SeleniumBase stracili uwierzytelnianie proxy przez zmianę rozszerzenia Chrome 137, więc przypnij wersje przeglądarki i frameworka.
Opcja druga pomija rozszerzenie i odpowiada na wyzwanie przez CDP. To jest zaakceptowane rozwiązanie w dyskusji nodriver, a kolejność myli wszystkich: zarejestruj obsługiwacze przed włączeniem domeny Fetch, i nigdy nie oczekuj wewnątrz obsługiwacza, bo zablokujesz pętlę zdarzeń.
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())

Obejście 4: lokalny przekaźnik
Przekaźnik to małe proxy, które uruchamiasz na localhost, które komunikuje się z bramą upstream z poświadczeniami i oferuje twojemu frameworkowi nieautoryzowanego słuchacza. Przeglądarka łączy się z 127.0.0.1, nie widzi wyzwania uwierzytelniającego, a problem z poświadczeniami przenosi się do procesu, który nie ma z tym problemu. To jedyny sposób na użycie SOCKS5 z poświadczeniami z Chromium, i to, co zgłaszają użytkownicy Camoufox. Otwórz źródłowe przekaźniki na GitHub przyjmują poświadczenia upstream jako zmienne środowiskowe. Trzymaj słuchacza związany z pętlą zwrotną — otwarte proxy bez uwierzytelnienia na publicznym interfejsie to darmowa przepustowość dla kogoś innego. Budowanie kontra instalacja jest omówione w narzędzia przekaźnika proxy dla SOCKS5 auth.
# 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"]
Którą trasę wybrać
- Stały serwer lub statyczny adres wyjściowy: dodaj do białej listy i przestań czytać.
- Dynamiczne maszyny, cele HTTP: punkt końcowy HTTP z
user:pass. - Brak API uwierzytelniania (nodriver, zendriver, zwykłe Selenium): obsługiwacz CDP jeśli posiadasz kod, rozszerzenie jeśli nie.
- SOCKS5 obowiązkowy, lub narzędzie, które nie mówi nic innego: lokalny przekaźnik.
- Obejście przestało działać, gdy dodałeś proxy: podejrzewaj reputację IP wyjściowego, nie framework — sprawdź to najpierw za pomocą darmowego sprawdzania jakości IP.
Najczęściej zadawane pytania
Dlaczego Chrome nie obsługuje SOCKS5 z nazwą użytkownika i hasłem?
Ponieważ stos sieciowy Chromium nigdy nie zaimplementował metody uwierzytelniania SOCKS5 za pomocą nazwy użytkownika i hasła. Żądanie to od lat znajduje się na trackerze Chromium jako problem 40323993, a zespół Chrome potwierdził, że nie jest obsługiwane w powiązanych wątkach dotyczących rozszerzeń. To nie jest flaga, której brakuje: żadna kombinacja argumentów wiersza poleceń nie przekazuje poświadczeń SOCKS5 do Chromium, a każdy framework oparty na Chromium to dziedziczy.
Który framework anty-detekcyjny ma najlepsze wsparcie dla proxy?
Dla uwierzytelnionych proxy HTTP, rodzina Playwright — Playwright, Patchright, browser-use i Camoufox — jest najmniej bolesna, ponieważ poświadczenia są parametrem pierwszej klasy. Camoufox idzie najdalej, dostosowując strefę czasową, lokalizację i WebRTC do IP wyjściowego poprzez opcję GeoIP. Narzędzia CDP-first, nodriver i zendriver, są silne w stealth, ale oczekują, że sam rozwiążesz uwierzytelnianie.
Czy proxy uwierzytelniające psuje obejście Cloudflare w trybie UC?
Może, a raporty zazwyczaj obwiniają dwie oddzielne rzeczy jako jedną. Wygenerowane rozszerzenie uwierzytelniające zmienia powierzchnię przeglądarki, a proxy zmienia IP wyjściowe — a IP o złej reputacji wywołuje trudne wyzwania, których żaden framework nie może przejść. Przetestuj ten sam cel dwa razy, raz z proxy i raz z IP na białej liście, zanim obwinisz framework.
Czy biała lista IP jest bezpieczniejsza niż user:pass?
Operacyjnie jest prostsza i usuwa całą klasę awarii, ponieważ nic nie musi odpowiadać na wyzwanie, a poświadczenia nigdy nie siedzą w fladze uruchamiania lub liście procesów. Kompromis to elastyczność: wiąże pulę do stałego adresu źródłowego, więc laptopy w zmieniających się sieciach i automatycznie skalujące się pracowniki nadal potrzebują poświadczeń. Większość zespołów dodaje produkcję do białej listy i utrzymuje user:pass dla rozwoju.
Mapa jest na tyle krótka, że można ją zapamiętać. Playwright i jego forki przyjmują poświadczenia; nodriver i zendriver zmuszają cię do zbudowania odpowiedzi; SeleniumBase buduje ją dla ciebie i czasami się psuje; SOCKS5 z poświadczeniami to ślepa uliczka w Chromium. Reszta to wybór między punktem końcowym HTTP, IP na białej liście, rozszerzeniem i przekaźnikiem — w tej kolejności, ponieważ to również najmniej do najwięcej konserwacji.