Back to blog. Article language: BN EN ES FR HI ID PT RU UR VI ZH

Kỹ thuật lấy dấu vân tay TLS và JA3: ảnh hưởng thế nào đến scraping

Kỹ thuật lấy dấu vân tay TLS nhận diện một HTTP client dựa trên cấu trúc bắt tay TLS của nó, trước khi bất kỳ dữ liệu ứng dụng nào được truyền đi. JA3 và JA4 chuyển các trường của thông điệp ClientHello thành một hash ngắn, và các hệ thống chống bot so sánh hash đó với chữ ký của trình duyệt và bot đã biết. Sự không khớp giữa trình duyệt được khai báo và hash có thể khiến yêu cầu bị từ chối trước cả khi các header được đọc.

Chú giải được dùng trong mọi bảng dưới đây: ✅ nhà cung cấp có tài liệu ghi chép · ❌ không cung cấp hoặc không có tài liệu · ⚠️ có tài liệu kèm giới hạn · 💡 mẹo thực tế. Không có ký hiệu nào khác được dùng trên trang này.

Dấu vân tay TLS là gì

Dấu vân tay TLS là một chữ ký ngắn được tạo từ các trường mà một HTTP client gửi trong thông điệp client hello của nó trong quá trình bắt tay TLS, trước cả khi việc mã hóa bắt đầu. Việc hiểu JA3 là gì bắt đầu từ đây: JA3 đọc năm trường trong số đó và chuyển chúng thành một hash duy nhất. Mỗi client, dù là Chrome, curl hay một script Python, đều liệt kê các cipher suite, extension và đường cong elliptic theo thứ tự riêng của nó. Máy chủ đọc dữ liệu này ở dạng văn bản thuần, vì hai bên chưa thống nhất khóa mã hóa.

Client hello cũng mang theo một extension alpn, cho máy chủ biết kết nối ưu tiên HTTP/1.1 hay HTTP/2. Các thư viện khác nhau lắp ráp các trường này theo cách khác nhau tùy thuộc vào TLS stack bên dưới, chẳng hạn OpenSSL so với BoringSSL so với NSS. Đó chính là nguyên liệu thô mà cả JA3 và JA4 đều dựa vào để hoạt động.

💡 Mẹo: nếu hai yêu cầu mang cùng một dấu vân tay nhưng khai báo trình duyệt khác nhau, chỉ riêng sự bất nhất đó đã có thể gây nghi ngờ mà không cần bất kỳ thủ thuật header nào can thiệp.

JA3 và JA4 được tính toán như thế nào

Dấu vân tay JA3 được tính bằng cách nối năm trường của ClientHello thành một chuỗi và hash nó bằng MD5, tạo ra một chữ ký 32 ký tự (Scrapfly, JA3/JA4 TLS Fingerprinting Guide, 2026). John Althouse, Jeff Atkinson và Josh Atkins công bố phương pháp gốc này tại Salesforce năm 2017, và nó vẫn là xương sống của hầu hết các kiểm tra bot dựa trên TLS ngày nay. Năm trường tạo nên hash đó là phiên bản TLS, cipher suites, extensions, đường cong elliptic và các định dạng điểm, được nối theo một thứ tự cố định.

  1. Trích xuất phiên bản TLS, biểu diễn dưới dạng số thập phân chẳng hạn 771 cho TLS 1.2.
  2. Liệt kê các cipher suite chính xác theo thứ tự client đã gửi, phân tách bằng dấu gạch nối.
  3. Liệt kê các extension TLS theo thứ tự gửi, phân tách bằng dấu gạch nối, bỏ qua các giá trị GREASE.
  4. Nối thêm các đường cong elliptic và định dạng điểm được hỗ trợ.
  5. Nối cả năm trường bằng dấu phẩy và hash chuỗi kết quả bằng MD5 để thu được ja3 hash.
Sơ đồ minh họa cách một JA3 hash được tạo từ các trường ClientHello

Cách một JA3 hash được tạo từ ClientHello

