← Tất cả bài viết

Kiểm soát Redirect và Chế độ Raw Buffer

API của FourA hiện hỗ trợ giới hạn redirect có thể cấu hình và phản hồi binary thô. Hai tùy chọn thay đổi cách bạn xử lý các trường hợp góc khi cào dữ liệu trong thế giới thực.

Chuỗi redirect làm gãy scraper. Response nhị phân bị lỗi khi giải mã thành văn bản. Đây là hai vấn đề thường xuyên xảy ra khi bạn vượt qua giai đoạn "fetch một trang, parse HTML".

Chúng tôi đã bổ sung hai tùy chọn request mới để xử lý cả hai trường hợp: followRedirects và returnBuffer. Cả hai hiện đã khả dụng trên API.

Cách hoạt động

Kiểm soát redirect với followRedirects

Hầu hết các scraping API xử lý redirect dưới dạng boolean: theo dõi hoặc không. Cách này hiệu quả cho đến khi bạn gặp chuỗi redirect bị lặp, hoặc bạn cần chính response 302 trung gian để trích xuất tham số theo dõi.

followRedirects của FourA nhận một số nguyên từ 0 đến 20. Bỏ qua (hoặc đặt là 0), bạn sẽ nhận lại response redirect gốc cùng đầy đủ headers. Đặt thành 5, request sẽ theo dõi tối đa năm bước nhảy trước khi trả về kết quả cuối cùng.

curl -X POST "https://eu.api.foura.ai/v1/request" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com/short-link",
    "followRedirects": 3,
    "unblocker": true
  }'

Tùy chọn này theo dõi tối đa ba lần chuyển hướng. Nếu chuỗi kết thúc sau hai lần, bạn sẽ nhận được trang cuối cùng. Nếu dài hơn ba lần, bạn sẽ nhận được bất kỳ nội dung nào mà bước thứ ba trả về.

Sự khác biệt này quan trọng hơn bạn nghĩ. Các trang thương mại điện tử thường chuyển hướng qua các URL theo dõi trước khi đến trang sản phẩm. Bạn muốn theo dõi những liên kết đó. Nhưng các mạng tiếp thị liên kết và dịch vụ rút gọn URL đôi khi tạo ra các chuỗi dài sáu, bảy hoặc tám bước. Một số vòng lặp chuyển hướng thậm chí không bao giờ kết thúc. Việc giới hạn ở một số lượng cụ thể giúp bạn thu thập dữ liệu mà không bị kẹt trong vòng lặp vô hạn làm cạn kiệt request timeout.

Trước đây, giải pháp tạm thời là gửi một request với tính năng chuyển hướng bị tắt, phân tích cú pháp header Location theo cách thủ công và gửi một request khác. Quy trình đó tốn tối thiểu hai lệnh gọi API, độ trễ tăng gấp đôi và bạn phải tự duy trì mã nguồn. Bây giờ bạn chỉ cần một lệnh gọi kèm theo một con số.

Raw Binary Responses với returnBuffer

Khi bạn thu thập hình ảnh, tệp PDF hoặc payload protobuf, việc giải mã văn bản sẽ phá hỏng dữ liệu. Thư viện HTTP mặc định coi response là văn bản, áp dụng nhận diện bảng mã (charset detection) và âm thầm làm sai lệch mọi byte không phù hợp. Protobuf trở nên không thể đọc được. Header hình ảnh bị hỏng. Kết quả là bạn nhận được các tệp bị lỗi mà không có thông báo lỗi rõ ràng nào để giải thích nguyên nhân.

returnBuffer yêu cầu API bỏ qua hoàn toàn bước giải mã văn bản.

curl -X POST "https://eu.api.foura.ai/v1/request" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com/product-image.jpg",
    "returnBuffer": true
  }'

Response body trả về dưới dạng raw bytes (được mã hóa base64 trong JSON response). Giải mã nó ở phía bạn và bạn sẽ nhận được chính xác những gì server đã gửi. Không suy đoán charset, không chuyển đổi encoding, không hỏng dữ liệu âm thầm.

