🎯 Trình duyệt đám mây tùy chỉnh, chống phát hiện được hỗ trợ bởi Chromium tự phát triển, thiết kế dành cho trình thu thập dữ liệu webtác nhân AI. 👉Dùng thử ngay
Quay lại blog

httpcloak Web Scraping: Dấu vân tay trình duyệt Full-Stack trong Python

Michael Lee
Michael Lee

Expert Network Defense Engineer

22-Jul-2026

TL;DR:

  • httpcloak là một khách hàng HTTP Python mô phỏng trình duyệt qua toàn bộ ngăn xếp mạng: TLS, HTTP/2, HTTP/3 và TCP, không chỉ riêng quá trình bắt tay TLS.
  • Một cuộc gọi httpcloak.get(url, preset="chrome-146") cung cấp JA3, JA4 và dấu vân tay HTTP/2 của một trình duyệt cùng nhau, mà không cần một quá trình trình duyệt nào.
  • Một yêu cầu có nhiều hơn một dấu vân tay: giá trị băm JA3 thay đổi mỗi lần chạy do GREASE, trong khi JA4 và dấu vân tay HTTP/2 giữ cố định.
  • httpcloak không chạy JavaScript, vì vậy trên một trang được render bởi khách hàng, nó trả về một shell trống; hướng dẫn chứng minh điều này với 0 khối trích dẫn từ httpcloak và 10 từ Scrapeless với việc render.
  • Sử dụng httpcloak khi dấu vân tay mạng là một bức tường, và Scrapeless khi trang cần được render, các thách thức đã được giải quyết, hoặc cần luân chuyển IP.
  • Bắt đầu với gói miễn phí Scrapeless cho các trang mà chỉ dấu vân tay không thể tiếp cận.

Một máy chủ có thể nhận dạng một yêu cầu ở vài lớp trước khi nó đọc một byte từ phản hồi. TLS ClientHello là một trong số đó. Các khung SETTINGS của HTTP/2 là một cái khác. Tùy chọn TCP là cái thứ ba. Một khách hàng chỉ chỉnh sửa lớp TLS vẫn sẽ nổi bật ở các lớp khác, và một công cụ phát hiện kiểm tra nhiều hơn một lớp sẽ đánh dấu sự không khớp. httpcloak giải quyết toàn bộ ngăn xếp cùng một lúc bằng cách mượn dấu vân tay của một trình duyệt thực ở tất cả các lớp đó.

Hướng dẫn này sẽ đọc lại các dấu vân tay mà httpcloak tạo ra, giải thích lý do tại sao một trong số đó thay đổi giữa các lần chạy trong khi những cái khác thì không, và sau đó vạch ra ranh giới mà httpcloak không thể vượt qua. Nơi mà một trang cần một trình duyệt thực, Scrapeless Universal Scraping API sẽ đảm nhận. Mọi giá trị dưới đây đều được lấy từ một lần chạy thực tế.

Những gì httpcloak mô phỏng

httpcloak là một khách hàng theo kiểu requests mô phỏng dấu vân tay của một trình duyệt qua các lớp. Tại lớp TLS, nó cung cấp một JA3 và JA4 của trình duyệt. Tại lớp truyền tải, nó tái hiện các khung SETTINGS của HTTP/2, kích thước cửa sổ và độ ưu tiên luồng tạo thành dấu vân tay được định nghĩa qua giao thức HTTP/2, và nó mở rộng tới HTTP/3 và các tùy chọn TCP. Bạn chọn một mục tiêu với một preset, và kho lưu trữ httpcloak liệt kê các phiên bản trình duyệt mà nó cung cấp, từ chrome-146 đến firefox-133safari-18.

Những gì httpcloak không làm là chạy một trình duyệt. Không có động cơ JavaScript và không có việc render. Nó là một bộ dấu vân tay, không phải một trình duyệt.

Cài đặt

httpcloak là một cài đặt pip đơn giản.

bash Copy
pip install httpcloak

Đọc Dấu Vân Tay Toàn Bộ Ngăn Xếp

Chuyển một preset và httpcloak xây dựng chữ ký mạng của trình duyệt đó. Yêu cầu bên dưới yêu cầu một dịch vụ nhận dạng để báo cáo các lớp mà nó nhìn thấy.

python Copy
import httpcloak

response = httpcloak.get("https://tls.peet.ws/api/all", preset="chrome-146", timeout=30)
data = response.json()
print("phiên bản http:", data["http_version"])
print("ja3 hash:", data["tls"]["ja3_hash"])
print("ja4:", data["tls"]["ja4"])
print("dấu vân tay http2 akamai:", data["http2"]["akamai_fingerprint_hash"])