Phương pháp mới hơn bỏ qua vấn đề thứ tự ở bước 3. Thay vì ghi lại các extension như đã gửi, nó sắp xếp chúng theo giá trị thập lục phân, điều này giữ cho dấu vân tay JA4 ổn định ngay cả sau khi các trình duyệt bắt đầu ngẫu nhiên hóa thứ tự extension từ năm 2023 (Scrapfly, 2026). Hash kế nhiệm đó cũng loại bỏ MD5 thay bằng SHA-256 cắt ngắn và bổ sung hỗ trợ ALPN và QUIC, những chi tiết mà JA3 chưa bao giờ ghi nhận.

Tiêu chí JA3 Phương pháp kế nhiệm
Thuật toán hash MD5 SHA-256 cắt ngắn
Thứ tự extension Như đã gửi Sắp xếp theo giá trị hex
Hỗ trợ QUIC/HTTP3 ❌ không cung cấp ✅ có tài liệu
Bao gồm ALPN ❌ không cung cấp ✅ có tài liệu
Được tạo 2017, Salesforce 2023, FoxIO

Những khác biệt cấu trúc này quan trọng với bất kỳ ai đang kiểm tra client của chính mình. Một dấu vân tay được tính theo cách này sẽ không khớp với cơ sở dữ liệu xây dựng cho phương pháp kia.

Tại sao chỉ dùng proxy không giải quyết được bài toán dấu vân tay

Proxy thay đổi địa chỉ IP mà yêu cầu xuất phát; chúng không hề tác động đến tls handshake, vì vậy kỹ thuật lấy dấu vân tay TLS vẫn nhìn thấy bất kỳ thư viện nào đã khởi tạo kết nối. Quá trình bắt tay diễn ra trực tiếp giữa client và máy chủ đích, và một proxy HTTPS tiêu chuẩn dùng phương thức CONNECT chỉ đơn thuần đường hầm các byte đã mã hóa mà không chạm vào chúng (Shifter, TLS fingerprint glossary, 2026). Điều đó có nghĩa là một IP nhà mạng sạch kết hợp với một Python client mặc định vẫn gửi đi một dấu vân tay đọc lên như script chứ không phải trình duyệt.

Trong thử nghiệm của chúng tôi, tháng 8 năm 2026, một session requests mặc định được định tuyến qua ba loại proxy khác nhau đều trả về cùng một hash mỗi lần, bất kể uy tín IP hay vị trí địa lý. Chỉ có việc chuyển đổi thư viện TLS bên dưới mới thay đổi kết quả. Đây là phần trung thực của cuộc trò chuyện: chất lượng IP và sự khớp dấu vân tay giải quyết hai vấn đề riêng biệt, và coi cái này là lời giải cho cái kia sẽ sớm dẫn đến thất vọng.

"Kỹ thuật lấy dấu vân tay TLS diễn ra trước khi byte HTTP đầu tiên hạ cánh. Việc hoán đổi địa chỉ IP không làm gì đến quá trình bắt tay bên dưới nó." - Ghi chú kỹ thuật Insocks, tháng 8 năm 2026

  • ❌ Một IP nhà mạng không viết lại thứ tự cipher suite.
  • ❌ Proxy luân phiên không tác động đến các trường của tls handshake.
Sơ đồ so sánh những gì proxy thay đổi và những gì proxy không chạm tới

Những gì proxy thay đổi và những gì proxy không chạm tới

  • ✅ Khớp với TLS stack của một trình duyệt thực mới là điều thực sự thay đổi dấu vân tay.

Cách các hệ thống chống bot sử dụng dấu vân tay TLS

Các hệ thống chống bot tính toán một hash từ mỗi ClientHello đến và đối chiếu nó với các cơ sở dữ liệu dấu vân tay trình duyệt và bot đã biết, sau đó kết hợp tín hiệu đó với các lớp khác trước khi quyết định chặn, thử thách hay cho qua. Kỹ thuật lấy dấu vân tay TLS nằm hoàn toàn bên dưới các HTTP header, đó là lý do các header hoàn hảo đi kèm một TLS stack dạng script vẫn bị đánh dấu. Cloudflare ghi chép các trường JA3 và JA4 bên trong sản phẩm quản lý bot của họ, và các nhà cung cấp khác chạy các kiểm tra tương đương (Scrapfly, 2026). Điểm số kết hợp tín hiệu TLS với thời điểm yêu cầu, uy tín IP và dữ liệu hành vi thay vì chỉ dựa vào một trường duy nhất.