Đây là một trong những yêu cầu hỗ trợ phổ biến hơn mà chúng tôi ghi nhận: người dùng thu thập hình ảnh sản phẩm hoặc catalogue PDF nhưng nhận về các tệp không thể mở được. Cách xử lý trước đây luôn giống nhau, nhưng giờ đã có một flag chuyên dụng thay vì phải dùng giải pháp tình thế.

Tác động

Cả hai tính năng đều giúp giảm số lượng API call trên mỗi job. followRedirects loại bỏ các vòng lặp theo dõi redirect thủ công. returnBuffer loại bỏ chu kỳ "fetch, phát hiện file hỏng, fetch lại với cấu hình khác".

Đối với các target có nhiều redirect (link affiliate, dịch vụ rút gọn URL, chuỗi tracking thương mại điện tử), chúng tôi nhận thấy số lượng request giảm 40-60% trong các thử nghiệm ban đầu khi người dùng chuyển từ xử lý redirect thủ công sang followRedirects. Và đối với các tác vụ thu thập file nhị phân (hình ảnh sản phẩm, tải tài liệu), returnBuffer biến một quy trình xử lý phức tạp thành một tùy chọn duy nhất (kết quả ban đầu).

Đây không phải là những tính năng hào nhoáng. Chúng là những thứ bạn không để tâm tới cho đến khi scraper của bạn bị lỗi lúc 3 giờ sáng chỉ vì một trang web thêm một bước redirect mới vào quy trình checkout của họ.

Dành cho Power Users

Kết hợp followRedirects với response validation để kiểm soát chính xác các chuỗi redirect. Follow redirect, nhưng fail request nếu đích đến cuối cùng bị chặn:

curl -X POST "https://eu.api.foura.ai/v1/request" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com/product/12345",
    "followRedirects": 5,
    "unblocker": true,
    "validate": {
      "status": { "fail": [403, 503] },
      "data": { "fail": ["Access Denied", "captcha"] }
    }
  }'

Tùy chọn này theo dõi tối đa năm lượt chuyển hướng, sau đó kiểm tra response cuối cùng. Nếu trang web chuyển hướng bạn đến trang xác minh hoặc trang chặn truy cập, request sẽ thất bại một cách rõ ràng. Không có dữ liệu rác cần lọc ở các bước xử lý sau.

Để thu thập dữ liệu nhị phân, hãy kết hợp returnBuffer với các request HEAD khi bạn cần kiểm tra loại nội dung trước khi tải xuống các tệp lớn. FourA xử lý HEAD chính xác, vì vậy bạn có thể kiểm tra header mà không cần tải body. Kiểm tra Content-Type, quyết định xem có đáng tải xuống hay không, sau đó thực hiện request đầy đủ với returnBuffer: true.

Và nếu bạn đang sử dụng browser tasks cho các mục tiêu phụ thuộc nhiều vào JavaScript, lưu ý rằng các tùy chọn này áp dụng cho engine HTTP trực tiếp. Các browser request xử lý chuyển hướng thông qua điều hướng tích hợp của trình duyệt, vốn mặc định theo dõi chuyển hướng mà không có giới hạn.

Kế hoạch tiếp theo

Chúng tôi đang phát triển để cung cấp thêm nhiều quyền kiểm soát ở cấp độ request qua API: phân giải DNS tùy chỉnh, tinh chỉnh timeout cho từng giai đoạn, và các tùy chọn xử lý chứng chỉ. Mục tiêu là kiểm soát toàn diện hồ sơ trình duyệt thông qua một giao diện REST gọn gàng, không tốn chi phí vận hành hạ tầng.

Nếu bạn cần một tùy chọn cụ thể, chúng tôi luôn sẵn sàng lắng nghe. dashboard đã hiển thị hiệu suất các request của bạn với những tùy chọn mới này, giúp bạn có thể tự mình đo lường sự khác biệt.