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 · Kody statusu HTTP

502 Bad Gateway przez proxy: co oznacza i jak to naprawić

Kod HTTP (5xx, błąd serwera): 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 502 Bad Gateway w kontekście proxy?

502 Bad Gateway oznacza, że brama lub proxy otrzymało niepoprawną lub brakującą odpowiedź od kolejnego serwera w łańcuchu. Przez residential proxy CrawlRelay 502 zazwyczaj oznacza problem z wyjściowym połączeniem lub celem w trakcie zapytania. Spróbuj ponownie raz z nowym połączeniem. Jeśli 502 powtarza się tylko na jednej stronie, to problem po stronie strony; jeśli na wszystkich, sprawdź konfigurację.

502 Bad Gateway w skrócie

Błąd502 Bad Gateway
TypKod HTTP (5xx, błąd serwera)
Wysłane przezBrama proxy lub reverse proxy przed celem
Zdefiniowano wRFC 9110, section 15.6.3
Spróbować ponownie?Tak, przy nowym połączeniu lub sesji
Najpierw sprawdźSpróbuj ponownie raz na nowym IP; jeśli się powtarza, testuj cel bez proxy

Co oznacza 502 Bad Gateway?

RFC 9110 opisuje 502 jako sygnał bramy, że serwer za nią odpowiedział błędnie. W łańcuchu scrapingu jest co najmniej dwoje bram: proxy i często CDN lub load balancer przed stroną. Obie mogą wygenerować 502, a ciało odpowiedzi zwykle mówi, która.

Sieci residential mają dodatkowy ogniwo. Wyjście to realne łącze domowe, a urządzenie może opuścić sieć w trakcie zapytania. Wtedy brama nie ma nic ważnego do przesłania dalej.

Jak wygląda a 502 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: status_code == 502, lub ProxyError('Unable to connect to proxy', OSError('Tunnel connection failed: 502 Bad Gateway')) dla HTTPS
  • curl: curl: (56) CONNECT tunnel failed, response 502
  • Przeglądarki: net::ERR_TUNNEL_CONNECTION_FAILED na HTTPS lub zwykła strona błędu na HTTP
  • Scrapy: domyślnie retry, bo 502 jest w RETRY_HTTP_CODES

Co powoduje a 502?

Najczęściej na początku:

  • Wyjście opuściło pulę w trakcie zapytania, co jest normalne w sieciach residential.
  • Cel zamknął połączenie, zawiesił się lub zwrócił niepoprawne dane.
  • CDN celu nie mógł połączyć się z jego serwerem źródłowym.
  • Błąd DNS po stronie wyjścia, np. literówka w nazwie hosta.
  • Bardzo wąskie targetowanie, które zostawia niewiele wyjść, więc błędy powtarzają się na tym samym małym zestawie.

Jak krok po kroku zdiagnozować a 502?

  1. Spróbuj ponownie z nowym połączeniem. Pojedynczy 502, który znika, to zgubione wyjście.
  2. Przeczytaj ciało i nagłówki odpowiedzi: strona błędu CDN poda nazwę CDN, krótka wiadomość proxy wskaże bramę.
  3. Przetestuj cel bez proxy z własnego łącza.
  4. Poszerz targetowanie z miasta na kraj i porównaj wskaźnik błędów.
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ć a 502?

  • Powtórz na nowym ID sesji lub bez, by zapytanie wyszło innym wyjściem.
  • Ustaw rozsądne timeouty, aby uszkodzone wyjście szybko zawieszało próbę.
  • Loguj 502 na hosta i pauzuj host z rosnącą liczbą 502: prawdopodobnie jest niedostępny.
Python: ponów próbę z Retry-After, wykładniczym opóźnieniem i jitterem
import random
import time

import requests

PROXY = "http://USERNAME:[email protected]:7777"
PROXIES = {"http": PROXY, "https": PROXY}
RETRY_STATUSES = {429, 502, 503, 504}


def fetch(url, attempts=5, timeout=(10, 30)):
    for attempt in range(attempts):
        try:
            r = requests.get(url, proxies=PROXIES, timeout=timeout)
        except (requests.exceptions.ConnectionError, requests.exceptions.Timeout):
            r = None  # dropped exit, reset or timeout: a new connection gets a new exit
        if r is not None and r.status_code not in RETRY_STATUSES:
            return r
        retry_after = r.headers.get("Retry-After", "") if r is not None else ""
        if retry_after.isdigit():
            wait = int(retry_after)
        else:
            wait = min(60, 2 ** attempt) + random.uniform(0, 1)
        time.sleep(wait)
    raise RuntimeError("giving up on %s after %d attempts" % (url, attempts))

Czy warto ponawiać próbę po a 502?

Tak, powtórz 502, ale na świeżym wyjściu i z limitem. Dwa-trzy podejścia z krótkim backoffem powinny wystarczyć. 502 utrzymujące się mimo rotacji wskazuje na problem po stronie celu, dalsze próby nic nie dadzą. Monitoruj wskaźnik na host, by jeden problematyczny serwis nie zapełnił kolejki retry.

Jak 502 Bad Gateway odnosi się do CrawlRelay?

W CrawlRelay możesz porzucić ID sesji lub utworzyć nowe, które zazwyczaj wychodzi przez inny residential IP. Sticky session trzyma Cię przy jednym wyjściu, więc 502 w takiej sesji powinno ją zakończyć w Twoim kodzie. Przewodnik po sesjach wyjaśnia, jak rotować sesję czysto.

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: 504 Gateway Timeout · Connection reset · 503 Service Unavailable.

502 Bad Gateway: pytania, które zadają deweloperzy

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

Oba przypadki są możliwe. Sprawdź treść odpowiedzi: strony błędów CDN zawierają nazwę CDN, która wskazuje na stronę. Błąd 502 na każdej testowanej stronie wskazuje na proxy lub Twoją konfigurację, natomiast błąd 502 tylko na jednej stronie wskazuje na tę stronę. Aby być pewnym, przetestuj ten sam URL bez proxy.

Dlaczego błędy 502 są częstsze przy proxy residential?

Wyjścia residential to prawdziwe domowe łącza, urządzenia odłączają się, zmieniają sieć lub tracą zasięg. Żądanie w trakcie takiej zmiany kończy się błędem 502 lub resetem połączenia. Dobry scraper traktuje je jako normalne i ponawia na nowym wyjściu, z niewielkim limitem.

Czy powinienem przejść na sesje sticky, aby zmniejszyć liczbę 502?

Nie. Sticky session utrzymuje Cię przy jednym wyjściu, więc jeśli ono zawiedzie, każde żądanie w sesji również. Używaj rotujących połączeń dla niezależnych stron i sticky session tylko dla wieloetapowych procesów. Zakończ sticky session po 502 i rozpocznij nową.

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