Bỏ để qua phần nội dung

Mã trạng thái 503: Kẻ thù của kẻ quét web (và cách đánh bại nó)

  • by
  • Blog
  • Đã đọc 11 phút

Nếu bạn đã dành nhiều thời gian trên web, chắc chắn bạn đã gặp phải lỗi "Dịch vụ 503 không khả dụng" đáng sợ. Đối với người dùng internet bình thường, đó là một điều khó chịu nhỏ. Nhưng đối với những người quét web, đây có thể là trở ngại lớn cho việc thu thập dữ liệu họ cần.

Theo dữ liệu từ Pingdom, lỗi 503 là mã trạng thái 5xx phổ biến thứ hai, chiếm gần 25% tổng số phản hồi lỗi máy chủ. Và trong một cuộc khảo sát với hơn 1,000 nhà phát triển, 38% nói rằng việc khắc phục và giải quyết lỗi 503 là một trong những phần khó chịu nhất trong công việc của họ.

Là một người quét web chuyên nghiệp, bạn không thể để lỗi 503 làm hỏng dự án của mình. Trong hướng dẫn chuyên sâu này, chúng tôi sẽ phân tích chính xác ý nghĩa của mã trạng thái 503, nguyên nhân gây ra chúng và quan trọng nhất là các chiến lược đã được chứng minh để tránh và khắc phục chúng. Hãy đi sâu vào!

Giải mã lỗi 503: Tổng quan

Trước khi nói về việc tránh lỗi 503, điều quan trọng là phải hiểu ý nghĩa thực sự của chúng.

Mã trạng thái 503 là mã trạng thái phản hồi HTTP cho biết máy chủ tạm thời không thể xử lý yêu cầu. Điều này thường xảy ra do máy chủ bị quá tải hoặc ngừng hoạt động để bảo trì.

Chính thức, mô tả cho mã trạng thái 503 là "Dịch vụ không khả dụng". Bạn sẽ thường thấy thông báo này hiển thị trên các trang lỗi cùng với các thông báo như:

  • "Máy chủ tạm thời không thể đáp ứng yêu cầu của bạn do thời gian ngừng bảo trì hoặc vấn đề về dung lượng. Vui lòng thử lại sau."
  • "Dịch vụ không khả dụng. Vui lòng thử lại sau."
  • "Trang web này đang nhận được nhiều lưu lượng truy cập hơn bình thường. Vui lòng chờ, chúng tôi sẽ quay lại ngay!"

Một điều quan trọng cần lưu ý là lỗi 503 có nghĩa cụ thể là bản thân máy chủ đang hoạt động bình thường nhưng vì lý do nào đó, nó không thể xử lý yêu cầu hiện tại. Điều này khác với các lỗi 5xx khác cho biết lỗi máy chủ thực tế:

Mã trạng tháiHọ tênMô tả
500Server ErrorLỗi chung cho biết tình trạng không mong muốn trên máy chủ
501Không thực hiệnServer không hỗ trợ chức năng thực hiện yêu cầu
502Bad CổngMáy chủ đóng vai trò là proxy/cổng đã nhận được phản hồi không hợp lệ từ nguồn gốc
503Không có sẵn dịch vụServer bị quá tải hoặc ngừng hoạt động để bảo trì
504Cổng TimeoutMáy chủ cổng không nhận được phản hồi kịp thời từ máy chủ gốc

Như bạn có thể thấy, lỗi 503 rơi vào vùng màu xám. Bản chất máy chủ không bị hỏng, chỉ là nó không sẵn sàng để phản hồi vào thời điểm đó. Đây là điểm khác biệt chính mà chúng ta sẽ quay lại sau.

Phân tích nguyên nhân gây ra lỗi 503