Một số nhà cung cấp bổ sung kỹ thuật lấy dấu vân tay http2 trên đầu kiểm tra bắt tay, đọc cách một client đàm phán độ ưu tiên luồng và kích thước cửa sổ sau khi lớp TLS hoàn tất. Lớp thứ hai này đưa vào hệ thống chấm điểm phát hiện chống bot rộng hơn cùng với hash JA3 và JA4. Các nhà cung cấp liên tục cập nhật những cơ sở dữ liệu này khi các phiên bản trình duyệt mới ra mắt, và một dấu vân tay từng vượt qua kiểm tra quý trước có thể bắt đầu thất bại sau khi một bản cập nhật trình duyệt thay đổi các giá trị mặc định của nó.

Tín hiệu Những gì nó tiết lộ Hành động điển hình
Hash JA3 không khớp với User-Agent Trình duyệt khai báo không khớp TLS stack ⚠️ có tài liệu kèm giới hạn, thường là thử thách
Hash tĩnh qua các session Cùng một script được tái sử dụng nhiều lần ⚠️ có tài liệu kèm giới hạn, giới hạn tốc độ
Khớp cơ sở dữ liệu bot đã biết Dấu vân tay gắn với giá trị mặc định của thư viện phổ biến ❌ không cung cấp, thường bị chặn thẳng
Hồ sơ nhất quán giống trình duyệt Khớp với hành vi trình duyệt như mong đợi ✅ có tài liệu, thường được thông qua

Tính nhất quán giữa các lớp: TLS, HTTP/2, header và IP

Tính nhất quán giữa các lớp nghĩa là tls handshake, khung cài đặt http2, User-Agent được khai báo, và loại mạng của IP đều cần chỉ về cùng một câu chuyện, một trình duyệt thực hay một client thực, chứ không phải một mảng vá gồm các tín hiệu không khớp nhau. Kỹ thuật lấy dấu vân tay Http2 xem xét cách một client đàm phán độ ưu tiên luồng và kích thước cửa sổ sau khi quá trình bắt tay hoàn tất, và đó là lớp thứ hai mà một số nhà cung cấp chống bot kiểm tra bên cạnh dữ liệu JA3 và JA4 (Scrapfly, 2026). Một scraper cố định TLS stack của mình nhưng bỏ qua cài đặt HTTP/2 vẫn để lại một khoảng trống hiển nhiên.

Sơ đồ bốn lớp yêu cầu và những gì mỗi lớp tiết lộ

Bốn lớp mà một yêu cầu bộc lộ, và những gì mỗi lớp tiết lộ

Tính nhất quán của User-Agent cũng quan trọng, bởi một chuỗi User-Agent khai báo Chrome 124 đi kèm một hồ sơ dấu vân tay JA4 lỗi thời tự nó đã đọc lên như một mâu thuẫn. Các nhà cung cấp chống bot đánh dấu đúng loại không khớp này ngay cả khi mỗi header riêng lẻ đều trông chính xác. Không kiểm tra nào trong số này đòi hỏi vượt qua bất cứ thứ gì trên trang mục tiêu; chúng chỉ xác nhận rằng các tín hiệu của chính client đồng nhất với nhau trước khi một yêu cầu được gửi đi.

Lớp Cái gì phải khớp Cách kiểm tra
Quá trình bắt tay TLS Thứ tự cipher suite và extension cho trình duyệt được khai báo So sánh hash JA3/JA4 với mẫu trình duyệt đã biết
Khung cài đặt HTTP/2 Kích thước cửa sổ, kích thước bảng header, độ ưu tiên luồng Kiểm tra giá trị khung so với mặc định trình duyệt
Header User-Agent, Accept-Language, Sec-CH-UA nếu có Xem xét thủ công hoặc một công cụ kiểm tra header
IP/mạng Loại ASN khớp với client được khai báo, nhà mạng so với trung tâm dữ liệu Kiểm tra uy tín IP và tra cứu ASN

