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

504 Gateway Timeout przez proxy: przyczyny i rozwiązania

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 504 Gateway Timeout w kontekście proxy?

504 Gateway Timeout oznacza, że gateway, np. proxy lub CDN strony, czekał za długo na kolejny serwer i się poddał. Przy residential proxy CrawlRelay wolne ogniwo to zwykle cel lub domowe łącze wyjścia. Ponów raz na nowym wyjściu, utrzymuj lekkie strony i ustaw własne timeouty klienta, by wolne żądanie zakończyło się na Twoich warunkach.

504 Gateway Timeout w skrócie

Błąd504 Gateway Timeout
TypKod HTTP (5xx, błąd serwera)
Wysłane przezProxy gateway lub CDN przed celem
Zdefiniowano wRFC 9110, section 15.6.5
Spróbować ponownie?Tak, raz lub dwa razy na nowym wyjściu
Najpierw sprawdźZmierz ten sam request bez proxy

Co oznacza 504 Gateway Timeout?

RFC 9110 definiuje 504 jako gateway, który nie otrzymał na czas odpowiedzi od serwera upstream, którego potrzebował. To timeout-owy brat błędu 502: 502 to zła odpowiedź, 504 to brak odpowiedzi na czas.

Proxy residential dodaje dodatkowy skok, którego nie ma bezpośrednie żądanie: ruch idzie do bramki, potem do domowego łącza, potem do strony. Każdy skok dodaje opóźnienie, a najwolniejszy decyduje o czasie całkowitym.

Jak wygląda a 504 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 == 504, lub Tunnel connection failed: 504 Gateway Timeout dla HTTPS
  • curl: curl: (56) CONNECT tunnel failed, response 504
  • Scrapy: domyślnie ponawia (504 jest w RETRY_HTTP_CODES)
  • Strony serwowane przez CDN: strona błędu CDN ze statusem 504

Co powoduje a 504?

Najczęściej na początku:

  • Wolny cel, np. strona wyszukiwania budująca się długo.
  • Wolne wyjście, np. słabe łącze domowe lub zatłoczona komórka.
  • Duże odpowiedzi, które zajmują więcej czasu niż cierpliwość gateway.
  • Timeout serwera oryginalnego stronicy za CDN, który wtedy odpowiada 504.

Jak krok po kroku zdiagnozować a 504?

  1. Zmierz request bez proxy. Jeśli w domu też jest wolno, to cel jest wolny.
  2. Ponów na nowym wyjściu i porównaj czasy.
  3. Sprawdź rozmiar odpowiedzi: 5 MB to inny problem niż 50 KB.
  4. Przeczytaj treść, aby zobaczyć, czy stronę błędu wygenerował CDN czy proxy.
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 504?

  • Ustaw jawne timeouty: około 10 sekund na połączenie i 30–60 sekund na odczyt dla zwykłych stron.
  • Ponów na nowym wyjściu raz lub dwa razy.
  • Żądaj mniej: pomiń obrazki i multimedia, jeśli potrzebujesz tylko HTML lub JSON API za stroną.
  • Planuj ciężkie strony na godziny poza szczytem dla kraju celu.
Python httpx: jawne ustawienie limitów connect, read, write i pool
import httpx

proxy = "http://USERNAME:[email protected]:7777"
timeout = httpx.Timeout(connect=10.0, read=30.0, write=10.0, pool=10.0)

with httpx.Client(proxy=proxy, timeout=timeout) as client:
    try:
        r = client.get("https://api.ipify.org")
        print(r.status_code, r.text)
    except httpx.TimeoutException as exc:
        print("timed out:", type(exc).__name__)  # ConnectTimeout, ReadTimeout...

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

Ponów próbę 504 raz lub dwa razy na świeżym wyjściu, z krótką przerwą. Jeśli ten sam URL przekracza limit czasu na kilku wyjściach, cel jest wolny lub przeciążony: zmniejsz częstotliwość zapytań do tego hosta lub spróbuj później. Zwiększenie limitu czasu klienta pomaga tylko wtedy, gdy limit bramki nie jest przyczyną.

Jak 504 Gateway Timeout odnosi się do CrawlRelay?

Każde nowe połączenie do CrawlRelay bez ID sesji zwykle trafia na inne mieszkanie wyjściowe, więc ponowne próby to test innego połączenia domowego. Dla wolnych celów zachowuj małe ładunki i mierz czas do pierwszego bajtu osobno od całkowitego czasu pobierania.

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: 502 Bad Gateway · Read timed out · 503 Service Unavailable.

504 Gateway Timeout: pytania, które zadają deweloperzy

Jaka jest różnica między 502 a 504?

Oba pochodzą z bramki. 502 oznacza, że serwer za nią wysłał nieprawidłową odpowiedź lub zerwał połączenie. 504 oznacza, że nic nie wysłał w czasie. Przy residential proxy 502 często oznacza zerwane wyjście, a 504 wolny cel lub wolne połączenie domowe.

Czy mogę zwiększyć limit czasu proxy?

Kontrolujesz limity czasu klienta, nie wewnętrzne bramki. Ustaw wyraźnie limity nawiązywania i odczytu, aby wolne zapytania kończyły się przewidywalnie, ponawiaj na nowym wyjściu i upraszczaj strony. Jeśli cel potrzebuje bardzo długich odpowiedzi, pobierz jego API lub lżejszą stronę.

Czy mobilne proxy są wolniejsze od residential?

Mogą, ponieważ mobilne wyjście dzieli sieć komórkową z innymi użytkownikami, a jego prędkość zmienia się wraz z sygnałem i obciążeniem. Używaj mobilnych IP do celów tego wymagających, a residential do masowego crawlignu. Mierz swoje czasy odpowiedzi według typu wyjścia, zanim zdecydujesz.

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