Vậy điều gì thực sự khiến máy chủ trả về lỗi 503? Có một số tình huống phổ biến:

  1. Tài nguyên máy chủ bị quá tải
    Mọi máy chủ đều có tài nguyên hữu hạn – CPU, bộ nhớ, I/O ổ đĩa, băng thông mạng, v.v. Khi khối lượng yêu cầu gửi đến vượt quá mức mà các tài nguyên đó có thể xử lý, máy chủ có thể bắt đầu từ chối các kết nối mới để tránh sự cố hoàn toàn. Nó sẽ phản hồi bằng 503 để báo hiệu rằng nó quá bận để thực hiện yêu cầu ngay bây giờ.

  2. Bảo trì theo lịch trình
    Nhiều trang web có khoảng thời gian bảo trì định kỳ để triển khai các bản cập nhật, chạy bản sao lưu hoặc thực hiện các hoạt động bảo trì khác. Trong thời gian này, trang web có thể không khả dụng một phần hoặc hoàn toàn. Các yêu cầu sẽ không thành công với lỗi 503 cho đến khi quá trình bảo trì hoàn tất và máy chủ được khởi động lại.

  3. Giảm thiểu tấn công DDoS
    Khi một trang web bị tấn công từ chối dịch vụ phân tán (DDoS), nó có thể kích hoạt các quy tắc chặn hoặc giới hạn tốc độ khẩn cấp để chống lại lưu lượng truy cập độc hại. Điều này có thể khiến các yêu cầu hợp pháp bị vướng vào làn sóng chéo và bị từ chối với lỗi 503.

  4. Khối tường lửa ứng dụng web
    Nhiều trang web định tuyến các yêu cầu thông qua Tường lửa ứng dụng web (WAF) để bảo vệ khỏi các cuộc tấn công phổ biến như chèn SQL và tạo tập lệnh chéo trang. Nếu một yêu cầu có vẻ đáng ngờ, WAF có thể chặn yêu cầu đó và trả về lỗi 503.

  5. CAPTCHA dịch vụ chống Bot
    Một số trang web sử dụng CAPTCHA và các thử nghiệm phản hồi thử thách khác để cố gắng lọc ra các bot giả mạo con người. Trình dọn dẹp web tự động có thể bị mắc kẹt bởi những điều này, dẫn đến lỗi 503.

Theo Báo cáo Bot xấu năm 2022 của Imperva, 27.7% tổng lưu lượng truy cập trang web đến từ bot và 30.2% lưu lượng truy cập từ bot đó là độc hại. Không có gì ngạc nhiên khi nhiều trang web hơn bao giờ hết đang bị phá hủy, trước sự thất vọng của những kẻ phá hoại web.

Xác định nguyên nhân gốc rễ của lỗi 503 CỦA BẠN

Khi trình quét web của bạn bắt đầu không trả về gì ngoài lỗi 503, đừng hoảng sợ. Bước đầu tiên là xác định nguyên nhân cơ bản. Có hai khả năng chính:

  1. Trang web hoàn toàn ngừng hoạt động hoặc không thể truy cập được đối với mọi người
  2. Trang web có sẵn nhưng đã chặn công cụ quét cụ thể của bạn

Để tìm hiểu xem bạn đang gặp phải trường hợp nào, hãy thử duyệt tới URL trả về lỗi 503 trong trình duyệt web thông thường hoặc từ proxy ở khu vực địa lý khác. Nếu bạn có thể truy cập trang web một cách bình thường, điều đó có nghĩa là lỗi 503 dành riêng cho địa chỉ IP đang tìm kiếm của bạn.

Bạn cũng có thể sử dụng các công cụ giám sát trang web của bên thứ ba để kiểm tra trạng thái chung của trang web:

  • DownDetector theo dõi các sự cố do người dùng báo cáo đối với các trang web phổ biến
  • UptimeRobot và Pingdom sẽ giám sát URL từ nhiều địa điểm trên toàn cầu
  • IsItDownRightNow và CurrentDown cung cấp khả năng kiểm tra trạng thái nhanh chóng

Nếu một trong những điều này hiển thị trang web không hoạt động đối với tất cả mọi người, bạn sẽ phải đợi cho đến khi họ giải quyết được vấn đề của mình. Không có cách viết mã thông minh nào có thể quét được một trang web hoàn toàn ngoại tuyến.

Nhưng nếu trang web trông ổn đối với phần còn lại của thế giới, điều đó có nghĩa là bạn sẽ cần tập trung vào việc làm cho công cụ quét của mình bắt chước người dùng bình thường tốt hơn.

