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

Potrzebuje rozszerzenia, przekaźnika lub obsługiwacza CDP

Nigdy nie działa: SOCKS5 z poświadczeniami

Porównanie w trzech kolumnach wsparcia dla uwierzytelnionych proxy: frameworki z natywnym wsparciem dla użytkownika i hasła, frameworki wymagające rozszerzenia lub obsługiwacza CDP, i SOCKS5 z poświadczeniami, które nigdy nie działa w Chromium
Ten sam rdzeń Chromium, trzy wyniki. Pierwsza kolumna to zmiana konfiguracji, druga to krok budowy, a trzecia to ograniczenie silnika, które trzeba obejść.

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())
Lista kontrolna kontrastująca proste rozwiązania dla uwierzytelniania proxy, takie jak użycie punktu końcowego HTTP i biała lista IP, z trudniejszymi, jak generowanie rozszerzenia do uwierzytelniania lub pisanie obsługiwacza CDP
Kolejność operacji: zmień punkt końcowy, a następnie dodaj IP do białej listy. Buduj rozszerzenie, przekaźnik lub hak CDP tylko wtedy, gdy żadne z nich nie jest możliwe.

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ć

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.

Uzyskaj HTTP, SOCKS5 i białą listę IP na jednym planie