Trong bối cảnh công nghệ web scraping và chống scraping phát triển nhanh chóng như ngày nay, các kỹ thuật truyền thống như giả mạo User-Agent và bỏ qua JavaScript không còn đủ để đối phó với các cơ chế phát hiện ngày càng tinh vi. Khi ngày càng nhiều trang web chuyển sang giao thức HTTP/2 hiệu quả, việc nhận dạng dấu vân tay HTTP/2 đã âm thầm nổi lên như một vũ khí chống scraping mạnh mẽ.
Bài viết này, bạn sẽ học được:
Hãy làm theo lời tôi và tìm hiểu thêm!
HTTP/2 là thế hệ thứ hai của giao thức HTTP. Kể từ khi phát hành vào năm 2015, khoảng một nửa số trang web đã áp dụng nó. Ví dụ:
Bạn có thể kiểm tra xem một yêu cầu sử dụng HTTP/1.1 hay HTTP/2 (h2) bằng cách nhấn F12 trong trình duyệt của bạn và xem tab Network.
HTTP/2 cải thiện hiệu suất tải trang thông qua đa luồng, nén tiêu đề (HPACK) và sử dụng lại kết nối. Không giống như bản chất tuần tự của HTTP/1.1, HTTP/2 xử lý nhiều yêu cầu và phản hồi đồng thời trên một kết nối duy nhất.
Các tính năng chính bao gồm:
Nhận dạng dấu vân tay HTTP/2 là một kỹ thuật xác định khách hàng bằng cách phân tích sự khác biệt tinh tế trong hành vi của họ khi sử dụng giao thức HTTP/2. Những khác biệt này thường nằm ở cách giao thức được triển khai. Các trình duyệt, thư viện scraping và công cụ tự động khác nhau sẽ hiển thị các đặc điểm riêng biệt ở mức thấp.
Nói một cách đơn giản:
Thay vì xác định bạn thông qua User-Agent của bạn, nó quan sát cách khách hàng của bạn hoạt động ở lớp HTTP/2 để xác định xem bạn có phải là "script giả làm trình duyệt" hay không.
HTTP/2 truyền các khung nhị phân bao gồm nhiều trường.
Mỗi khách hàng triển khai các khung này — giá trị, thứ tự, tổ hợp — khác nhau. Hệ thống chống scraping xây dựng cơ sở dữ liệu dấu vân tay dựa trên điều này để xác định:
requests + httpx
của Python khôngBạn có thể xem dấu vân tay HTTP/2 của mình trên trang kiểm tra HTTP/2 của BrowserLeaks.
Các chỉ số dấu vân tay phổ biến bao gồm:
Bởi vì nhận dạng dấu vân tay HTTP/2 đi sâu vào lớp giao thức, nên việc giả mạo nó khó hơn nhiều so với việc phát hiện dựa trên User-Agent hoặc JavaScript. Bằng cách phân tích khung SETTINGS, thứ tự khung, cập nhật cửa sổ và khung ưu tiên, máy chủ có thể xác định chính xác xem bạn có đang sử dụng công cụ scraping hay không.
Tệ hơn nữa, việc phát hiện thường xảy ra trước khi nội dung yêu cầu của bạn thậm chí còn được gửi — nghĩa là bạn có thể bị chặn trước khi gửi bất kỳ dữ liệu nào.
Nhận dạng dấu vân tay trình duyệt sử dụng JavaScript phía trước để phân tích phiên bản trình duyệt, plugin, phông chữ và hơn thế nữa. Ngược lại, nhận dạng dấu vân tay HTTP/2 tập trung vào các chi tiết giao thức cấp thấp như thứ tự khung SETTINGS, kích thước cửa sổ và cài đặt ưu tiên. Những điều này gắn liền với hệ điều hành, thư viện TLS và hành vi ở cấp độ kernel — làm cho chúng khó giả mạo hơn nhiều.
Kết quả là, nhận dạng dấu vân tay HTTP/2 kín đáo hơn và khó bỏ qua hơn so với nhận dạng dấu vân tay trình duyệt.
Chúng ta thực sự có thể bỏ qua nó không?
Có! Chỉ cần tìm hiểu thêm từ 6 phương pháp tiếp theo của chúng tôi.
Điều khiển một trình duyệt Chromium thực bằng Puppeteer hoặc Playwright. Bộ xử lý HTTP/2 và quá trình bắt tay TLS của nó vốn đã bắt chước hành vi của con người, làm cho việc phát hiện trở nên khó khăn hơn.
Quá trình bắt tay TLS liên quan đến một loạt các bước cho phép máy khách và máy chủ xác thực và đồng ý về các tiêu chuẩn mã hóa trước khi truyền dữ liệu.
Thiết lập được đề xuất:
--enable-features=NetworkServiceInProcess
để thực thi HTTP/2 gốcpuppeteer-extra-plugin-stealth
Ưu điểm: Hành vi giống người vốn có
Nhược điểm: Tiêu thụ tài nguyên cao, năng suất scraping hạn chế
Đối với độ đồng thời cao, bạn có thể tự động xây dựng một máy khách HTTP/2 bắt chước hành vi của trình duyệt — từ quá trình bắt tay TLS đến cấu trúc khung ban đầu.
Các điểm mô phỏng chính:
:authority
và host
Các công cụ được đề xuất: undici
, http2-wrapper
, hyper
, curl
, nghttp2
Ưu điểm: Hiệu suất cao, nhẹ
Nhược điểm: Cực kỳ khó triển khai; yêu cầu kiến thức giao thức sâu sắc
Sử dụng proxy lớp trung gian biến đổi các yêu cầu tiêu chuẩn thành các yêu cầu có đặc điểm giống trình duyệt — ví dụ: TLS-Proxy.
Cách hoạt động:
httpx
hoặc tương tựXuất NetLog hoặc ghi lại lưu lượng truy cập bằng Wireshark để ghi nhật ký các tương tác HTTP/2 của trình duyệt thực, sau đó phát lại các phiên đó.
Các công cụ được đề xuất: nghttp2
, h2
, chrome://net-export
, Wireshark
Ưu điểm: Mô phỏng gần như hoàn hảo các yêu cầu thực
Nhược điểm: Quá trình phức tạp, phù hợp nhất cho việc sử dụng quy mô nhỏ
Trước khi đàm phán HTTP/2, trình duyệt thực hiện quá trình bắt tay TLS ClientHello cũng tạo ra dấu vân tay.
Các công cụ được đề xuất:
tls-client
(Node.js)uTLS
(Go)mitmproxy
(Python)Đảm bảo cấu hình TLS và ALPN khớp với trình duyệt mục tiêu để ngụy trang hoàn toàn.
Nếu bạn đang tìm kiếm một giải pháp scraping ổn định, hiệu quả và hầu như không thể phát hiện, Browserless của Nstbrowser - một dịch vụ trình duyệt đám mây là một trong những lựa chọn tốt nhất hiện có.
Những ưu điểm chính của Browserless bao gồm:
Browserless có khả năng chống bot và mở khóa mạnh mẽ được tích hợp sẵn. Nó sử dụng dấu vân tay trình duyệt thực và hành vi giống người để dễ dàng bỏ qua các phát hiện ở cấp độ trình duyệt và HTTP.
Khám phá phiên bản dùng thử miễn phí ngay bây giờ!
Nhận dạng dấu vân tay HTTP/2 đã trở thành công nghệ chống bot thế hệ tiếp theo không thể thiếu. Các phương pháp truyền thống, chẳng hạn như chỉ dựa vào việc giả mạo user agent hoặc bỏ qua JavaScript, không còn hoàn toàn hiệu quả. Để nổi bật trong các hệ thống chống bot hiện đại, chiến lược phù hợp đòi hỏi phải mô phỏng toàn diện - từ ngăn xếp giao thức và TLS đến hành vi của trình duyệt.
Nếu bạn đang tìm kiếm một giải pháp bỏ qua hiệu suất cao, rủi ro thấp, Nstbrowser Browserless cung cấp các khả năng mô phỏng giống người nhất hiện có. Nó là sự lựa chọn hàng đầu cho các kỹ sư dữ liệu, những người làm tăng trưởng và nhà nghiên cứu bảo mật.