TLS fingerprint khớp với user agent
Trước khi trang chạy bất kỳ dòng JavaScript nào, TLS handshake đã mô tả client rồi. Handshake của Clearcote chính là của Chromium, và số ít trường thay đổi giữa các phiên bản Chrome sẽ theo phiên bản mà persona khai báo, nên tầng mạng và user agent kể cùng một câu chuyện.
Có ở mọi gói, bật sẵn theo mặc định. Không có gì phải cấu hình.
Mặc định đã đúng sẵn
import { launch } from "clearcote";
// default: the ClientHello follows the persona's claimed Chrome major
const browser = await launch({ fingerprint: "account-42", tlsProfile: "match-persona" });
// or pin a major (only together with a matching brandVersion), or leave the build's own TLS untouched:
// tlsProfile: "chrome-150"
// tlsProfile: "native"Điểm nổi bật
Handshake của chính Chromium
BoringSSL đúng như Chrome phát hành: danh sách cipher, giới hạn phiên bản và thứ tự extension theo từng kết nối đều là hàng thật, không phải bản viết lại.
Theo đúng phiên bản được khai báo
Các trường khác nhau giữa những bản Chrome major gần đây, như nhóm key-share hậu lượng tử (post-quantum) và codepoint ALPS, sẽ theo bản major được khai báo thay vì giữ nguyên theo bản build.
Không có đường nối giữa các tầng
Bề mặt JavaScript và handshake đến từ cùng một trình duyệt, nên không có sự lệch nhau giữa một user agent đã bị vá và một network stack chưa được vá.
HTTP/2 từ cùng một stack
SETTINGS, window update và thứ tự header đến từ chính phần hiện thực HTTP/2 của Chromium, không phải một thư viện client riêng.
Brand nằm trong header
Edge, Opera và Vivaldi dùng chung handshake của Chromium; brand nằm trong user agent và client hint, không nằm trong ClientHello.
Cấu hình được, nhưng hiếm khi cần
Mặc định phù hợp với hầu hết mọi người. Tùy chọn này tồn tại để bạn không bao giờ ghim một phiên bản mâu thuẫn với brand version của mình.
Vì sao handshake quan trọng
TLS fingerprint (JA3, và phiên bản kế nhiệm JA4) tóm tắt ClientHello: client đưa ra những phiên bản, cipher, extension và group nào, và ở dạng nào. HTTP/2 thêm một lớp nữa: frame SETTINGS, kích thước window và thứ tự pseudo-header. Cả hai đều được đọc ở phía server, trước khi bất kỳ script nào chạy, và đều dễ dàng đem so với user agent.
Chính phép so sánh đó là chỗ nhiều stack automation bị lộ. Một thư viện HTTP mang user agent Chrome vẫn gửi handshake của chính thư viện đó, và một lớp stealth JavaScript thay đổi những gì trang đọc được chứ không thay đổi những gì đã được gửi qua mạng. Clearcote là Chromium từ đầu đến cuối, nên không có client thứ hai nào bên dưới.
Điều Clearcote bổ sung là tính nhất quán về phiên bản. Mỗi bản phát hành Chrome thay đổi một vài chi tiết trong handshake. Khi persona khai báo một phiên bản Chrome khác với bản build đang chạy, match-persona chỉ điều chỉnh đúng những trường đó theo bản major được khai báo, và giữ nguyên mọi thứ khác như Chromium tạo ra.
User agent giả mạo so với Clearcote
Mọi người dùng nó để làm gì
Site chấm điểm handshake
Nhiều mạng edge đọc JA3 hoặc JA4 trước khi trang được tải. Một handshake nhất quán loại bỏ một mâu thuẫn khỏi bức tranh tổng thể.
Brand version do bạn tự đặt
Nếu bạn đặt brandVersion cho persona Chrome hoặc Edge, các trường handshake chính phụ thuộc phiên bản sẽ theo nó. Phần còn lại của trình duyệt vẫn báo cáo đúng phiên bản thực của engine, nên để trống brandVersion vẫn là mặc định nhất quán.
Nghiên cứu mạng
So sánh cách các trường handshake phụ thuộc phiên bản thay đổi qua các bản Chrome major, với cùng một binary.
Clearcote được xây dựng cho quyền riêng tư, kiểm thử, nghiên cứu và tự động hóa hợp pháp. Bạn chịu trách nhiệm về cách mình sử dụng nó và về việc tuân thủ điều khoản của các trang web bạn truy cập.
Gói nào có tính năng này
Có ở mọi gói, với thiết lập mặc định.
So sánh các góiCâu hỏi thường gặp
Fingerprint JA3 hay JA4 là gì?
Là bản tóm tắt gọn của TLS ClientHello mà client gửi: các phiên bản, cipher suite, extension và supported group. Server dùng nó để phân biệt trình duyệt với thư viện HTTP và để kiểm tra xem client có đúng là thứ mà user agent của nó khai báo hay không. Xem phần Hỏi & Đáp về JA3 và JA4.
Clearcote có ngẫu nhiên hóa TLS fingerprint không?
Không. Handshake ngẫu nhiên không khớp với bất kỳ trình duyệt thật nào, nên rất dễ bị nhận ra. Bản thân Chrome xáo trộn thứ tự các TLS extension ở mỗi kết nối, và Clearcote giữ nguyên hành vi đó đúng như Chrome.
Persona Edge hay Opera có làm thay đổi ClientHello không?
Không. Bên dưới, các trình duyệt đó đều là Chromium và dùng chung handshake của nó. Brand nằm trong user agent, client hint và header, và đó cũng là nơi Clearcote đặt nó.
Khi nào cần thay đổi tlsProfile?
Hầu như không bao giờ. match-persona đã tự theo brand version mà bạn khai báo. Chỉ ghim chrome-<major> nếu bạn đặt brand version theo cách khác, và dùng native để giữ nguyên handshake của bản build đúng như khi biên dịch.
Tìm hiểu sâu hơn trong tài liệu
Tính năng liên quan
Canvas, WebGL, WebGPU, audio, font, màn hình và phần cứng được suy ra trong engine C++ từ một seed, với locale và múi giờ được đặt cho khớp, để mọi bề mặt đều nhất quán với nhau.
Đặt proxy và bật geoip, múi giờ, ngôn ngữ và WebRTC sẽ theo IP đầu ra. SOCKS5 có username và password dùng được trực tiếp trên bản build có giấy phép.
Chromium thay thế trực tiếp cho Playwright và Puppeteer: chỉ đổi một dòng import trong Python, Node hay .NET, trình duyệt được tự động tải về và xác minh SHA-256 cho bạn.
Chạy Clearcote như một CDP endpoint thường trực từ Docker image chính thức, serve() hoặc CLI, rồi kết nối bất kỳ framework nào mà không cần sửa code.
Bài đọc liên quan
Dùng thử Clearcote
Thay thế drop-in cho Playwright & Puppeteer, nhất quán đến tận TLS handshake, với một bản build mã nguồn mở để bắt đầu.
Miễn phí cho một trình duyệt với GitHub. Không cần thẻ.