Dịch vụ báo cáo HTTP/2, một giá trị băm JA3, một dấu vân tay JA4 và một dấu vân tay HTTP/2, tất cả từ một yêu cầu.

text Copy
phiên bản http: h2
giá trị băm ja3: 0f368595c1c27a2c9024014615c2a295
ja4: t13d1516h2_8daaf6152771_d8a2da3f94cd
dấu vân tay http2 akamai: 52d84b11737d980aef856699f885ca86

Một Yêu Cầu, Nhiều Dấu Vân Tay

Chạy đoạn mã đó hai lần và giá trị ja3 hash sẽ thay đổi, trong khi ja4http2 akamai hash vẫn giữ nguyên. Điều đó không phải là bất ổn định. Cơ chế GREASE chèn các giá trị dự trữ ngẫu nhiên vào TLS ClientHello, và JA3 mã hóa các giá trị đó, vì vậy JA3 di chuyển giữa các kết nối, giống như cách mà Chrome thực sự làm. Dấu vân tay JA4 sắp xếp và loại trừ các giá trị GREASE, vì vậy nó ổn định, và dấu vân tay HTTP/2 đến từ các khung SETTINGS cố định, vì vậy nó cũng ổn định. Bài học rút ra là một yêu cầu có nhiều dấu vân tay, và chỉ kiểm tra JA3 sẽ thấy tiếng ồn trong khi tín hiệu bền bỉ tồn tại trong JA4 và lớp HTTP/2.

Nơi httpcloak Dừng Lại

Một dấu vân tay mạng toàn bộ ngăn xếp giúp một yêu cầu vượt qua một bài kiểm tra nhận dạng, nhưng nó không render trang. Trên một trang xây dựng nội dung của mình bằng JavaScript, httpcloak trả về chính xác những gì máy chủ gửi, đó là một shell trống, và không có độ chính xác nào của dấu vân tay có thể lấp đầy nó. Đây là nơi một công cụ render là cần thiết.

Thiết lập khóa Scrapeless của bạn trong shell. Sử dụng khóa thực tại thời gian chạy và giữ chỗ đó ra khỏi mã nguồn của bạn.

bash Copy
export SCRAPELESS_API_KEY="sk_your_key_here"

Kịch bản dưới đây lấy trang trích dẫn được hiển thị bằng JavaScript theo hai cách: httpcloak với dấu vân tay trình duyệt đầy đủ, và Scrapeless với việc hiển thị trên.

python Copy
import json
import os
import urllib.request

import httpcloak

JS_PAGE = "https://quotes.toscrape.com/js/"

response = httpcloak.get(JS_PAGE, preset="chrome-146", timeout=30)
print("trạng thái httpcloak:", response.status_code)
print("các khối trích dẫn httpcloak:", response.text.count('class="quote"'))

def scrapeless(url: str) -> str:
    payload = json.dumps(
        {"actor": "unlocker.webunlocker", "input": {"url": url, "js_render": True, "headless": True}}
    ).encode()
    request = urllib.request.Request(
        "https://api.scrapeless.com/api/v2/unlocker/request",
        data=payload,
        headers={"x-api-token": os.environ["SCRAPELESS_API_KEY"], "Content-Type": "application/json"},
        method="POST",
    )
    with urllib.request.urlopen(request, timeout=90) as response:
        return json.loads(response.read())["data"]

html = scrapeless(JS_PAGE)
print("các khối trích dẫn scrapeless:", html.count('class="quote"'))

httpcloak nhận được trạng thái 200 sạch sẽ nhưng không có trích dẫn nào, vì các trích dẫn được hiển thị bằng JavaScript nhưng không bao giờ chạy. Scrapeless hiển thị trang và các trích dẫn xuất hiện.

text Copy
trạng thái httpcloak: 200
các khối trích dẫn httpcloak: 0
các khối trích dẫn scrapeless: 10

Số 200 là cái bẫy: yêu cầu thành công, vì vậy không có gì có vẻ sai, nhưng nội dung không có. Hai công cụ này giải quyết các vấn đề khác nhau. httpcloak tái tạo vân tay mạng của trình duyệt qua các lớp; nó không hiển thị, không làm sạch một thử thách, hoặc xoay IP. Để có cái nhìn rộng hơn về những gì một máy chủ đo lường, hướng dẫn về vân tay trình duyệt bao gồm các tín hiệu ngoài ngăn xếp mạng.

Trước khi thực hiện bất kỳ điều gì trên một trang web, hãy đọc robots.txt và điều khoản của nó. Giao thức loại trừ robot xác định những đường dẫn mà một trang yêu cầu các khách hàng tự động tránh, và tôn trọng nó giữ cho một công cụ quét bền vững.