Chiến thuật đã được thử nghiệm trong trận chiến để tránh lỗi 503

Tại thời điểm này, bạn đã xác định rằng các yêu cầu của trình quét của bạn đang được chọn ra và bị chặn do lỗi 503. Bạn có thể làm gì? Dưới đây là một số kỹ thuật đã được chứng minh để giúp công cụ quét web của bạn trở lại với sự ưu ái tốt đẹp của trang web:

  1. Làm chậm cuộn của bạn
    Lý do phổ biến nhất khiến các trang web chặn người dọn dẹp là vì họ thực hiện quá nhiều yêu cầu một cách nhanh chóng. Việc tấn công một trang web nhanh hơn mức mà con người có thể duyệt qua là điều cực kỳ đáng ngờ. Tuyến phòng thủ đầu tiên của bạn phải là điều tiết những người dọn dẹp của bạn để chỉ yêu cầu tối đa một trang cứ sau 10-15 giây. Ngoài ra, hãy cân nhắc việc thêm độ trễ ngẫu nhiên giữa các yêu cầu để làm cho thời gian trông tự nhiên hơn.

  2. Phân phối tải
    Ngay cả khi có thêm độ trễ, việc thực hiện hàng trăm hoặc hàng nghìn yêu cầu từ một địa chỉ IP trong thời gian ngắn vẫn là một cảnh báo nguy hiểm. Việc phân bổ các yêu cầu trên một nhóm proxy luân phiên làm cho lưu lượng truy cập của bạn trông giống như đến từ nhiều người dùng hợp pháp khác nhau ở các vị trí khác nhau. Việc sử dụng proxy từ các mạng con khác nhau và thậm chí các nhà cung cấp khác nhau sẽ làm tăng thêm khả năng ngụy trang.

  3. Hòa nhập với con người
    Mọi thứ về yêu cầu của trình quét của bạn phải bắt chước một người dùng bình thường sử dụng trình duyệt thông thường. Điều đó có nghĩa là đặt tiêu đề Tác nhân người dùng chung phù hợp với khách truy cập thông thường của trang web. Nó cũng có nghĩa là bao gồm các tiêu đề thông thường như Ngôn ngữ chấp nhận và Người giới thiệu. Hãy nhớ đặt một hộp cookie để lưu trữ và gửi lại bất kỳ cookie nào mà trang web gặp sự cố.

  4. Các bẫy Bot phổ biến ở Sidestep
    Tránh các kiểu thu thập dữ liệu cực kỳ kém hiệu quả đối với con người nhưng lại phổ biến đối với bot, chẳng hạn như thu thập dữ liệu nhanh chóng mọi liên kết trên mỗi trang. Thay vào đó, hãy sắp xếp các phần lưu trữ của bạn xung quanh hàng trung tâm của các trang mục tiêu. Tôn trọng các quy tắc của robots.txt yêu cầu các bot hoạt động tốt tránh xa. Và đừng đọc đi đọc lại nhiều trang giống nhau.

Phục hồi từ lỗi 503 không thể tránh khỏi

Đôi khi, ngay cả khi đã áp dụng tất cả các biện pháp phòng ngừa phù hợp, máy cạo của bạn vẫn gặp lỗi 503. Có thể trang web có lưu lượng truy cập hợp pháp tăng đột ngột hoặc có thể một số yêu cầu của bạn đã vô tình được chuyển qua một máy chủ quá tải.

Khi một yêu cầu không thành công, đừng thử lại ngay lập tức. Việc thử lại liên tục là một tín hiệu bot lớn và có thể sẽ dẫn đến việc IP của bạn bị cấm. Thay vào đó, hãy sử dụng thời gian chờ theo cấp số nhân:

  1. Đợi 1 giây và thử lại
  2. Nếu vẫn thất bại, đợi 2 giây và thử lại
  3. Nếu vẫn thất bại, đợi 4 giây và thử lại
  4. Nếu vẫn thất bại, đợi 8 giây và thử lại
  5. Và cứ thế, tối đa 5 lần thử lại

Đây là hàm Python thực hiện điều này:

import time
import random

