Bez KYC — brak dowodu, selfie i dokumentów. Płać w kryptowalutach: BTC, USDT, USDC, ETH, SOL, LTC
Język: Polski
Rozpocznij

Referencja błędu proxy · Błędy połączenia i TLS

Błąd SSL CERTIFICATE_VERIFY_FAILED przez proxy

Błąd certyfikatu TLS po stronie klienta: dokładny komunikat w każdym narzędziu, możliwe przyczyny w kolejności oraz działające rozwiązanie.

Ostatnia aktualizacja: · 4 min czytania

Szybka odpowiedź

Co oznacza SSL: CERTIFICATE_VERIFY_FAILED w kontekście proxy?

CERTIFICATE_VERIFY_FAILED oznacza, że Twój klient nie mógł zweryfikować certyfikatu TLS witryny. Przez proxy CONNECT, jak brama CrawlRelay, TLS działa end-to-end, więc proxy nie jest tego przyczyną. Sprawdź u siebie: przestarzały pakiet CA, antywirus lub zaporę biurową inspekcyjną HTTPS albo zły zegar systemowy. Nigdy nie naprawiaj tego verify=False w produkcji.

SSL: CERTIFICATE_VERIFY_FAILED w skrócie

BłądSSL: CERTIFICATE_VERIFY_FAILED
TypBłąd certyfikatu TLS po stronie klienta
Wysłane przezTwoja biblioteka TLS, gdy nie może zweryfikować certyfikatu strony
Zdefiniowano wX.509 path validation: RFC 5280; TLS 1.3: RFC 8446
Spróbować ponownie?Nie. Napraw magazyn zaufania lub sieć
Najpierw sprawdźPrzetestuj ten sam URL bez proxy na tym samym urządzeniu

Co oznacza SSL: CERTIFICATE_VERIFY_FAILED?

Podczas negocjacji TLS witryna przesyła łańcuch certyfikatów. Twój klient sprawdza go względem listy zaufanych urzędów, magazynu zaufania, oraz weryfikuje nazwy i daty. Jeśli którykolwiek test zawiedzie, połączenie jest przerywane.

Przy tunelu CONNECT proxy tylko przekazuje negocjację bez zmian, więc widoczny certyfikat jest własnością witryny. Zwykłe przyczyny to oprogramowanie inspekcyjne wstrzykujące własny certyfikat lub przestarzały magazyn zaufania na Twoim urządzeniu.

Jak wygląda CERTIFICATE_VERIFY_FAILED 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: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate
  • Node.js: UNABLE_TO_GET_ISSUER_CERT_LOCALLY lub SELF_SIGNED_CERT_IN_CHAIN
  • curl: curl: (60) SSL certificate problem: unable to get local issuer certificate
  • Przeglądarki: NET::ERR_CERT_AUTHORITY_INVALID

Co powoduje CERTIFICATE_VERIFY_FAILED?

Najczęściej na początku:

  • Przestarzały pakiet CA, na przykład stary pakiet certifi w Pythonie.
  • Inspekcja HTTPS przez antywirusa, zaporę firmową lub proxy debugujące, które prezentuje własny certyfikat.
  • Zły zegar systemowy, który sprawia, że ważne certyfikaty wyglądają na wygasłe lub jeszcze nieważne.
  • Strona z uszkodzonym łańcuchem certyfikatów, brak certyfikatu pośredniego.
  • Obraz kontenera bez pakietu certyfikatów systemowych CA.

Jak krok po kroku zdiagnozować CERTIFICATE_VERIFY_FAILED?

  1. Wykonaj to samo zapytanie bez proxy. Jeśli również się nie uda, to proxy nie jest przyczyną.
  2. Wyświetl wystawcę certyfikatu poleceniem openssl s_client lub curl -v: wystawca nazwany po Twoim antywirusie lub zaporze wskazuje na inspekcję.
  3. Sprawdź datę i godzinę systemu.
  4. Zaktualizuj pakiet CA i przetestuj ponownie.
Przetestuj nie działający URL za pomocą curl (port HTTP, tryb verbose)
# 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:[email protected]: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ć CERTIFICATE_VERIFY_FAILED?

  • Zaktualizuj certifi (pip install -U certifi) lub systemowy pakiet CA.
  • Dodaj certyfikat inspekcji swojej firmy do magazynu zaufania, jeśli w sieci jest inspekcja, albo wykonuj scraping poza tą siecią.
  • Napraw zegar synchronizacją czasu sieciowego.
  • Zainstaluj certyfikaty CA w lekkich obrazach kontenerów, np. pakiet ca-certificates.
  • Nie wyłączaj weryfikacji w kodzie, który wysyła dane uwierzytelniające lub pobiera dane, na których polegasz.

Czy warto ponawiać próbę po CERTIFICATE_VERIFY_FAILED?

Nie próbuj ponownie: ten sam magazyn zaufania zawiedzie tak samo. Napraw magazyn zaufania, zegar lub ścieżkę sieciową i uruchom ponownie.

Jak SSL: CERTIFICATE_VERIFY_FAILED odnosi się do CrawlRelay?

Port HTTP CrawlRelay tuneluje HTTPS za pomocą CONNECT, więc certyfikat weryfikowany przez klienta to ten przesłany przez stronę. Jeśli błąd występuje tylko przez bramę a nie poza nią, skontaktuj się z supportem podając nazwę hosta celu i pełny błąd, byśmy mogli sprawdzić po stronie wyjścia.

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: SSL: WRONG_VERSION_NUMBER · Connection reset · Python poradnik.

SSL: CERTIFICATE_VERIFY_FAILED: pytania, które zadają deweloperzy

Czy proxy może powodować błędy certyfikatów SSL?

Proxy inspekcyjne może, ponieważ pokazuje własny certyfikat. Proxy CONNECT nie może, bo tylko przesyła zaszyfrowane bajty i nigdy nie widzi zawartości negocjacji. Uruchom zapytanie bez proxy: jeśli błąd pozostaje, przyczyna jest u Ciebie lub w sieci.

Czy verify=False jest bezpieczne przy scrapowaniu?

Nie jako naprawa. To ukrywa inspekcję i błędy łańcuchów, a atakujący na drodze mógłby wtedy czytać lub zmieniać ruch, w tym tokeny i pliki cookie. Używaj tylko do szybkich lokalnych testów i nigdy w zadaniach działających bez nadzoru lub wysyłających dane uwierzytelniające.

Dlaczego to nie działa w Dockerze, a działa na laptopie?

Lekkie obrazy kontenerów często są bez pakietów certyfikatów CA, więc nie da się zweryfikować żadnego certyfikatu. Zainstaluj pakiet systemowy CA w obrazie lub polegaj na pakiecie certifi w Pythonie. Sprawdź też poprawność zegara w kontenerze.

Inne błędy proxy w tym odniesieniu

Kody statusu HTTP

Błędy w przeglądarce i kliencie

Błędy połączenia i TLS

Proxy rezydencjalne z dokumentacją opisującą przypadki błędów

CrawlRelay proxy rezydencjalne od 0,50 USD/GB, ruch, który nigdy nie wygasa.

Od 0,50 USD/GB · bez KYC

Rozpocznij