Jawaban cepat
Apa arti 502 Bad Gateway dengan proxy?
502 Bad Gateway berarti gateway atau proxy menerima respons tidak valid, atau tidak sama sekali, dari server berikutnya dalam rantai. Dengan proxy residential CrawlRelay, 502 biasanya berarti sambungan exit atau target gagal di tengah permintaan. Coba ulang sekali dengan koneksi baru. Jika 502 terus terjadi hanya di satu situs, masalah ada pada situs; jika terjadi di semua situs, periksa pengaturan Anda.
502 Bad Gateway sekilas
| Kesalahan | 502 Bad Gateway |
|---|---|
| Tipe | Kode status HTTP (5xx, kesalahan server) |
| Dikirim oleh | Gateway proxy atau reverse proxy di depan target |
| Didefinisikan dalam | RFC 9110, section 15.6.3 |
| Mencoba lagi? | Ya, pada koneksi atau sesi baru |
| Periksa pertama | Retry sekali dengan IP baru; jika tetap, uji target tanpa proxy |
Apa arti 502 Bad Gateway?
RFC 9110 menjelaskan 502 sebagai cara gateway memberi tahu bahwa server belakangnya merespons buruk. Dalam rantai scraping ada minimal dua gateway: proxy dan, sering kali, CDN atau load balancer di depan website. Salah satu bisa memproduksi 502, dan body respons biasanya memberi tahu mana.
Jaringan residential menambah satu tautan lagi. Exit adalah koneksi rumah tangga nyata, dan perangkat bisa meninggalkan jaringan saat permintaan berlangsung. Gateway lalu tidak memiliki data valid untuk dikirim kembali.
Seperti apa a 502 dalam Python, curl, Node.js, dan browser?
Kegagalan yang sama dicetak berbeda di setiap alat. Ini adalah pesan yang perlu dicari di log Anda:
- Python requests:
status_code == 502, atauProxyError('Unable to connect to proxy', OSError('Tunnel connection failed: 502 Bad Gateway'))untuk target HTTPS - curl:
curl: (56) CONNECT tunnel failed, response 502 - Browser:
net::ERR_TUNNEL_CONNECTION_FAILEDpada HTTPS, atau halaman error biasa pada HTTP - Scrapy: dicoba ulang secara default, karena 502 ada di
RETRY_HTTP_CODES
Apa penyebab a 502?
Kemungkinan besar pertama:
- Exit keluar dari pool selama permintaan, ini biasa pada jaringan residential.
- Target menutup koneksi, crash, atau mengembalikan data rusak.
- CDN target gagal menghubungi server asalnya.
- DNS gagal untuk target di sisi exit, misal salah ketik nama host.
- Targeting sangat sempit sehingga hanya sedikit exit, membuat kegagalan berulang di set kecil yang sama.
Bagaimana cara mendiagnosis a 502 langkah demi langkah?
- Coba ulang permintaan dengan koneksi baru. 502 tunggal yang hilang berarti exit drop.
- Baca body dan header respons: halaman error CDN akan menyebutkan CDN; pesan proxy singkat menyebut gateway.
- Uji target dari koneksi Anda sendiri tanpa proxy.
- Perlebar targeting dari kota ke negara dan bandingkan tingkat kegagalan.
# 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_URLBagaimana cara memperbaiki a 502?
- Retry dengan ID sesi baru atau tanpa sesi, agar permintaan lewat exit lain.
- Terapkan timeout wajar supaya exit yang mati gagal cepat, tidak menggantung.
- Catat 502 per host dan jeda host yang angka 502-nya melonjak: kemungkinan sedang down.
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))Haruskah saya mencoba lagi setelah a 502?
Ya, coba ulang 502 tapi dengan exit baru dan batasan. Dua atau tiga kali dengan jeda pendek sudah cukup. 502 yang tetap terjadi di beberapa exit menunjukkan masalah pada target, dan retry lebih banyak tidak akan membantu. Pantau laju per host agar satu situs bermasalah tidak memenuhi antrean retry Anda.
Bagaimana 502 Bad Gateway berlaku untuk CrawlRelay?
Dengan CrawlRelay, lepaskan ID sesi atau buat yang baru agar keluar biasanya lewat IP residential berbeda. Sesi sticky mengikat ke satu exit, jadi 502 dalam sesi sticky harus mengakhiri sesi itu di kode Anda. Panduan sesi menjelaskan cara merotasi sesi dengan bersih.
Gateway: gw.crawlrelay.com, port 7777 (HTTP, HTTPS melalui CONNECT) dan port 7778 (SOCKS5). Format username: USERNAME-country-{cc}-state-{state}-city-{city}-zip-{zip}-asn-{asn}-session-{id}-ttl-{minutes}. Terkait: 504 Gateway Timeout · Connection reset · 503 Service Unavailable.
502 Bad Gateway: pertanyaan yang sering ditanyakan pengembang
Apakah 502 kesalahan dari proxy atau dari situs web?
Keduanya bisa. Baca isi respons: halaman kesalahan CDN menyebutkan CDN, yang mengarah ke situs web. Jika 502 terjadi di setiap situs yang Anda coba, itu menunjuk ke proxy atau pengaturan Anda, sedangkan 502 di satu situs berarti masalah pada situs tersebut. Uji URL yang sama tanpa proxy untuk memastikan.
Mengapa kesalahan 502 lebih sering terjadi dengan proxy residential?
Exit residential adalah koneksi rumah nyata, dan perangkat bisa mati, berpindah jaringan, atau kehilangan sinyal. Permintaan yang sedang terjadi saat itu bisa berakhir dengan 502 atau reset. Scraper yang baik menganggap ini normal dan mencoba ulang dengan exit baru, dengan batas kecil.
Haruskah saya beralih ke sesi lengket untuk mengurangi 502?
Tidak. Sesi lengket membuat Anda tetap pada satu exit, jadi jika exit itu gagal, setiap permintaan dalam sesi itu juga gagal. Gunakan koneksi bergilir untuk halaman independen dan sesi lengket hanya untuk alur multi-langkah. Akhiri sesi lengket setelah 502 dan mulai sesi baru.
Kesalahan proxy lain dalam referensi ini
Kode status HTTP
- 401 Unauthorized vs 407
- 403 Forbidden
- 407 Proxy Authentication Required
- 429 Too Many Requests
- 502 Bad Gateway
- 503 Service Unavailable
- 504 Gateway Timeout
Kesalahan browser dan klien
Error koneksi dan TLS
Proxy residensial dengan dokumentasi yang membahas kasus kegagalan
Proxy residensial CrawlRelay dari US$0,50/GB, lalu lintas yang tidak pernah kedaluwarsa.