def retry_with_exp_backoff(func, max_retries=5):
  for n in range(max_retries):
    try:
      return func()
    except Exception:
      if n == max_retries - 1:
        raise
      sleep_seconds = 2 ** n + random.uniform(0, 1)  
      time.sleep(sleep_seconds)

Độ trễ phân đoạn ngẫu nhiên giúp xen kẽ các lần thử lại để bạn không có nhiều người dọn dẹp đều thử lại vào cùng một giây.

Nếu bạn vẫn gặp lỗi 503 sau 5 lần thử lại, tốt nhất bạn nên tiếp tục ngay bây giờ và thử lại sau. Có thể nhấn vào một phần khác của trang web trong một thời gian hoặc chỉ tạm dừng hoàn toàn trình quét của bạn. Bạn không muốn tỏ ra quá kiên trì.

Tùy chọn hạt nhân: Sử dụng trình duyệt không đầu

Đối với các trang web có hệ thống phòng thủ chống bot đặc biệt tích cực, đôi khi cách duy nhất để tránh lỗi 503 là chuyển sang chế độ ẩn hoàn toàn với trình duyệt không có giao diện người dùng.

Các công cụ như Puppeteer và Playwright cho phép bạn điều khiển trình duyệt thực theo chương trình. Không giống như Selenium, chúng được thiết kế để chạy không cần đầu theo mặc định và có các thủ thuật bổ sung để mô phỏng hành vi của con người:

  • Tạo chuyển động và nhấp chuột giả
  • Ngẫu nhiên hóa kích thước khung nhìn và thông số thiết bị
  • Chặn và sửa đổi yêu cầu/phản hồi

Đây là cách gần nhất mà bạn có thể làm để khiến cái cạp của bạn không thể phân biệt được với người dùng thực. Nhược điểm là nó khá tốn tài nguyên so với việc gửi các yêu cầu đơn giản. Nhưng đối với dữ liệu quan trọng của nhiệm vụ trên các trang web thù địch với bot, điều đó đáng để đánh đổi.

Tôi sẽ thật thiếu sót nếu không thừa nhận những tác động tiềm ẩn về mặt pháp lý và đạo đức của việc phá vỡ các biện pháp đối phó với bot của một trang web.

Nhìn chung, các tòa án đã phán quyết rằng việc thu thập thông tin có thể truy cập công khai không vi phạm Đạo luật Lừa đảo và Lạm dụng Máy tính. Trong vụ kiện mang tính bước ngoặt năm 2019 của HiQ Labs kiện LinkedIn, Tòa phúc thẩm khu vực 9 của Hoa Kỳ cho rằng việc thu thập hồ sơ LinkedIn công khai không phải là "truy cập trái phép" vì dữ liệu đó không nằm sau quá trình đăng nhập.

Tuy nhiên, một số công ty đã đưa ra thành công các khiếu nại về vi phạm bản quyền, xâm phạm danh mục trò chuyện, vi phạm hợp đồng và các nguyên nhân hành động khác chống lại những kẻ phá hoại web. Việc vượt qua các hạn chế kỹ thuật để truy cập một trang web sau khi nhận được thư ngừng và ngừng hoạt động đặc biệt rủi ro về mặt pháp lý.

Ngoài ra còn có lập luận cho rằng việc cố tình vượt qua lỗi giới hạn tỷ lệ 503 để tiếp tục tấn công một trang web là đi ngược lại các chuẩn mực xã hội trên internet và lãng phí tài nguyên của chủ sở hữu trang web. Chỉ vì bạn có thể không phải lúc nào cũng có nghĩa là bạn nên làm như vậy.

Là một người quét web có đạo đức, bạn phải luôn cố gắng tuân theo các quy tắc của robots.txt, tôn trọng hợp đồng ngầm về Điều khoản dịch vụ của trang web và tránh tạo gánh nặng quá mức cho máy chủ của họ. Đôi khi, tốt hơn là bạn nên cố gắng làm việc trực tiếp với chủ sở hữu trang web để lấy dữ liệu bạn cần thông qua các phương tiện được phê duyệt như API và kết xuất dữ liệu.

