Naprawa błędów · 1 min czytania

HTTP 407 Wymagana autoryzacja proxy: jak to naprawić

407 to proxy — a nie strona internetowa — informujące, że potrzebuje poświadczeń, których nie otrzymało. Ten przewodnik wyjaśnia dokładnie, co to wywołuje i przechodzi przez poprawki dla curl, przeglądarek, Pythona, Windows i proxy korporacyjnych.

Co właściwie oznacza 407

HTTP 407 Wymagana autoryzacja proxy pochodzi z proxy, a nie z docelowej strony. To sposób proxy na powiedzenie "Przekażę twoje żądanie, ale najpierw udowodnij, kim jesteś." To odpowiednik warstwy proxy dla 401: odpowiedź zawiera nagłówek Proxy-Authenticate opisujący schemat, którego chce (zwykle Basic), a twój klient powinien ponownie wysłać żądanie z nagłówkiem Proxy-Authorization. Jeśli dane uwierzytelniające są brakujące, źle sformatowane lub błędne, otrzymasz 407.

W przypadku uwierzytelnionych proxy, takich jak s4m — SOCKS5 na 1080, HTTP na 3128, oba używające USER:PASS — 407 prawie zawsze oznacza jedną z czterech rzeczy: nie podałeś danych uwierzytelniających, podałeś błędne, hasło zawiera znaki specjalne, które zepsuły analizę URL, lub narzędzie, którego używasz, nie odczytuje danych uwierzytelniających z miejsca, w którym je umieściłeś (klasyczny problem z Puppeteer i Scrapy). Poniższe rozwiązania są uporządkowane od najczęstszych do najmniej powszechnych. Zobacz przewodnik po autoryzacji proxy i przegląd proxy dla kontekstu.

Podaj dane uwierzytelniające poprawnie, zgodnie z narzędziem

Ten sam USER:PASS, w miejscu, w którym każde narzędzie rzeczywiście to odczytuje. Zastąp swoimi danymi uwierzytelniającymi.

bash
# curl: inline in URL, or with -U (URL-encode special chars, e.g. @ -> %40)
curl -x http://USER:PASS@proxy.s4m.online:3128 https://api.ipify.org
curl -x proxy.s4m.online:3128 -U USER:PASS https://api.ipify.org

# wget: dedicated flags
wget -e https_proxy=proxy.s4m.online:3128 \
     --proxy-user=USER --proxy-password=PASS https://example.com

# Python requests: credentials belong in the proxy URL
#   proxies = {"http": "http://USER:PASS@proxy.s4m.online:3128",
#              "https": "http://USER:PASS@proxy.s4m.online:3128"}
#   requests.get(url, proxies=proxies)

# Environment variables (many tools read these):
export HTTPS_PROXY="http://USER:PASS@proxy.s4m.online:3128"

# Special characters? URL-encode the password:
#   pa@ss  ->  pa%40ss     (Python: urllib.parse.quote(pw, safe=''))

# Verify it worked: a 200 with an IP body means auth passed.
curl -o /dev/null -s -w "%{http_code}\n" \
     -x http://USER:PASS@proxy.s4m.online:3128 https://api.ipify.org

Napraw 407, krok po kroku

Pracuj w dół tej listy; większość 407ów jest rozwiązywana przez krok 3.

Potwierdź, że proxy wymaga autoryzacji

Proxysy s4m wymagają USER:PASS. Kod 407 oznacza, że proxy nie otrzymało ważnych poświadczeń — więc pytanie brzmi tylko, gdzie twoje poświadczenia się gubią, a nie czy autoryzacja jest potrzebna.

Sprawdź, czy dane uwierzytelniające są dokładnie poprawne

Ponownie skopiuj USER i PASS z panelu. Spacja na końcu, zły znak lub wygasłe poświadczenie powodują błąd 407. Najpierw przetestuj je w pojedynczym poleceniu curl -x.

Koduj URL specjalne znaki

Jeśli hasło zawiera @, :, /, # lub podobne, zakoduj je ( @ staje się %40). Niezakodowane łamią URL proxy, więc klient wysyła błędne lub częściowe dane uwierzytelniające.

Umieść dane uwierzytelniające tam, gdzie narzędzie je odczytuje

Niektóre narzędzia ignorują dane uwierzytelniające URL: Puppeteer potrzebuje page.authenticate(), Scrapy potrzebuje nagłówka Proxy-Authorization. Dopasuj metodę do narzędzia, a nie tylko do proxy.

Przeglądarki, Windows i proxy korporacyjne

In a browser, a 407 usually surfaces as a login popup from the proxy; entering the right username and password clears it. When automating a browser, that popup is the whole problem — headless Chromium cannot answer it, which is why Puppeteer uses page.authenticate(), Playwright takes credentials in its proxy object, and Selenium needs a small extension. On Windows, check the system proxy under Settings and any per-app proxy, since a stale saved credential there can trigger 407s in tools that inherit the system proxy.

Proxy korporacyjne dodają komplikację: niektóre używają NTLM lub Kerberos zamiast Basic auth, więc zwykłe USER:PASS nie wystarczy i potrzebujesz opcji NTLM w narzędziu. s4m sam w sobie używa standardowego Basic USER:PASS, więc nie będziesz potrzebować NTLM z naszymi punktami końcowymi. Jeśli dane uwierzytelniające są na pewno poprawne, a nadal widzisz 407, upewnij się, że trafiasz na właściwy port (1080 SOCKS5, 3128 HTTP) i zweryfikuj punkt końcowy za pomocą narzędzi. Powiązany błąd Chrome jest omówiony w przewodniku ERR_PROXY_CONNECTION_FAILED.

FAQ

Pytania, odpowiedzi

Czy błąd 407 to wina strony internetowej, czy proxy?

Proxy. HTTP 407 Wymagana autoryzacja proxy jest zwracana przez proxy, a nie przez docelową stronę, informując cię, że potrzebuje ważnych poświadczeń, zanim przekaże twoje żądanie. Strona internetowa nigdy nie jest osiągana, dopóki się nie uwierzytelnisz.

Dlaczego dostaję 407 nawet z poprawnym hasłem?

Najczęściej hasło zawiera znaki specjalne, które psują URL proxy, więc klient wysyła niewłaściwą wartość. Zakoduj je w URL (na przykład @ staje się %40). Potwierdź również, że narzędzie odczytuje dane uwierzytelniające z miejsca, w którym je umieściłeś.

Jak naprawić błąd 407 w Puppeteer, Playwright lub Selenium?

Przeglądarki ignorują dane uwierzytelniające w fladze proxy. Użyj page.authenticate() w Puppeteer, pola nazwy użytkownika/hasła obiektu proxy w Playwright oraz małego rozszerzenia danych uwierzytelniających w Selenium.

Czy s4m używa uwierzytelniania proxy NTLM?

Nie. s4m używa standardowej autoryzacji Basic USER:PASS na portach 1080 (SOCKS5) i 3128 (HTTP). NTLM dotyczy tylko niektórych korporacyjnych proxy, nie naszych punktów końcowych.

Proxy z prostą autoryzacją

Proxy s4m używają prostego USER:PASS na proxy.s4m.online — bez NTLM, bez niespodzianek. Mierzone datacenter SOCKS5 i HTTP, z opcją dedykowanego IP dla dozwolonego dostępu.

Ludzie znaleźli tę stronę, szukając

Rzeczywiste frazy wyszukiwania, na które ta strona odpowiada — powiązane otwierają stronę, która je szczegółowo omawia.