Cách kiểm tra dấu vân tay TLS của chính bạn

Kiểm tra một dấu vân tay bắt đầu bằng một yêu cầu sạch đến một endpoint kiểm tra, sau đó là so sánh song song với một trình duyệt thực truy cập cùng endpoint đó. Dấu vân tay JA4 nhóm phiên bản TLS, số lượng cipher, số lượng extension và giá trị ALPN đầu tiên thành một chuỗi dễ đọc, điều này giúp việc so sánh trực quan dễ dàng hơn là đọc một hash thô (Scrapfly, JA3/JA4 fingerprint tool, 2026). Chạy cùng một bài kiểm tra hai lần vào những ngày khác nhau cũng giúp xác nhận kết quả giữ ổn định qua các bản cập nhật thư viện.

Các công cụ được xây dựng cho mục đích này, bao gồm công cụ kiểm tra của chính Scrapfly và các thư viện bên thứ ba như curl impersonate, một tên công cụ được dùng ở đây chỉ nhằm nhận diện, tồn tại đặc biệt để làm cho việc so sánh này khả thi mà không cần phỏng đoán. Một trình duyệt headless chạy Playwright hoặc Puppeteer cũng cung cấp một quá trình bắt tay thật để so sánh, vì nó khởi chạy một engine trình duyệt thực thay vì một TLS stack dạng script.

  • Bước 1. Gửi một yêu cầu từ client đang được xem xét đến một endpoint kiểm tra dấu vân tay và ghi lại hash mà nó trả về.
  • Bước 2. Mở cùng endpoint đó trong một trình duyệt thực, phiên bản hiện tại và ghi chú hash riêng của nó để so sánh.
  • Bước 3. So sánh song song các cipher suite, số lượng extension và giá trị ALPN thay vì chỉ đánh giá qua sự khớp hash.
  • Bước 4. Kiểm tra xem header User-Agent được khai báo có khớp với hồ sơ TLS thực tế quan sát được hay không.
  • Bước 5. Ghi lại kết quả kèm ngày tháng, vì hash có thể thay đổi sau một bản cập nhật thư viện hoặc trình duyệt.

👉 Muốn xem một client được cấu hình đúng hoạt động từ đầu đến cuối như thế nào?  Dùng thử demo cùng Insocks trước khi chạy một loạt bài kiểm tra đầy đủ.

Thực hành white-hat để thu thập dữ liệu ổn định

Thu thập dữ liệu white-hat bắt đầu với các quy tắc riêng của trang mục tiêu: API chính thức trước tiên, robots.txt được tôn trọng, và tốc độ yêu cầu giữ ở mức thấp hơn nhiều so với bất kỳ điều gì có thể gây tải cho một máy chủ. Xem lại JA3 là gì giúp giải thích tại sao các engine trình duyệt đầy đủ, chứ không phải các thủ thuật header, thường tạo ra kết quả ổn định nhất, vì TLS stack của một trình duyệt thực đã khớp với danh tính tự khai báo của nó theo mặc định. Playwright, Puppeteer và Selenium đều khởi chạy các engine trình duyệt thật, vì vậy quá trình bắt tay của chúng trông giống Chrome hoặc Firefox mà không cần bất kỳ cấu hình bổ sung nào (Scrapfly, 2026).

Một số nhóm chọn curl impersonate hoặc các thư viện tương tự khi một trình duyệt đầy đủ quá nặng cho nhiệm vụ hiện tại, và đó là một sự đánh đổi hợp lý miễn là dấu vân tay thu được được kiểm tra với một trình duyệt thực trước. Kết hợp cách tiếp cận nào với thời điểm hợp lý và một User-Agent rõ ràng cũng giúp quy trình thu thập dễ dự đoán và dễ kiểm toán về sau.

  • ✅ Sử dụng API chính thức và endpoint có tài liệu ở bất cứ đâu khi chúng tồn tại.
  • ✅ Tôn trọng robots.txt và các điều khoản công bố của trang mục tiêu.
  • ✅ Dàn trải các yêu cầu thay vì bắn thành từng đợt vào một endpoint.
  • ✅ Ưu tiên tự động hóa trình duyệt đầy đủ thay vì giả mạo header hay TLS từng phần.
  • 💡 Một lịch thu thập chậm, đều đặn thường gây ít ticket hỗ trợ hơn một lịch nhanh, giật cục.

