Giải mã CreepJS
CreepJS là bài test fingerprinting được giới nghiên cứu và developer trình duyệt antidetect dùng nhiều nhất. Nó không chấm đạt hay trượt; nó cho thấy trình duyệt của bạn để lộ những gì, giá trị nào mâu thuẫn nhau, và ba con số phần trăm cho biết trình duyệt trông headless hoặc stealth đến mức nào.
Một dự án nghiên cứu mã nguồn mở của Abraham Juliot. Mở CreepJS
CreepJS là gì?
CreepJS là trang nghiên cứu fingerprinting mã nguồn mở của Abraham Juliot, host trên GitHub Pages. Nó thu thập một tập tín hiệu rất rộng, từ WebGL và audio đến font, worker và WebRTC, rồi hash từng mục, để bạn thấy chính xác phần nào của fingerprint đã thay đổi giữa hai lượt truy cập.
Điểm làm nó nổi bật là việc tìm các lies (giá trị “nói dối”): những giá trị đã bị JavaScript sửa đổi, hoặc không khớp giữa trang và Web Worker. Mục “Headless” tóm tắt điều đó thành ba con số. Vì là mã nguồn mở, bạn có thể đọc chính xác cách từng phép kiểm tra hoạt động.
CreepJS kiểm tra những gì
Headless
Ba con số phần trăm: trình duyệt giống trình duyệt headless đến mức nào (“like headless”), có bao nhiêu dấu hiệu headless rõ ràng (“headless”), và bao nhiêu dấu hiệu bị vá stealth (“stealth”).
Lies
Các hàm trình duyệt đã bị ghi đè bằng JavaScript — đó là cách phần lớn plugin stealth hoạt động, và cũng là cách CreepJS bắt được chúng.
Workers
Các giá trị được đọc bên trong Web Worker rồi so với trang: user agent, GPU, múi giờ, ngôn ngữ, số nhân và bộ nhớ.
Rendering
Canvas, WebGL, audio, font và số đo DOM rect, mỗi thứ đều được hash.
WebRTC, múi giờ và hơn nữa
Candidate mạng, múi giờ và locale, màn hình, cùng hàng chục mục nhỏ hơn.
Cách đọc kết quả CreepJS
- % like headless
- Các tín hiệu yếu, thường gặp ở trình duyệt headless nhưng cũng xuất hiện ở trình duyệt bình thường. Con số khác 0 ở đây là bình thường.
- % headless
- Dấu hiệu rõ ràng của trình duyệt headless hoặc tự động hóa. Đây là con số cần theo dõi.
- % stealth
- Dấu hiệu bị vá stealth, như các hàm bị ghi đè. Plugin stealth viết bằng JavaScript sẽ lộ ra ở đây.
- FP ID và fuzzy hash
- Mã định danh cho toàn bộ fingerprint của bạn. Chúng thay đổi mỗi khi có bất cứ gì thay đổi, nên chúng dùng để so sánh các lượt truy cập, không phải để đánh giá một trình duyệt.
Kết quả của các trình duyệt thật
Đo vào ngày 20 và 21 tháng 9 năm 2026 trên một máy tính Windows 11 (NVIDIA RTX 3070), dùng mạng cáp quang gia đình ở Hà Lan, không qua proxy hay VPN. Ba trình duyệt: Chrome 153 dùng hằng ngày của một người, có cài trình chặn quảng cáo, thao tác bằng tay; chính Chrome 153 thật đó nhưng điều khiển bằng Playwright; và Clearcote 153 điều khiển bằng Playwright với một fingerprint seed.
| Trình duyệt | Kết quả từ CreepJS |
|---|---|
| Chrome 153 dùng hằng ngày, thao tác tay | 19% like headless · 0% headless · 0% stealth |
| Chrome 153 thật, Playwright | 25% like headless · 33% headless · 0% stealth |
| Clearcote 153, Playwright + seed | 25% like headless · 0% headless · 0% stealth |
Con số “headless” là nơi tự động hóa lộ ra: 33% với Chrome thật chạy dưới Playwright, 0% với Clearcote và với Chrome của chính người dùng. 0% stealth của Clearcote là điều dễ hiểu, vì nó thay đổi giá trị bên trong engine thay vì ghi đè hàm bằng JavaScript, nên cơ chế phát hiện lies không có gì để tìm.
Kết quả xuất hiện cả trên trình duyệt bình thường
- Tỷ lệ “like headless” khác 0. Ngay cả Chrome của chính người dùng cũng hiển thị 19%.
- Host candidate WebRTC kết thúc bằng
.localbị coi là rò rỉ. Thực ra đó là cơ chế bảo vệ mDNS của Chrome đang ẩn địa chỉ nội bộ của bạn, chứ không làm lộ nó; vì vậy audit của Clearcote tính mục này là đạt.
Câu hỏi thường gặp
Kết quả CreepJS thế nào là tốt?
0% headless và 0% stealth là những con số quan trọng. Tỷ lệ “like headless” ở mức mười mấy hay hai mươi mấy phần trăm là bình thường; Chrome dùng hằng ngày của một người hiển thị 19% trong bài test của chúng tôi.
Vì sao mỗi lần CreepJS lại hiển thị một fingerprint ID khác?
ID là hash của mọi thứ nó đo được, nên bất kỳ thay đổi nào, từ một font mới đến kích thước cửa sổ khác, cũng làm ID thay đổi. Nó dùng để so sánh hai lượt truy cập, không phải để làm điểm số.
CreepJS có phát hiện được puppeteer-extra-plugin-stealth không?
CreepJS được thiết kế để bắt các hàm bị ghi đè bằng JavaScript, mà plugin đó hoạt động đúng theo cách này; điều đó hiện ra ở mục lies và trong tỷ lệ stealth. Xem bài so sánh plugin stealth để hiểu vì sao cách tiếp cận đó tự để lộ mình.
CreepJS có giống Clearcote audit không?
Không. CreepJS là một trang nghiên cứu hiển thị kết quả thô; Clearcote audit chạy 294 bài kiểm tra tính nhất quán và giải thích từng kết quả. Hai bên có phần trùng nhau, và khác nhau ở vài điểm, chẳng hạn candidate WebRTC mDNS.
Muốn được giải thích từng mục kiểm tra?
Clearcote audit chạy 294 bài kiểm tra tính nhất quán trên bất kỳ trình duyệt nào mở nó, kèm lời giải thích dễ hiểu và cách khắc phục cho từng mục. Miễn phí, không cần tài khoản.
Bài đọc liên quan