# 503 Service Unavailable เมื่อขูดข้อมูล: ความหมายและวิธีแก้ไข

> 503 Service Unavailable ผ่าน proxy: เป้าหมาย overload, กำลังบำรุงรักษา, หน้า challenge หรือการระบุเป้าหมายแคบ วิธีแยกสาเหตุและแก้ไข

- URL: https://crawlrelay.com/th/docs/errors/503-service-unavailable/
- อัปเดตล่าสุด: 2026-10-13
- Publisher: CrawlRelay (https://crawlrelay.com)

รหัสสถานะ HTTP (5xx, เซิร์ฟเวอร์ผิดพลาด): ข้อความผิดพลาดที่แม่นยำในแต่ละเครื่องมือ สาเหตุที่เป็นไปได้ตามลำดับ และวิธีแก้ไขที่ใช้งานได้

**คำตอบด่วน — 503 Service Unavailable หมายความว่าอย่างไรกับพร็อกซี?**

**503 Service Unavailable** หมายความว่าเซิร์ฟเวอร์ไม่สามารถจัดการคำขอได้ในขณะนี้ เนื่องจากโหลดเกิน, บำรุงรักษา หรือกฎป้องกัน ผ่าน residential proxy ของ CrawlRelay ให้ดูหัวข้อ `Retry-After` และเนื้อหาตอบกลับ: 503 ที่มาจากบำรุงรักษาหรือโหลดเกินจะหายไปตามเวลา ขณะที่หน้า challenge หมายถึงเว็บไซต์กรองทราฟฟิกอัตโนมัติและคุณควรชะลอการส่งคำขอ

## 503 Service Unavailable แบบสั้นๆ

| คุณลักษณะ | ค่า |
| --- | --- |
| ข้อผิดพลาด | 503 Service Unavailable |
| ประเภท | รหัสสถานะ HTTP (5xx, เซิร์ฟเวอร์ผิดพลาด) |
| ส่งโดย | เว็บไซต์เป้าหมาย, CDN ของเว็บไซต์ หรือ proxy เมื่อไม่มี exit ให้ใช้ |
| กำหนดไว้ใน | RFC 9110, section 15.6.4 (Retry-After: section 10.2.3) |
| ลองใหม่อีกครั้งไหม? | ใช่ หลัง Retry-After หรือเวลาหน่วง (backoff) |
| ตรวจสอบก่อน | ตรวจสอบหัวข้อ Retry-After และดูว่าเนื้อหาเป็นหน้า challenge ของ CDN หรือไม่ |

## 503 Service Unavailable หมายความว่าอย่างไร?

RFC 9110 กำหนด 503 เป็นสถานะชั่วคราว เซิร์ฟเวอร์ยังทำงานอยู่แต่ไม่ยินดีหรือไม่สามารถตอบคำขอในเวลานี้ และอาจแจ้งเวลาที่ให้กลับมาตาม `Retry-After`

ในทางปฏิบัติ 503 นี้มักเกิดจากสถานการณ์สามอย่าง: เว็บไซต์ที่โหลดเกินหรือกำลังบำรุงรักษาจริง ๆ, CDN ที่แสดงหน้า challenge สำหรับทราฟฟิกที่ถือว่าเป็นอัตโนมัติ และ gateway proxy ที่ไม่มี exit ให้ใช้สำหรับเป้าหมายแคบ เนื้อหาและหัวข้อช่วยแยกแยะ

## a 503 เป็นอย่างไรใน Python, curl, Node.js และเบราว์เซอร์?

ข้อผิดพลาดเดียวกันนี้แสดงผลแตกต่างกันในแต่ละเครื่องมือ นี่คือข้อความที่ต้องค้นหาในบันทึกของคุณ:

- **Python requests / httpx:** `status_code == 503` บางครั้งมี `Retry-After` ด้วย
- **Scrapy:** พยายามใหม่โดยอัตโนมัติ (503 อยู่ใน `RETRY_HTTP_CODES`)
- **curl:** `HTTP/2 503` มักมีหัวข้อ `server:` ระบุ CDN
- **เบราว์เซอร์:** หน้า maintenance หรือหน้า interstitial check

## อะไรเป็นสาเหตุของ a 503?

โอกาสสูงสุดอันดับแรก:

- **โหลดเกินหรือบำรุงรักษา** ของเว็บไซต์เป้าหมาย มักมี `Retry-After`
- **หน้า challenge** ที่ CDN แสดงกับลูกค้าที่ต้องการตรวจสอบ สถานะ 503 หรือ 403
- **โหลดของคุณเอง** เมื่อ crawler ของคุณเป็นส่วนใหญ่ของทราฟฟิกเว็บไซต์
- **การระบุเป้าหมายแคบ** เช่น เมืองเล็ก ๆ เมื่อไม่มี exit ที่ตรงกับในขณะนั้น
- **การล่มของ upstream** ที่ CDN หรือภูมิภาคคลาวด์ที่เว็บไซต์ใช้

## ฉันวินิจฉัย a 503 ทีละขั้นตอนอย่างไร?

1. อ่านหัวข้อ `Retry-After` และ `server` จากนั้นดูชื่อ HTML ของหน้า
2. โหลดหน้าในเบราว์เซอร์จากประเทศเดียวกันเพื่อดูว่าผู้ใช้เห็นอะไร
3. หยุด crawler สักครู่และทดสอบคำขอ ถ้าผ่านแสดงว่าโหลดของคุณเป็นสาเหตุ
4. ขยายการระบุเป้าหมายเป็นระดับประเทศและเปรียบเทียบ

*ทดสอบ URL ที่ล้มเหลวด้วย curl (พอร์ต HTTP, โหมดละเอียด)*

```bash
# 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:PASSWORD@gw.crawlrelay.com: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
```

## ฉันจะแก้ไข a 503 อย่างไร?

- **รอและลองใหม่** โดยใช้เวลาหน่วง `Retry-After` หรือตัวหน่วงแบบ exponential
- **ลดโหลด** บนโฮสต์นั้น: ลดจำนวนคำขอพร้อมกัน, เพิ่มเวลาหน่วง, ใช้แคช
- **ถือว่าหน้า challenge เป็นสัญญาณหยุด** สำหรับความเร็วนี้ อย่าใช้เครื่องมือแก้ CAPTCHA หรือปลอมเบราว์เซอร์เพื่อผ่าน ควรลดอัตราและติดต่อเว็บไซต์หากจำเป็น
- **ขยายการระบุเป้าหมาย** เมื่อพบ 503 พร้อมกับตัวกรองเมืองแคบ

*Python: ลองใหม่ด้วย Retry-After, การหน่วงเพิ่มขึ้นแบบเอ็กซ์โพเนนเชียล และ jitter*

```python
import random
import time

import requests

PROXY = "http://USERNAME:PASSWORD@gw.crawlrelay.com: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 503 ไหม?

ลองใหม่ 503 ด้วยความอดทน ใช้ `Retry-After` เมื่อมี ไม่เช่นนั้นลดความเร็วแบบ exponential ตั้งแต่ไม่กี่วินาทีจนถึงหนึ่งสองนาที ถ้าโฮสต์ตอบ 503 กับคำขอส่วนใหญ่เกินไม่กี่นาที ให้หยุดโฮสต์นั้นทั้งหมดแล้วกลับมาใหม่ภายหลัง แยกบันทึก challenge page กับการล่มจริง

## 503 Service Unavailable มีผลอย่างไรกับ CrawlRelay?

CrawlRelay ส่งคำขอของคุณผ่าน residential IP ที่เลือกตามการระบุเป้าหมาย ระดับประเทศใช้ออกที่กว้างสุด ระดับเมืองแคบลง ถ้าเจอ 503 เฉพาะกับตัวกรองเมือง ลองคำขอเดียวกันด้วยระดับประเทศก่อนเปลี่ยนแปลงอื่นใด

เกตเวย์: `gw.crawlrelay.com`, พอร์ต 7777 (HTTP, HTTPS ผ่าน CONNECT) และพอร์ต 7778 (SOCKS5). รูปแบบชื่อผู้ใช้: `USERNAME-country-{cc}-state-{state}-city-{city}-zip-{zip}-asn-{asn}-session-{id}-ttl-{minutes}`. ที่เกี่ยวข้อง: [429 Too Many Requests](https://crawlrelay.com/th/docs/errors/429-too-many-requests/) · [502 Bad Gateway](https://crawlrelay.com/th/docs/errors/502-bad-gateway/) · [504 Gateway Timeout](https://crawlrelay.com/th/docs/errors/504-gateway-timeout/).

## 503 Service Unavailable: คำถามที่นักพัฒนาถาม

### ทำไมฉันถึงเจอ 503 เฉพาะผ่าน proxy แต่ไม่เจอที่บ้าน?

ไม่ว่าจะเป็นเพราะเว็บไซต์จัดการทราฟฟิกจาก proxy ของคุณต่างออกไป มักแสดงหน้า challenge หรือการระบุเป้าหมายแคบทำให้ exit หายาก เปรียบเทียบเนื้อหาในสองกรณี หน้า challenge คือสัญญาณให้ชะลอ ข้อความ proxy สั้น ๆ กับตัวกรองแคบคือเพิ่มขอบเขตที่ตั้ง

### 503 กับการถูกบล็อกเหมือนกันไหม?

ไม่ใช่ 503 จริงเป็นสถานะชั่วคราวและจะหายไปตามเวลา หน้า challenge ที่แสดงพร้อม 503 คือตัวกรอง มักหมายความว่าความถี่หรือรูปแบบการส่งคำขอดูเหมือนอัตโนมัติ ลด concurrency และเพิ่มเวลาหน่วง หากเว็บไซต์ไม่ต้องการให้เข้าถึงอัตโนมัติเลย ให้เคารพและใช้ API หรือข้อมูลที่มีลิขสิทธิ์แทน

### ควรลองใหม่ 503 กี่ครั้ง?

สามถึงห้าครั้งพร้อมตัวหน่วงแบบ exponential เป็นขีดจำกัดที่สมเหตุสมผลสำหรับ URL เดียว หากเกินนั้นให้หยุดโฮสต์ทั้งหมดแทนที่จะลองกับ URL เดียว เพราะเว็บไซต์ที่มีปัญหาไม่ฟื้นเร็วขึ้นจากการลองใหม่อย่างเดียว เก็บบันทึกโฮสต์และเวลาเพื่อกลับมาทำต่อทีหลัง

## ข้อผิดพลาดพร็อกซีอื่นๆ ในเอกสารอ้างอิงนี้

- [401 Unauthorized vs 407](https://crawlrelay.com/th/docs/errors/401-unauthorized/)
- [403 Forbidden](https://crawlrelay.com/th/docs/errors/403-forbidden/)
- [407 Proxy Authentication Required](https://crawlrelay.com/th/docs/errors/407-proxy-authentication-required/)
- [429 Too Many Requests](https://crawlrelay.com/th/docs/errors/429-too-many-requests/)
- [502 Bad Gateway](https://crawlrelay.com/th/docs/errors/502-bad-gateway/)
- [503 Service Unavailable](https://crawlrelay.com/th/docs/errors/503-service-unavailable/)
- [504 Gateway Timeout](https://crawlrelay.com/th/docs/errors/504-gateway-timeout/)
- [Cannot connect to proxy (ProxyError)](https://crawlrelay.com/th/docs/errors/cannot-connect-to-proxy/)
- [Connection reset by peer (ECONNRESET)](https://crawlrelay.com/th/docs/errors/connection-reset/)
- [ERR_PROXY_CONNECTION_FAILED](https://crawlrelay.com/th/docs/errors/err-proxy-connection-failed/)
- [ERR_TUNNEL_CONNECTION_FAILED](https://crawlrelay.com/th/docs/errors/err-tunnel-connection-failed/)
- [Read timed out (ReadTimeout)](https://crawlrelay.com/th/docs/errors/read-timeout/)
- [SOCKS5 proxy errors](https://crawlrelay.com/th/docs/errors/socks5-proxy-errors/)
- [SSL: CERTIFICATE_VERIFY_FAILED](https://crawlrelay.com/th/docs/errors/ssl-certificate-verify-failed/)
- [SSL: WRONG_VERSION_NUMBER](https://crawlrelay.com/th/docs/errors/ssl-wrong-version-number/)

**พร็อกซีเรซิเดนเชียลที่มีเอกสารอธิบายกรณีล้มเหลว** พร็อกซีเรซิเดนเชียล CrawlRelay จาก US$0.50/GB, ปริมาณข้อมูลที่ไม่หมดอายุ [ดูราคา](https://crawlrelay.com/th/pricing/) · [เริ่มต้นอย่างรวดเร็ว](https://crawlrelay.com/th/docs/)

---

CrawlRelay: CrawlRelay คือพร็อกซีเรซิเดนเชียลหมุนเวียนพร้อมพร็อกซีมือถือ 4G/5G สำหรับนักพัฒนา เหมาะกับสแครปเปอร์และระบบจัดการข้อมูล AI: เติมเงินจ่ายตามการใช้งานจาก US$0.50/GB จ่ายด้วยคริปโต ไม่ต้องอัปโหลดบัตรประชาชน ไม่ต้อง KYC — ไม่ต้องใช้บัตรประชาชน ไม่ต้องถ่ายเซลฟี่ ไม่ต้องใช้เอกสาร จ่ายด้วยคริปโต
