Hızlı cevap
Konut proxy ile 502 Bad Gateway ne anlama gelir?
502 Bad Gateway bir geçit ya da proxy'nin zincirdeki bir sonraki sunucudan geçersiz yanıt veya hiç yanıt alamaması anlamına gelir. CrawlRelay konut proxy'leriyle, 502 genellikle çıkış bağlantısının veya hedefin istek ortası başarısızlığıdır. Yeni bağlantıda bir kere deneyin. Eğer sadece bir site için devam ederse, sorun site kaynaklıdır; tüm sitelerde olursa ayarlarınızı kontrol edin.
502 Bad Gateway hızlı bakış
| Hata | 502 Bad Gateway |
|---|---|
| Tür | HTTP durum kodu (5xx, sunucu hatası) |
| Gönderen | Hedefin önünde proxy geçidi veya ters proxy |
| Tanımlandığı yer | RFC 9110, section 15.6.3 |
| Tekrar denemek ister misiniz? | Evet, yeni bağlantı veya oturumda |
| İlk kontrol | Yeni IP'de bir kere deneyin; sürerse, proxy olmadan hedefi test edin |
502 Bad Gateway ne anlama gelir?
RFC 9110, 502'yi bir geçidin arkadaki sunucunun kötü yanıt verdiğini belirtme yolu olarak tanımlar. Kazıma zincirinde en az iki geçit vardır: proxy ve çoğunlukla sitenin önündeki CDN veya yük dengeleyici. Her ikisi de 502 üretebilir ve yanıt gövdesi genellikle hangisi olduğunu anlatır.
Konut ağları bir bağlantı daha ekler. Çıkış gerçek bir ev bağlantısıdır ve cihaz bir isteğin ortasında ağı terk edebilir. Geçit geçerli bir yanıt gönderemez.
Python, curl, Node.js ve tarayıcılarda a 502 nasıl görünür?
Aynı başarısızlık her araçta farklı şekilde görünür. Loglarınızda aramanız gereken mesajlar şunlardır:
- Python requests:
status_code == 502, HTTPS hedef içinProxyError('Unable to connect to proxy', OSError('Tunnel connection failed: 502 Bad Gateway')) - curl:
curl: (56) CONNECT tunnel failed, response 502 - Tarayıcılar: HTTPS için
net::ERR_TUNNEL_CONNECTION_FAILEDveya HTTP için basit hata sayfası - Scrapy: varsayılan yeniden dener çünkü 502
RETRY_HTTP_CODESiçinde
a 502 neden olur?
Öncelikle en olası sebep:
- **İstek ortasında çıkış havuzundan çıkış yapılması, konut ağlarında yaygındır.
- **Hedefin bağlantıyı kapatması, çökmesi ya da hatalı yanıt dönmesi.
- **Hedefin CDN'inin orijinal sunucuya ulaşamaması.
- **Çıkış tarafında DNS hatası, örn. alan adı yazım hatası.
- **Çok dar hedefleme, az sayıda çıkış bırakır; arızalar aynı küçük küme üzerinde tekrarlar.
a 502 nasıl adım adım teşhis edilir?
- İsteği yeni bir bağlantıda tekrar edin. Kaybolan bir 502 muhtemelen düşen çıkıştır.
- Yanıt gövdesi ve başlıklarını okuyun: CDN hata sayfası CDN'yi, kısa proxy mesajı geçidi gösterir.
- Proxy olmadan kendi bağlantınızdan hedefi test edin.
- Hedefleme kapsamını şehirden ülkeye genişletip hata oranlarını karşılaştırın.
# 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_URLa 502 nasıl düzeltilir?
- **Yeni oturum kimliği ile ya da olmadan tekrar deneyin, böylece istek farklı bir çıkıştan gider.
- **Mantıklı zaman aşımı ayarlayın, ölü çıkış hemen başarısız olsun, takılmasın.
- **Sunucu başı 502'leri kaydedin ve oranı artan sunucuyu duraklatın; muhtemelen yanıt vermiyor.
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))a 502 sonrası tekrar denenmeli mi?
Evet, 502'yi yeniden deneyin, ama yeni çıkışla ve limitli. İki-üç deneme kısa arayla yeterlidir. Birkaç çıkışta da devam eden 502 hedef kaynaklıdır ve daha fazla deneme fayda sağlamaz. Sunucu başı oranı izleyin ki bir arızalı site yeniden deneme kuyruğunu doldurmasın.
502 Bad Gateway CrawlRelay için nasıl geçerli?
CrawlRelay ile, oturum ID'sini bırakın ya da yenisini oluşturun; böylece genelde farklı bir konut IP'si üzerinden çıkış yapılır. Yapışkan oturum sizi tek bir çıkışa bağlar, bu yüzden yapışkan oturum içindeki 502 o oturumun kodda sonlanması demektir. Oturumlar kılavuzu, oturumların temiz dönüşümünü açıklar.
Gateway: gw.crawlrelay.com, port 7777 (HTTP, HTTPS CONNECT üzerinden) ve port 7778 (SOCKS5). Kullanıcı adı formatı: USERNAME-country-{cc}-state-{state}-city-{city}-zip-{zip}-asn-{asn}-session-{id}-ttl-{minutes}. İlgili: 504 Gateway Timeout · Connection reset · 503 Service Unavailable.
502 Bad Gateway: geliştiricilerin sorduğu sorular
502 hatası proxy'nin mi yoksa web sitesinin mi hatasıdır?
Her ikisi de olabilir. Yanıt gövdesini okuyun: CDN hata sayfaları CDN'i belirtir, bu da web sitesini işaret eder. Denediğiniz her sitede 502 alıyorsanız sorun proxy'de veya kurulumunuzdadır, tek bir sitede 502 varsa sorun o sitededir. Emin olmak için aynı URL'yi proxy olmadan test edin.
Neden 502 hataları ev tipi proxylerde daha yaygındır?
Ev tipi çıkışlar gerçek ev bağlantılarıdır ve cihazlar çevrimdışı olabilir, ağ değiştirir veya sinyal kaybeder. Böyle durumlarda uçuşta olan istek 502 veya bağlantı sıfırlaması ile sona erer. İyi bir kazıyıcı bunları normal kabul edip yeni bir çıkışta yeniden dener, küçük bir sınırla.
502 hatalarını azaltmak için yapışkan oturumlara geçmeli miyim?
Hayır. Yapışkan oturum sizi bir çıkışta tutar, çıkış başarısız olursa oturumdaki her istek de başarısız olur. Bağımsız sayfalar için dönen bağlantılar, çok adımlı işlemler için yapışkan oturumlar kullanın. 502 sonra yapışkan oturumu sonlandırıp yenisini başlatın.
Bu referanstaki diğer proxy hataları
HTTP durum kodları
- 401 Unauthorized vs 407
- 403 Forbidden
- 407 Proxy Authentication Required
- 429 Too Many Requests
- 502 Bad Gateway
- 503 Service Unavailable
- 504 Gateway Timeout
Tarayıcı ve istemci hataları
Bağlantı ve TLS hataları
Başarısızlık durumları için dokümanlı konut proxy'ler
$0,50/GB sitesinden süresi hiç bitmeyen CrawlRelay konut proxy