Không cần KYC — không cần ID, không selfie, không giấy tờ. Thanh toán bằng crypto: BTC, USDT, USDC, ETH, SOL, LTC
Ngôn ngữ: Tiếng Việt
Bắt đầu ngay

Tham khảo lỗi proxy · Mã trạng thái HTTP

503 Service Unavailable khi scraping: ý nghĩa và cách khắc phục

Mã trạng thái HTTP (5xx, lỗi máy chủ): thông báo chính xác trong từng công cụ, nguyên nhân có thể theo thứ tự, và cách sửa hiệu quả.

Cập nhật lần cuối: · 6 phút đọc

Trả lời nhanh

503 Service Unavailable nghĩa là gì với proxy?

503 Service Unavailable có nghĩa là máy chủ không thể xử lý yêu cầu ngay lúc này do quá tải, bảo trì hoặc quy tắc bảo vệ. Qua proxy residential của CrawlRelay, hãy đọc header Retry-After và nội dung phản hồi: 503 do bảo trì hoặc quá tải sẽ tự hết sau một thời gian, còn trang thử thách nghĩa là trang đang lọc lưu lượng tự động và bạn nên giảm tốc độ.

503 Service Unavailable nhìn nhanh

Lỗi503 Service Unavailable
LoạiMã trạng thái HTTP (5xx, lỗi máy chủ)
Gửi bởiWebsite mục tiêu, CDN của nó hoặc proxy khi không có exit nào để cung cấp
Định nghĩa tạiRFC 9110, section 15.6.4 (Retry-After: section 10.2.3)
Thử lại?Có, sau Retry-After hoặc khi cần giảm tải
Kiểm tra trước tiênKiểm tra header Retry-After và xem phần nội dung có phải trang thử thách của CDN không

503 Service Unavailable nghĩa là gì?

RFC 9110 định nghĩa 503 là trạng thái tạm thời. Máy chủ vẫn bật nhưng không thể hoặc không muốn xử lý yêu cầu ngay, có thể nói khi nào quay lại qua header Retry-After.

Thực tế, có ba tình huống cùng dùng mã này: trang thật sự quá tải hoặc đang bảo trì, CDN trả trang thử thách cho lưu lượng nó coi là tự động, và proxy gateway không có exit phù hợp cho mục tiêu quá hẹp. Phần nội dung và header giúp phân biệt.

a 503 trông như thế nào trong Python, curl, Node.js và trình duyệt?

Cùng một lỗi nhưng hiển thị khác nhau trên mỗi công cụ. Đây là các thông báo bạn nên tìm trong nhật ký của mình:

  • Python requests / httpx: status_code == 503, đôi khi có Retry-After
  • Scrapy: tự động thử lại (503 có trong RETRY_HTTP_CODES)
  • curl: HTTP/2 503, thường kèm header server: nêu tên CDN
  • Trình duyệt: trang bảo trì hoặc trang kiểm tra trung gian

Nguyên nhân gây ra a 503 là gì?

Khả năng đầu tiên là:

  • Quá tải hoặc bảo trì trên phía trang web, thường có Retry-After.
  • Trang thử thách do CDN phục vụ cho khách hàng nó muốn kiểm tra, trạng thái 503 hoặc 403.
  • Lưu lượng của bạn quá lớn, crawler chiếm phần lớn lưu lượng website.
  • Mục tiêu quá hẹp, ví dụ một thành phố nhỏ, không có exit phù hợp lúc đó.
  • Sự cố upstream tại CDN hoặc vùng đám mây mà trang web dùng.

Làm sao để chẩn đoán a 503 từng bước?

  1. Đọc header Retry-After và server, sau đó xem tiêu đề HTML của nội dung.
  2. Mở trang bằng trình duyệt từ cùng quốc gia để xem người dùng thật thấy gì.
  3. Tạm dừng crawler vài phút rồi thử một yêu cầu: nếu qua được, nghĩa là do lưu lượng của bạn.
  4. Mở rộng phạm vi mục tiêu đến cấp quốc gia và so sánh.