Bằng cách áp dụng phương pháp này từ Hoa Kỳ, một nhóm xác nhận quy trình thu thập của mình nằm trong phạm vi luật pháp Hoa Kỳ hiện hành và các điều khoản dịch vụ riêng của trang mục tiêu.

Các sai lầm phổ biến

Một vài sai lầm trong quy trình xuất hiện đi xuất hiện lại khi các nhóm kiểm tra thiết lập của mình. Kiểm tra một lần và không bao giờ lặp lại việc kiểm tra sau một bản cập nhật thư viện là lỗi phổ biến nhất, vì kết quả của kỹ thuật lấy dấu vân tay TLS có thể thay đổi ngay khi một dependency nâng cấp TLS backend của nó. Chạy bài kiểm tra trong môi trường staging không khớp với môi trường sản xuất là một lỗi khác, bởi đường dẫn yêu cầu thực tế mới là điều quan trọng, chứ không phải một shell cục bộ.

  • ❌ Kiểm tra một lần và mặc định kết quả giữ nguyên giá trị mãi mãi.
  • ❌ Kiểm tra dấu vân tay trong một môi trường khác với nơi tác vụ thực sự chạy.
  • ❌ Tin tưởng một dịch vụ xác minh duy nhất mà không có điểm so sánh thứ hai.
  • ❌ Bỏ qua cài đặt HTTP/2 trong khi chỉ mải theo đuổi lớp TLS.

Chất lượng proxy nằm ở đâu trong bức tranh

Tiết lộ: Insocks là dịch vụ của chúng tôi, và phần này mô tả hạ tầng proxy thực sự làm gì trong một bộ thu thập rộng hơn. Hạ tầng proxy tốt giải quyết các vấn đề ở lớp IP: vị trí địa lý, uy tín IP và độ ổn định kết nối, trong khi kỹ thuật lấy dấu vân tay TLS vẫn là một lớp riêng mà proxy đơn thuần không thể chạm tới. Thời gian hoạt động đáng tin cậy và các dải IP sạch quan trọng để tránh các giới hạn tốc độ dựa trên IP, nhưng chúng không nói gì về thứ tự cipher suite hay danh sách extension bên trong một quá trình bắt tay.

Đối với công việc thu thập dữ liệu, chúng tôi bán proxy nhà mạngproxy IP tĩnh, cả hai đều có tài liệu hỗ trợ giao thức và dữ liệu vị trí. Kết hợp hạ tầng proxy vững chắc với một client được cấu hình đúng, dù đó là một engine trình duyệt đầy đủ hay một thư viện được ghép khớp cẩn thận, giải quyết cả hai lớp cùng lúc thay vì để một lớp bị phơi bày.

Tính năng Ý nghĩa trong thực tế
Dải IP nhà mạng và ISP Giảm các cờ uy tín dựa trên IP, không chạm tới TLS
Nhắm mục tiêu địa lý Khớp nguồn gốc yêu cầu với thị trường dự định
Kiểm soát session Giữ IP nhất quán xuyên suốt một luồng nhiều bước
Thời gian hoạt động và hỗ trợ Giảm các lỗi kết nối không liên quan đến dấu vân tay

Proxy xử lý lớp mạng chứ không phải dấu vân tay TLS, và bất kỳ nhà cung cấp nào nói khác đi đều đang thổi phồng những gì một thay đổi IP có thể làm. Các nhóm cần giải quyết cả hai lớp thường kết hợp hạ tầng proxy chất lượng, như proxy nhà mạng và ISP của Insocks, với một client dựa trên trình duyệt hoặc được ghép khớp đúng cách.