Tương lai của việc quét web so với các biện pháp phòng thủ chống Bot

Trò chơi mèo vờn chuột giữa những kẻ phá hoại web và những người điều hành trang web đang cố gắng chặn chúng không có dấu hiệu chậm lại.

Khi ngày càng có nhiều công ty nhận ra giá trị của dữ liệu web, động cơ xây dựng các công cụ dọn dẹp phức tạp chưa bao giờ cao hơn thế. Đồng thời, nhiều trang web đang áp dụng các biện pháp chống bot chặt chẽ hơn để bảo vệ bản thân khỏi các tác nhân độc hại.

Các mô hình học máy đang được sử dụng ở cả hai phía – bởi những người dọn dẹp để tìm hiểu các kiểu duyệt web của con người và bởi các trang web để tìm hiểu các mẫu yêu cầu giống như bot. Chúng ta có thể sẽ thấy cuộc chạy đua vũ trang AI này nóng lên, với các bot cố gắng bắt chước con người và các máy dò bot cố gắng vạch trần sự ngụy trang của chúng.

Bối cảnh pháp lý xung quanh việc thu thập dữ liệu trên web cũng vẫn đang phát triển, với nhiều câu hỏi mở xung quanh việc việc thu thập thông tin vượt quá ranh giới truy cập trái phép ở đâu. Chúng tôi chắc chắn sẽ thấy nhiều phán quyết của CFAA hơn như HiQ Labs v. LinkedIn, hy vọng sẽ mang lại sự rõ ràng hơn cho cộng đồng quét web.

Hiện tại, lỗi 503 vẫn là nguyên nhân tồn tại của nhiều người dọn dẹp. Nhưng bằng cách hiểu ý nghĩa của nó, sử dụng các kỹ thuật điều tiết thông minh và mượn một số thủ thuật từ các bot lén lút hơn, bạn có thể khắc phục nó và duy trì luồng dữ liệu.

Những điểm mấu chốt để tránh lỗi 503

Chúng tôi đã đề cập rất nhiều vấn đề trong quá trình tìm hiểu sâu về lỗi 503 Dịch vụ không khả dụng. Dưới đây là những điểm chính cần nhớ:

  1. Lỗi 503 có nghĩa là máy chủ của trang web đang hoạt động bình thường nhưng bị quá tải hoặc không thể xử lý yêu cầu của bạn tại thời điểm đó.

  2. Luôn xác định xem 503 chỉ dành cho bạn hay toàn bộ trang web trước khi chẩn đoán thêm.

  3. Nguyên nhân phổ biến nhất gây ra lỗi 503 là có quá nhiều yêu cầu quá nhanh, bảo trì máy chủ, bảo vệ DDoS, quy tắc tường lửa ứng dụng web và CAPTCHA chống bot.

  4. Việc thêm độ trễ, sử dụng xoay vòng proxy, giả mạo tiêu đề yêu cầu giống con người và thay đổi kiểu thu thập thông tin có thể giúp giữ cho công cụ quét của bạn luôn nằm trong tầm kiểm soát.

  5. Thử lại các yêu cầu không thành công với độ trễ theo cấp số nhân để xử lý các lỗi 503 tạm thời mà không trông quá giống bot.

  6. Các trình duyệt không đầu như Puppeteer và Playwright là tuyến phòng thủ cuối cùng chống lại các hệ thống chống bot tinh vi nhất.

  7. Hãy lưu ý đến vùng xám pháp lý tiềm ẩn xung quanh việc tránh lỗi 503 và điều khoản dịch vụ.

  8. Cuộc chạy đua vũ trang về công nghệ giữa những người quét web và các biện pháp chống bot sẽ chỉ tăng tốc.

Bằng cách làm theo những đề xuất này và thực hiện một số biện pháp kiềm chế và hiểu biết thông thường, bạn có thể khắc phục lỗi 503 và nhận được dữ liệu cần thiết để cung cấp năng lượng cho ứng dụng của mình. Chúc mừng cạo!

Tham gia vào cuộc đối thoại

Chúng tôi sẽ không công khai email của bạn. Các ô đánh dấu * là bắt buộc *