Jawaban cepat
Apa arti 503 Service Unavailable dengan proxy?
503 Service Unavailable berarti server tidak bisa menangani permintaan saat ini karena overload, pemeliharaan, atau aturan protektif. Melalui proxy residential CrawlRelay, baca header Retry-After dan isi respons: 503 karena pemeliharaan atau overload akan hilang dengan waktu, sedangkan halaman tantangan berarti situs memfilter trafik otomatis dan Anda harus memperlambat.
503 Service Unavailable sekilas
| Kesalahan | 503 Service Unavailable |
|---|---|
| Tipe | Kode status HTTP (5xx, kesalahan server) |
| Dikirim oleh | Situs target, CDN-nya, atau proxy saat tidak ada exit yang tersedia |
| Didefinisikan dalam | RFC 9110, section 15.6.4 (Retry-After: section 10.2.3) |
| Mencoba lagi? | Ya, setelah Retry-After atau jeda |
| Periksa pertama | Periksa header Retry-After dan apakah isi adalah halaman tantangan CDN |
Apa arti 503 Service Unavailable?
RFC 9110 mendefinisikan 503 sebagai kondisi sementara. Server aktif namun tidak mau atau tidak mampu melayani permintaan sekarang, dan bisa memberitahu kapan kembali lewat Retry-After.
Dalam praktik, tiga situasi berbeda berbagi kode ini: situs yang benar-benar overload atau dalam pemeliharaan, CDN yang menunjukkan halaman tantangan ke trafik yang dianggap otomatis, dan gateway proxy tanpa exit yang cocok untuk target sangat sempit. Isi dan header membedakan mereka.
Seperti apa a 503 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 / httpx:
status_code == 503, kadang denganRetry-After - Scrapy: mencoba ulang secara default (503 ada di
RETRY_HTTP_CODES) - curl:
HTTP/2 503, sering dengan headerserver:yang menyebut CDN - Browser: halaman pemeliharaan atau halaman pemeriksaan interstisial
Apa penyebab a 503?
Kemungkinan besar pertama:
- Overload atau pemeliharaan di sisi target, sering dengan
Retry-After. - Halaman tantangan yang disajikan CDN untuk klien yang ingin diperiksa, dengan status 503 atau 403.
- Beban Anda sendiri, saat crawler Anda menjadi bagian besar trafik situs.
- Target terlalu sempit, seperti kota kecil, saat tidak ada exit yang cocok saat itu.
- Gangguan hulu di CDN atau wilayah cloud yang dipakai situs.
Bagaimana cara mendiagnosis a 503 langkah demi langkah?
- Baca
Retry-Afterdan headerserver, lalu lihat judul HTML di isi. - Buka halaman di browser dari negara yang sama untuk melihat tampilan pengguna.
- Jeda crawler selama beberapa menit dan uji satu permintaan: jika berhasil, beban Anda penyebabnya.
- Perluas target ke tingkat negara dan bandingkan.
# 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 503?
- Tunggu dan coba lagi dengan jeda
Retry-Afteratau backoff eksponensial. - Kurangi beban pada host itu: permintaan paralel lebih sedikit, jeda lebih lama, caching.
- Anggap halaman tantangan sebagai sinyal berhenti untuk kecepatan itu. Jangan gunakan alat pemecah CAPTCHA atau penyamaran browser untuk mengatasinya; kurangi tingkatnya dan hubungi situs jika perlu akses.
- Perluas target bila 503 muncul dengan filter kota yang sempit.
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 503?
Coba ulang 503 dengan sabar. Gunakan Retry-After jika ada; jika tidak, lakukan backoff eksponensial dari beberapa detik sampai satu atau dua menit. Jika host mengembalikan 503 ke sebagian besar permintaan lebih dari beberapa menit, jeda sepenuhnya dan coba lagi nanti. Catat halaman tantangan berbeda dari gangguan nyata dalam log Anda.
Bagaimana 503 Service Unavailable berlaku untuk CrawlRelay?
CrawlRelay mengirim permintaan Anda melalui IP residential yang dipilih sesuai target Anda. Target tingkat negara memakai exit terbanyak; target kota lebih sempit. Jika 503 hanya muncul dengan filter kota, coba permintaan yang sama hanya dengan negara sebelum mengubah apapun.
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: 429 Too Many Requests · 502 Bad Gateway · 504 Gateway Timeout.
503 Service Unavailable: pertanyaan yang sering ditanyakan pengembang
Mengapa saya hanya mendapat 503 lewat proxy tapi tidak di rumah?
Situs memperlakukan trafik proxy Anda berbeda, sering menampilkan halaman tantangan, atau target Anda terlalu sempit sehingga exit jarang. Bandingkan isi respons di kedua kasus. Halaman tantangan berarti kurangi kecepatan; pesan proxy singkat dengan target sempit berarti perlu perluas filter lokasi.
Apakah 503 sama dengan diblokir?
Tidak. 503 asli bersifat sementara dan akan hilang dengan waktu. Halaman tantangan dengan 503 adalah filter, biasanya berarti pola atau kecepatan Anda terlihat otomatis. Kurangi koneksi paralel dan tambahkan jeda. Jika situs sama sekali tidak mengizinkan akses otomatis, hormati itu dan cari API atau data berlisensi.
Berapa kali saya harus coba ulang 503?
Tiga sampai lima kali dengan backoff eksponensial adalah batas wajar untuk satu URL. Setelah itu, jeda seluruh host daripada coba ulang URL satu per satu, karena situs bermasalah tidak akan pulih lebih cepat dengan coba ulang. Catat host dan waktu agar bisa dilanjutkan nanti.
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.