Kiểm tra URL bị lỗi với curl (cổng HTTP, chi tiết)
# 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

Làm sao để sửa a 503?

  • Chờ và thử lại theo thời gian trì hoãn ở Retry-After hoặc theo phương pháp giảm tải theo cấp số nhân.
  • Giảm tải trên host đó: ít yêu cầu song song hơn, tăng độ trễ, dùng cache.
  • Xem trang thử thách như tín hiệu dừng cho tốc độ đó. Đừng dùng công cụ giải CAPTCHA hay giả trình duyệt để vượt qua; hãy giảm tốc độ và liên hệ website nếu cần truy cập.
  • Mở rộng phạm vi mục tiêu khi 503 đi kèm bộ lọc thành phố quá hẹp.
Python: thử lại với Retry-After, độ trễ lũy thừa và jitter
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))

Có nên thử lại sau a 503 không?

Thử lại lỗi 503, nhưng kiên nhẫn. Dùng header Retry-After nếu có; nếu không thì giảm tải theo cấp số nhân từ vài giây đến một hoặc hai phút. Nếu một host trả 503 cho hầu hết yêu cầu trên vài phút, tạm ngưng host đó hoàn toàn rồi thử lại sau. Ghi lại trang thử thách riêng biệt trong log so với sự cố thật.

503 Service Unavailable áp dụng thế nào với CrawlRelay?

CrawlRelay gửi yêu cầu của bạn qua IP residential chọn phù hợp với mục tiêu. Mục tiêu theo quốc gia có số exit rộng nhất; theo thành phố thì hẹp hơn. Nếu chỉ thấy 503 với bộ lọc thành phố, hãy thử cùng yêu cầu chỉ với bộ lọc quốc gia trước khi thay đổi gì khác.

Gateway: gw.crawlrelay.com, cổng 7777 (HTTP, HTTPS qua CONNECT) và cổng 7778 (SOCKS5). Định dạng tên người dùng: USERNAME-country-{cc}-state-{state}-city-{city}-zip-{zip}-asn-{asn}-session-{id}-ttl-{minutes}. Tham khảo liên quan: 429 Too Many Requests · 502 Bad Gateway · 504 Gateway Timeout.

503 Service Unavailable: các câu hỏi thường gặp của lập trình viên

Tại sao tôi chỉ gặp 503 qua proxy mà không gặp ở nhà?

Hoặc trang đó xử lý lưu lượng qua proxy khác với lưu lượng bình thường, thường hiện trang thử thách; hoặc mục tiêu của bạn quá hẹp nên exit ít. So sánh nội dung phản hồi cả hai trường hợp. Trang thử thách nghĩa là bạn phải giảm tốc, tin nhắn proxy ngắn và bộ lọc hẹp nghĩa là bạn nên mở rộng phạm vi.

Lỗi 503 có phải là bị chặn không?

Không. Lỗi 503 thật sự là tạm thời và sẽ tự hết. Trang thử thách xuất hiện cùng 503 là bộ lọc, thường nghĩa là tốc độ hoặc mẫu truy cập trông giống máy móc. Giảm số kết nối đồng thời và thêm độ trễ. Nếu trang từ chối hoàn toàn truy cập tự động, hãy tôn trọng và tìm API hoặc dữ liệu được cấp phép.

Nên thử lại 503 bao nhiêu lần?

Thử lại 3-5 lần với giảm tải cấp số nhân là hợp lý cho một URL. Vượt quá thì nên tạm ngưng cả host thay vì thử lại từng URL, vì trang gặp sự cố không hồi phục nhanh hơn với việc thử lại. Ghi lại host và thời điểm để có thể phục hồi sau.

Các lỗi proxy khác trong tài liệu tham khảo này

Mã trạng thái HTTP

Lỗi trình duyệt và client

Lỗi kết nối và TLS

Proxy dân cư với tài liệu bao gồm các trường hợp lỗi

CrawlRelay proxy dân cư từ 0,50 US$/GB, lưu lượng không bao giờ hết hạn.

Từ 0,50 US$/GB · không cần KYC

Bắt đầu ngay