Một lập trình viên sáng tạo đã tìm ra cách thức bất thường để đối phó với các bot thu thập dữ liệu web tích cực bằng cách tạo ra những hình ảnh JPEG giả theo yêu cầu. Giải pháp này xuất hiện từ việc quan sát cách các bot săn lùng hình ảnh đang tuyệt vọng tìm kiếm nội dung trên một ứng dụng web có tên Spigot, ứng dụng tạo ra các trang web giả để bẫy những crawler lạm dụng.
Vấn đề với các Bot khao khát hình ảnh
Lập trình viên nhận thấy rằng ImageSiftBot đang thực hiện hàng nghìn yêu cầu mỗi giờ đến Spigot, tìm kiếm những hình ảnh không tồn tại. Thay vì đơn giản chặn bot, họ quyết định giúp đỡ bằng cách tạo ra những hình ảnh giả sẽ lãng phí tài nguyên của crawler. Thách thức là thực hiện điều này mà không tiêu tốn quá nhiều sức mạnh CPU của máy chủ, vì nén hình ảnh thực sự rất tốn kém về mặt tính toán.
Thống kê hoạt động của Crawler
- ImageSiftBot : khoảng 15.000 hình ảnh giả được tải xuống mỗi ngày
- Tổng lưu lượng truy cập của Spigot : hơn 1 triệu trang được phục vụ hàng ngày
- Tích hợp hình ảnh giả: khoảng 60% các trang được tạo hiện bao gồm các file JPEG giả
- Nhiều crawler lớn bị ảnh hưởng: bot của Meta , AmazonBot , GPTBot
Giải pháp kỹ thuật thông minh
Đột phá đến từ việc hiểu cách nén JPEG hoạt động. Vì dữ liệu nén trông về cơ bản là ngẫu nhiên, lập trình viên nhận ra họ có thể tạo ra các JPEG giả bằng cách sử dụng các template file JPEG thực và điền vào các phần dữ liệu hình ảnh nén bằng các byte ngẫu nhiên. Cách tiếp cận này yêu cầu sức mạnh CPU tối thiểu trong khi vẫn tạo ra các file mà trình duyệt và crawler sẽ chấp nhận như những hình ảnh hợp lệ.
Quá trình này bao gồm việc quét các file JPEG hiện có để trích xuất các thành phần cấu trúc của chúng - header, metadata và thông tin chunk - trong khi loại bỏ dữ liệu pixel thực tế. Điều này tạo ra các template nhẹ có thể được điền bằng dữ liệu ngẫu nhiên để tạo ra những hình ảnh giả với các kích thước và định dạng khác nhau.
JPEG: Một định dạng hình ảnh phổ biến sử dụng nén để giảm kích thước file Template: Một cấu trúc được tạo sẵn có thể được điền bằng nội dung khác nhau
Hiệu suất và hiệu quả
Kết quả ấn tượng từ góc độ hiệu suất. Hệ thống có thể tạo ra khoảng 900 hình ảnh giả mỗi giây, tổng cộng khoảng 190 megabyte mỗi giây nội dung giả. Điều này vượt xa tốc độ kết nối internet của máy chủ, khiến nó trở nên thực tế không giới hạn từ góc độ băng thông.
Thảo luận cộng đồng tiết lộ một số quan sát thú vị về những hình ảnh được tạo ra. Người dùng lưu ý rằng các JPEG giả có xu hướng hiển thị với độ lệch màu xanh lá cây, điều này có thể phục vụ như một phương pháp phát hiện cho các crawler tinh vi. Tuy nhiên, hầu hết các crawler dường như không quan tâm đến chất lượng hình ảnh hoặc lỗi nhỏ miễn là chúng có thể tải xuống và xử lý các file.
Chỉ số Hiệu suất
- Tốc độ tạo: ~900 hình ảnh JPEG giả mỗi giây
- Thông lượng dữ liệu: ~190 MB/giây nội dung giả
- Lưu trữ mẫu: 514 mẫu JPEG từ nguồn 150MB được giảm xuống còn <500KB
- Cải thiện tỷ lệ lỗi: Mã Huffman không hợp lệ giảm từ >90% xuống <4% với bit masking
Tác động rộng hơn đến việc thu thập dữ liệu web
Kỹ thuật này đã chứng minh hiệu quả chống lại nhiều crawler lớn, bao gồm bot của Meta, AmazonBot và GPTBot, tất cả đều đã bắt đầu thu thập những hình ảnh giả. Điều này đặt ra câu hỏi về cuộc chạy đua vũ trang giữa những người tạo nội dung và các hoạt động thu thập dữ liệu tích cực.
Một số thành viên cộng đồng đã rút ra những điểm tương đồng với các dự án chống spam cũ như Project Honey Pot, dự án sử dụng các kỹ thuật lừa dối tương tự để xác định các web crawler độc hại và kẻ thu thập email. Cách tiếp cận này đại diện cho sự chuyển dịch từ việc đơn giản chặn lưu lượng không mong muốn sang việc tích cực lãng phí tài nguyên của các hệ thống lạm dụng.
Lập trình viên đã tinh chỉnh kỹ thuật bằng cách áp dụng bit mask cho dữ liệu ngẫu nhiên, giảm xác suất tạo ra các file JPEG rõ ràng không hợp lệ từ hơn 90% xuống dưới 4%. Cải tiến này duy trì yêu cầu CPU thấp trong khi làm cho những hình ảnh giả thuyết phục hơn đối với các hệ thống tự động.
Giải pháp sáng tạo này chứng minh cách hiểu biết về định dạng file và nén có thể được sử dụng một cách phòng thủ chống lại các hoạt động thu thập dữ liệu web tốn nhiều tài nguyên, đảo ngược tình thế với các hệ thống tiêu thụ băng thông và tài nguyên máy chủ mà không có sự cho phép.
Tham khảo: 25th March 2025: Faking a JPEG