🔗 Đăng ký để có toàn quyền truy cập nhằm so sánh các dải proxy trước khi cam kết một gói dịch vụ.

Những điểm chính cần nhớ

  • Quá trình tls handshake được đọc trước bất kỳ HTTP header nào, và đó là toàn bộ cơ sở của phương pháp phát hiện này.
  • Hash kế nhiệm của JA3 giữ ổn định ngay cả sau khi thứ tự extension bị ngẫu nhiên hóa, khác với phiên bản tiền nhiệm.
  • Hiểu JA3 là gì làm rõ tại sao các client giống trình duyệt vượt qua các kiểm tra nhất quán hơn các client dạng script.
  • Proxy giải quyết vấn đề IP; chúng không bao giờ tự mình viết lại một tls handshake.
  • Tự động hóa trình duyệt đầy đủ vẫn là con đường đáng tin cậy nhất để có một dấu vân tay JA3 nhất quán, giống trình duyệt.

Tiết lộ và nguồn dữ liệu

Tất cả dữ liệu trong bài viết này, bao gồm giá, các cấp gói cước, giới hạn và tính sẵn có của sản phẩm, đều chính xác tính đến ngày xuất bản hiển thị trên trang này. Các điều khoản của nhà cung cấp thay đổi thường xuyên và không báo trước, các cấp khởi đầu thay đổi theo dung lượng, và giá khuyến mãi có thể áp dụng vào ngày bạn đọc bài này. Không có gì ở đây là một lời đề nghị, một cam kết về điều khoản hiện hành, hay một lời khuyên mua hàng.

Bài viết này được xuất bản bởi Insocks. Chúng tôi bán proxy và tiết lộ lợi ích thương mại trong phần cuối phía trên. Proxy không thay đổi dấu vân tay JA3 hay bất kỳ tín hiệu TLS nào khác, và chúng tôi nói thẳng điều đó thay vì ngụ ý khác đi. Các công cụ và thư viện kiểm tra được đề cập ở đây, bao gồm công cụ kiểm tra của Scrapfly, curl-impersonate và các khung tự động hóa trình duyệt, thuộc về các chủ sở hữu tương ứng và xuất hiện chỉ nhằm nhận diện. Các chi tiết trong bài này đã được kiểm tra vào tháng 8 năm 2026, và hành vi client có thể thay đổi giữa các phiên bản thư viện hoặc trình duyệt.

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

Những câu hỏi dưới đây bao gồm các kiến thức cơ bản mà mọi người thường hỏi sau khi lần đầu đọc về chủ đề này. Các câu trả lời ngắn gọn và dựa trên sự thật, khớp với những gì một tab trình duyệt hoặc công cụ dòng lệnh thực sự hiển thị. Không có gì ở đây đóng vai trò như hướng dẫn vượt qua, vì mục tiêu ở đây là hiểu biết chứ không phải né tránh.

Dấu vân tay TLS là gì?

Một chữ ký ngắn được tạo từ dữ liệu bắt tay giúp nhận diện phần mềm nào đã tạo kết nối.

Hash JA3 được tính như thế nào?

Năm trường từ quá trình bắt tay được kết hợp và hash thành một chuỗi 32 ký tự.

Khác biệt giữa JA3 và JA4 là gì?

Phương pháp mới hơn sắp xếp các extension và dùng hash mạnh hơn, giữ ổn định sau khi trình duyệt ngẫu nhiên hóa thứ tự.

Một proxy nhà mạng có thể che giấu dấu vân tay TLS của tôi không?

Không, proxy chỉ thay đổi địa chỉ IP; quá trình bắt tay đi qua mà không thay đổi.

Tại sao scraper của tôi bị chặn dù header đúng?

Header được tải sau quá trình bắt tay, vì vậy một hồ sơ client không khớp bị đánh dấu trước.

Làm sao để kiểm tra dấu vân tay TLS của chính mình?

Gửi một yêu cầu đến một công cụ kiểm tra công khai và so sánh với kết quả của một trình duyệt thực.

2026-09-03