Chuỗi redirect làm hỏng scraper. Phản hồi binary bị lỗi khi được giải mã dưới dạng văn bản. Hai vấn đề liên tục xuất hiện khi bạn vượt qua giai đoạn "tải trang, phân tích HTML".
Chúng tôi đã ra mắt hai tùy chọn request mới để xử lý cả hai: followRedirects và returnBuffer. Chúng hiện đang live trên API.
Cách Hoạt Động
Kiểm soát Redirect với followRedirects
Hầu hết các API cào dữ liệu xử lý redirect dưới dạng boolean: theo dõi chúng hoặc không. Điều đó hoạt động cho đến khi bạn gặp phải chuỗi redirect bị lặp hoặc bạn cần chính phản hồi 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 nó (hoặc đặt 0) và bạn nhận lại phản hồi redirect thô, bao gồm tất cả header. Đặt thành 5 và request theo dõi tối đa năm bước nhảy trước khi trả về bất cứ thứ gì nó đáp xuống.
curl -X POST "https://eu.api.foura.ai/v1/request" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com/short-link",
"followRedirects": 3,
"unblocker": true
}'
Lệnh này theo dõi tối đa ba redirect. Nếu chuỗi giải quyết trong hai bước, bạn sẽ có trang cuối cùng. Nếu dài hơn ba bước, bạn nhận được bất cứ thứ gì bước nhảy thứ ba trả về.
Sự khác biệt quan trọng hơn bạn nghĩ. Các trang thương mại điện tử redirect qua URL theo dõi trước khi đến trang sản phẩm. Bạn muốn theo dõi chúng. Nhưng mạng lưới liên kết và trình rút gọn URL đôi khi tạo ra các chuỗi dài sáu, bảy, tám bước. Và một số vòng lặp redirect không bao giờ giải quyết. Việc giới hạn ở một số cụ thể có nghĩa là bạn thu thập dữ liệu mà không bị mắc kẹt trong một vòng lặp vô hạn đốt cháy timeout request của bạn.
Trước đây, cách giải quyết là gửi request với các redirect bị vô hiệu hóa, phân tích thủ công header Location và gửi một request khác. Tối thiểu là hai lệnh gọi API, độ trễ gấp đôi và mã bạn phải duy trì. Bây giờ là một cuộc gọi với một số.
Phản hồi Binary Thô với returnBuffer
Khi bạn đang thu thập hình ảnh, PDF hoặc payload protobuf, việc giải mã văn bản phá hủy dữ liệu. Thư viện HTTP cho rằng phản hồi là văn bản, áp dụng phát hiện charset và âm thầm làm hỏng mọi byte không khớp. Protobuf trở nên không thể đọc được. Header hình ảnh bị hỏng. Bạn kết thúc với các tệp bị lỗi và không có thông báo lỗi rõ ràng để giải thích tại sao.
returnBuffer bảo API bỏ qua hoàn toàn việc giải mã văn bản.
curl -X POST "https://eu.api.foura.ai/v1/request" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com/product-image.jpg",
"returnBuffer": true
}'
Phần thân phản hồi trả về dưới dạng byte thô (được mã hóa base64 trong các phản hồi JSON). Giải mã nó ở phía bạn và bạn có chính xác những gì máy chủ gửi. Không có giả định về charset, không có chuyển đổi mã hóa, không có lỗi âm thầm.
Đây là một trong những ticket hỗ trợ phổ biến hơn mà chúng tôi đã thấy: người dùng thu thập hình ảnh sản phẩm hoặc danh mục PDF và nhận các tệp không mở được. Cách khắc phục luôn giống nhau, nhưng bây giờ có một cờ cho nó thay vì cách khắc phục tạm thời.
Tác động
Cả hai tính năng đều giảm số lượng lệnh gọi API 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ỳ "tải, nhận ra nó bị lỗi, tải lại với các cài đặt khác".
Đối với các mục tiêu có nhiều redirect (link liên kết, trình rút gọn URL, chuỗi theo dõi thương mại điện tử), chúng tôi đã thấy số lượng request giảm 40-60% trong thử nghiệm sớm 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 binary (hình ảnh sản phẩm, tải xuống tài liệu), returnBuffer biến cách khắc phục nhiều bước 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 nghĩ đến cho đến khi scraper của bạn bị hỏng lúc 3 giờ sáng vì một trang web đã thêm một bước nhảy redirect bổ sung vào quy trình thanh toán của họ.
Dành cho Power User
Kết hợp followRedirects với xác thực phản hồi để kiểm soát chính xác các chuỗi redirect. Theo dõi redirect, nhưng làm thất bại request nếu điểm đến cuối cùng chạm tường:
curl -X POST "https://eu.api.foura.ai/v1/request" \
-H "Authorization: Bearer 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"] }
}
}'
Lệnh này theo dõi tối đa năm redirect, sau đó kiểm tra phản hồi cuối cùng. Nếu trang web redirect bạn đến một trang CAPTCHA hoặc tường bị từ chối truy cập, request sẽ thất bại một cách gọn gàng. Không có dữ liệu rác để lọc ra sau đó.
Đối với bộ sưu tập binary, ghép nối returnBuffer với 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 một cách chính xác, vì vậy bạn có thể kiểm tra header mà không cần tìm nạp phần thân. Kiểm tra Content-Type, quyết định xem nó 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 có nhiều JavaScript, hãy lưu ý rằng các tùy chọn này áp dụng cho công cụ HTTP trực tiếp. Các request của trình duyệt xử lý redirect thông qua tính năng điều hướng tích hợp của trình duyệt, tính năng này theo dõi chúng theo mặc định mà không có giới hạn.
Tiếp Theo Là Gì
Chúng tôi đang làm việc để hiển thị thêm các kiểm soát cấp request thông qua API: phân giải DNS tùy chỉnh, điều chỉnh timeout theo từng giai đoạn và các tùy chọn xử lý chứng chỉ. Mục tiêu là toàn bộ sức mạnh unblocker thông qua giao diện REST gọn gàng, không có rủi ro chi phí cơ sở hạ tầng.
Nếu có một tùy chọn cụ thể bạn cần, chúng tôi đang lắng nghe. Dashboard đã hiển thị hiệu suất request của bạn với các tùy chọn mới này, vì vậy bạn có thể tự đo lường sự khác biệt.