# 407 Proxy Authentication Required: co to oznacza i jak to naprawić

> HTTP 407 Proxy Authentication Required oznacza, że proxy odrzuciło lub nigdy nie otrzymało Twoich danych logowania. Dokładne komunikaty o błędach w Python, curl, Node oraz sposoby naprawy.

- URL: https://crawlrelay.com/pl/docs/errors/407-proxy-authentication-required/
- Ostatnia aktualizacja: 2026-10-13
- Publisher: CrawlRelay (https://crawlrelay.com)

Kod statusu HTTP (4xx, błąd klienta): dokładny komunikat w każdym narzędziu, możliwe przyczyny w kolejności oraz działające rozwiązanie.

**Szybka odpowiedź — Co oznacza 407 Proxy Authentication Required w kontekście proxy?**

**407 Proxy Authentication Required** oznacza, że proxy odmówiło Twojego żądania, ponieważ nie otrzymało danych uwierzytelniających lub otrzymało błędne. Docelowa strona nigdy nie została skontaktowana. Przy użyciu proxy CrawlRelay residential sprawdź trzy rzeczy: czy nazwa użytkownika to ta z Twojego panelu, czy hasło się zgadza oraz czy wszystkie znaki specjalne w którymkolwiek z nich są zakodowane URL. Powtórne wysłanie tego samego żądania nigdy nie rozwiązuje 407.

## 407 Proxy Authentication Required w skrócie

| Atrybut | Wartość |
| --- | --- |
| Błąd | 407 Proxy Authentication Required |
| Typ | Kod statusu HTTP (4xx, błąd klienta) |
| Wysłane przez | Brama proxy, nigdy docelowa strona internetowa |
| Zdefiniowano w | RFC 9110, section 15.5.8 (headers: Proxy-Authenticate 11.7.1, Proxy-Authorization 11.7.2) |
| Spróbować ponownie? | Nie. Te same dane logowania ponownie się nie sprawdzą; najpierw je popraw |
| Najpierw sprawdź | Uruchom poniższy test curl z samą nazwą użytkownika i bez parametrów celowania |

## Co oznacza 407 Proxy Authentication Required?

Kod 407 pochodzi od proxy, nie od strony, do której chcesz dotrzeć. RFC 9110 opisuje go jako wersję 401 dla proxy: klient musi się uwierzytelnić u proxy zanim cokolwiek się zdarzy. Proxy wysyła nagłówek `Proxy-Authenticate`, który określa akceptowany schemat, zazwyczaj `Basic`. Twój klient odpowiada nagłówkiem `Proxy-Authorization` z danymi `username:password` zakodowanymi w Base64.

Dla celu HTTPS 407 pojawia się w odpowiedzi na żądanie `CONNECT` otwierające tunel. Dlatego wiele bibliotek zgłasza go jako błąd tunelu lub połączenia zamiast statusu HTTP: sesja TLS ze stroną nigdy nie została nawiązana.

## Jak wygląda a 407 w Python, curl, Node.js i przeglądarkach?

Ten sam błąd wyświetla się inaczej w każdym narzędziu. Oto komunikaty, które warto wyszukać w logach:

- **Python requests:** `ProxyError('Unable to connect to proxy', OSError('Tunnel connection failed: 407 Proxy Authentication Required'))`
- **curl:** `curl: (56) CONNECT tunnel failed, response 407`
- **Scrapy:** `TunnelError: Could not open CONNECT tunnel with proxy ... [{'status': 407, 'reason': b'Proxy Authentication Required'}]`
- **Chrome, Playwright, Puppeteer:** `net::ERR_TUNNEL_CONNECTION_FAILED` lub wyskakujące okno logowania w widocznej przeglądarce
- **Klienci Node.js dla celu http://:** `Request failed with status code 407`

## Co powoduje a 407?

Najczęściej na początku:

- **Błędna nazwa użytkownika lub hasło.** Literówka, stare hasło po resecie lub dane innego podużytkownika.
- **Niezakodowane znaki specjalne.** Hasło zawierające `@`, `:`, `/` lub `#` psuje URL `user:pass@host`. Zakoduj procentowo: `@` staje się `%40`, `:` staje się `%3A`.
- **Uszkodzony sufiks celowania.** Bramki, które wyciągają celowanie z nazwy użytkownika, widzą jeden długi ciąg. Literówka w kluczu lub kodzie kraju zamienia nazwę w nieznaną proxy.
- **Dane uwierzytelniające nigdy nie opuszczają Twojego kodu.** Chrome ignoruje login i hasło wpisane w `--proxy-server`. Puppeteer potrzebuje `page.authenticate()`, a Selenium lokalnego przekierowania.
- **Pusty stan konta.** Sprawdź, czy na koncie jest jeszcze ruch zanim zaczniesz debugować kod.

## Jak krok po kroku zdiagnozować a 407?

1. Przetestuj dane logowania curl bez celowania (komenda poniżej). Linia `HTTP/1.1 407` w szczegółowym wyjściu potwierdza problem z danymi.
2. Dodawaj parametry celowania pojedynczo, testując za każdym razem.
3. Zaloguj URL proxy wygenerowany przez Twój program, maskując hasło, i porównaj go znak po znaku z panelem.
4. Jeśli curl działa a Twój program nie, biblioteka nie wysyła danych. Zobacz naprawę dla Twojego narzędzia poniżej.

*Przetestuj nie działający URL za pomocą curl (port HTTP, tryb verbose)*

```bash
# Use the URL that fails; with https://api.ipify.org instead, you test the gateway alone.
# "HTTP/1.1 200 Connection established" first, then the site's own status: the site answered.
curl -v -x http://USERNAME:PASSWORD@gw.crawlrelay.com:7777 https://TARGET_URL

# Same test through the SOCKS5 port, with DNS resolved at the exit
curl -v --socks5-hostname gw.crawlrelay.com:7778 --proxy-user USERNAME:PASSWORD https://TARGET_URL
```

## Jak naprawić a 407?

- **Zakoduj dane** za pomocą `urllib.parse.quote(value, safe='')` w Python lub `encodeURIComponent()` w JavaScript przed zbudowaniem URL.
- **Przeglądarki:** przekaż `username` i `password` w opcji `proxy` Playwrighta, wywołaj `page.authenticate()` w Puppeteer i użyj lokalnego forwardera dla Selenium. Zobacz [Playwright](https://crawlrelay.com/pl/docs/playwright/) i [Puppeteer](https://crawlrelay.com/pl/docs/puppeteer/) poradniki.
- **Zmienne środowiskowe:** jeśli ustawiasz `HTTPS_PROXY`, całe jego wartości ujęcie w cudzysłów w shellu żeby `@` i `$` się zachowały.
- **Zmień hasło** w panelu jeśli podejrzewasz wyciek, a następnie zaktualizuj każdy scraper z niego korzystający.

*Python: zbuduj adres proxy z zakodowanymi poświadczeniami*

```python
from urllib.parse import quote

import requests

user = "USERNAME-country-us"
password = "p@ss:word/1"  # example containing special characters

# safe="" also encodes "/", "@" and ":" inside the credentials
proxy = "http://{}:{}@gw.crawlrelay.com:7777".format(
    quote(user, safe=""), quote(password, safe="")
)
proxies = {"http": proxy, "https": proxy}  # http:// for both keys

r = requests.get("https://api.ipify.org", proxies=proxies, timeout=(10, 30))
print(r.status_code, r.text)
```

*Playwright (Python): poświadczenia jako oddzielne pola*

```python
from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(proxy={
        "server": "http://gw.crawlrelay.com:7777",
        "username": "USERNAME-country-us",
        "password": "PASSWORD",
    })
    page = browser.new_page()
    response = page.goto("https://api.ipify.org")
    print(response.status, page.inner_text("body"))
    browser.close()
```

## Czy warto ponawiać próbę po a 407?

Nie powtarzaj automatycznie 407. Powtórka z tymi samymi danymi da ten sam wynik, a częste powtórki zaśmiecają logi. Traktuj 407 jako błąd konfiguracji: zatrzymaj zadanie, popraw dane i uruchom ponownie. Jeśli 407 pojawi się nagle w działającym od dawna zadaniu, prawdopodobnie zmieniono hasło lub wyłączono podużytkownika.

## Jak 407 Proxy Authentication Required odnosi się do CrawlRelay?

Bramka CrawlRelay odczytuje nazwę użytkownika i hasło przy każdym nowym połączeniu. Ustawienia celowania i sesji są w nazwie użytkownika, więc prawidłowe hasło może zawieść przy uszkodzonym sufiksie. Zbuduj nazwę użytkownika w jednej funkcji pomocniczej i zaloguj ją raz przy starcie. Strona [szybkiego startu](https://crawlrelay.com/pl/docs/) pokazuje dokładny format.

Gateway: `gw.crawlrelay.com`, port 7777 (HTTP, HTTPS przez CONNECT) i port 7778 (SOCKS5). Format nazwy użytkownika: `USERNAME-country-{cc}-state-{state}-city-{city}-zip-{zip}-asn-{asn}-session-{id}-ttl-{minutes}`. Powiązane: [401 vs 407](https://crawlrelay.com/pl/docs/errors/401-unauthorized/) · [ERR_TUNNEL_CONNECTION_FAILED](https://crawlrelay.com/pl/docs/errors/err-tunnel-connection-failed/) · [Cannot connect to proxy](https://crawlrelay.com/pl/docs/errors/cannot-connect-to-proxy/).

## 407 Proxy Authentication Required: pytania, które zadają deweloperzy

### Czy 407 wysyła strona, którą scrapuję?

Nie. 407 jest zawsze zwrócony przez proxy między Tobą a stroną. Żądanie nigdy nie dociera do strony, więc nie może liczyć ani blokować ruchu. Gdyby strona wymagała logowania, zwróciłaby 401. Popraw dane proxy, a 407 zniknie.

### Dlaczego mój kod dostaje 407 gdy curl działa na tym samym proxy?

Twoja biblioteka nie wysyła danych lub robi to inaczej. Zwykle: dane wpisane do flagi przeglądarki, która je ignoruje, zmienna środowiskowa, która straciła znaki specjalne lub hasło niezakodowane URL. Wydrukuj URL proxy z Twojego kodu z zamaskowanym hasłem i porównaj go z komendą curl.

### Czy 407 zużywa ruch z mojego planu?

Odpowiedź 407 ma kilkaset bajtów i żądanie nigdy nie dociera do celu, więc strona się nie pobiera. Koszt jest gdzie indziej: scraper utkwił w pętli powtarzania 407, traci czas i zalewa logi. Traktuj 407 jako twardy stop w obsłudze błędów.

## Inne błędy proxy w tym odniesieniu

- [401 Unauthorized vs 407](https://crawlrelay.com/pl/docs/errors/401-unauthorized/)
- [403 Forbidden](https://crawlrelay.com/pl/docs/errors/403-forbidden/)
- [407 Proxy Authentication Required](https://crawlrelay.com/pl/docs/errors/407-proxy-authentication-required/)
- [429 Too Many Requests](https://crawlrelay.com/pl/docs/errors/429-too-many-requests/)
- [502 Bad Gateway](https://crawlrelay.com/pl/docs/errors/502-bad-gateway/)
- [503 Service Unavailable](https://crawlrelay.com/pl/docs/errors/503-service-unavailable/)
- [504 Gateway Timeout](https://crawlrelay.com/pl/docs/errors/504-gateway-timeout/)
- [Cannot connect to proxy (ProxyError)](https://crawlrelay.com/pl/docs/errors/cannot-connect-to-proxy/)
- [Connection reset by peer (ECONNRESET)](https://crawlrelay.com/pl/docs/errors/connection-reset/)
- [ERR_PROXY_CONNECTION_FAILED](https://crawlrelay.com/pl/docs/errors/err-proxy-connection-failed/)
- [ERR_TUNNEL_CONNECTION_FAILED](https://crawlrelay.com/pl/docs/errors/err-tunnel-connection-failed/)
- [Read timed out (ReadTimeout)](https://crawlrelay.com/pl/docs/errors/read-timeout/)
- [SOCKS5 proxy errors](https://crawlrelay.com/pl/docs/errors/socks5-proxy-errors/)
- [SSL: CERTIFICATE_VERIFY_FAILED](https://crawlrelay.com/pl/docs/errors/ssl-certificate-verify-failed/)
- [SSL: WRONG_VERSION_NUMBER](https://crawlrelay.com/pl/docs/errors/ssl-wrong-version-number/)

**Proxy rezydencjalne z dokumentacją opisującą przypadki błędów** CrawlRelay proxy rezydencjalne od 0,50 USD/GB, ruch, który nigdy nie wygasa. [Zobacz ceny](https://crawlrelay.com/pl/pricing/) · [Szybki start](https://crawlrelay.com/pl/docs/)

---

CrawlRelay: CrawlRelay to serwis proxy rezydencjalne i mobilne proxy 4G/5G z rotacją, stworzony dla programistów i potoków danych AI: ruch bez wygasania w modelu pay-as-you-go od 0,50 USD/GB, płatny w kryptowalutach, bez konieczności przesyłania dokumentów. Bez KYC — brak dowodu, selfie i dokumentów. Płać w kryptowalutach.