Sẵn sàng cho những trang mà chỉ có vân tay không thể đạt tới? Tạo một tài khoản Scrapeless miễn phí và hiển thị chúng.

Kết luận

httpcloak là công cụ đúng khi tường rào là một vân tay mạng, và nó rất kỹ lưỡng về điều đó: JA3, JA4, HTTP/2, HTTP/3, và TCP từ một yêu cầu, được chọn theo một cài đặt trình duyệt. Giới hạn của nó cũng rõ ràng, vì nó không thực thi JavaScript và trả về vỏ HTML rỗng của một trang được khách hàng hiển thị. Đọc lại các vân tay để hiểu vân tay nào là ổn định, sử dụng httpcloak nơi mà bắt tay là tường rào, và chuyển giao trang cho Scrapeless khi cần hiển thị, làm sạch một thử thách, hoặc một IP mới. Bắt đầu từ các kịch bản trên và phù hợp công cụ với bài kiểm tra trước mặt bạn.

Bắt đầu với kế hoạch miễn phí của Scrapeless cho các trang đã được hiển thị, và kiểm tra giá cả của Scrapeless khi bạn quy mô một công việc định kỳ.

Câu hỏi thường gặp

Q: httpcloak mô phỏng những lớp nào?

httpcloak tái tạo một vân tay trình duyệt ở lớp TLS (JA3 và JA4), lớp HTTP/2 (các khung SETTINGS, kích thước cửa sổ và ưu tiên), HTTP/3, và các tùy chọn TCP. Một khách hàng chỉ sử dụng TLS chỉ sửa chữa đầu tiên trong số này, trong khi httpcloak hướng đến việc làm cho mọi lớp là một trình phát hiện đa lớp khớp với cùng một trình duyệt.

Q: Tại sao băm JA3 thay đổi giữa các lần chạy nhưng JA4 thì không?

JA3 bao gồm các giá trị GREASE mà các trình duyệt ngẫu nhiên trong TLS ClientHello, vì vậy nó thay đổi trong mỗi kết nối. JA4 sắp xếp và loại trừ những giá trị GREASE đó, vì vậy nó giữ nguyên cho cùng một khách hàng, và vân tay HTTP/2 đến từ các khung cố định, vì vậy nó cũng ổn định. Một JA3 thay đổi với một JA4 ổn định là điều bình thường, không phải là sự thất bại.

Q: httpcloak có thể quét một trang hiển thị bằng JavaScript không?

Không. httpcloak không có động cơ JavaScript, vì vậy trên một trang được khách hàng hiển thị, nó trả về vỏ HTML ban đầu với trạng thái 200 và không có nội dung nào đã được hiển thị. Sử dụng một công cụ hiển thị như Scrapeless cho những trang đó, và giữ httpcloak cho các điểm cuối mà nội dung đã có trong phản hồi.

Q: Làm thế nào tôi chọn một trình duyệt để mô phỏng?

Truyền tham số preset với tên trình duyệt đã được cung cấp, chẳng hạn như chrome-146, firefox-133, hoặc safari-18. Cài đặt sẵn thiết lập vân tay trên mỗi lớp cùng một lúc, vì vậy việc chuyển đổi từ trình duyệt này sang trình duyệt khác chỉ là thay đổi một tham số thay vì cấu hình theo từng lớp.

Q: Một vân tay mạng có đủ để tránh bị chặn không?
Chỉ cần một kiểm tra vân tay và không hơn thế. Các thử thách JavaScript, phân tích hành vi và uy tín IP là những biện pháp ngăn chặn riêng biệt mà httpcloak không đề cập, vì vậy khi những điều đó xuất hiện, bạn cần có khả năng kết xuất, xử lý thử thách hoặc xoay vòng proxy bên cạnh vân tay.

Tại Scrapless, chúng tôi chỉ truy cập dữ liệu có sẵn công khai trong khi tuân thủ nghiêm ngặt các luật, quy định và chính sách bảo mật trang web hiện hành. Nội dung trong blog này chỉ nhằm mục đích trình diễn và không liên quan đến bất kỳ hoạt động bất hợp pháp hoặc vi phạm nào. Chúng tôi không đảm bảo và từ chối mọi trách nhiệm đối với việc sử dụng thông tin từ blog này hoặc các liên kết của bên thứ ba. Trước khi tham gia vào bất kỳ hoạt động cạo nào, hãy tham khảo ý kiến ​​cố vấn pháp lý của bạn và xem xét các điều khoản dịch vụ của trang web mục tiêu hoặc có được các quyền cần thiết.

Bài viết phổ biến nhất

Danh mục