Danh sách từng bước để tự kiểm tra vân tay trình duyệt của bạn: UA, múi giờ, GPU, font và cờ tự động hóa — trước khi hệ thống phát hiện làm điều đó.
Hệ thống phát hiện không chỉ hỏi liệu vân tay trình duyệt của bạn có độc đáo hay không — chúng còn kiểm tra liệu vân tay đó có nhất quán không, đúng như chủ đề của bài Tính nhất quán của vân tay: Tại sao tín hiệu mâu thuẫn bị gắn cờ. Đó là lý thuyết. Bài viết này là thực hành: một danh sách cụ thể bạn có thể áp dụng lên trình duyệt của chính mình, từng mục một, trước khi một hệ thống phát hiện thật sự làm điều đó. Hãy mở công cụ kiểm tra vân tay của BrowserInsight ở một tab khác và đối chiếu từng mục dưới đây.
Điểm chính
- Thực hiện bảy bước kiểm tra: UA so với hệ điều hành/nền tảng, múi giờ so với vị trí địa lý theo IP,
Accept-Languageso với khu vực IP, nhà sản xuất GPU/WebGL so với hệ điều hành được khai báo, font đã cài so với hệ điều hành được khai báo, độ hợp lý của kích thước màn hình/tỷ lệ pixel thiết bị, và cờ tự động hóa. - Mỗi bước so sánh hai tín hiệu lẽ ra phải kể cùng một câu chuyện về cùng một thiết bị — bất kỳ mâu thuẫn nào cũng là thứ đầu tiên một hệ thống chấm điểm nhất quán tìm kiếm.
- Hầu hết các bước mất chưa đến một phút với kiểm tra vân tay và kiểm tra kernel của BrowserInsight — không cần công cụ nào khác.
- Một mâu thuẫn đơn lẻ hiếm khi tự nó kích hoạt cảnh báo; danh sách này hữu ích nhất để phát hiện sự tích lũy của nhiều mâu thuẫn nhỏ do một tiện ích riêng tư, VPN, hoặc hồ sơ trình duyệt anti-detect để lại.
- Hãy coi đây là một bài tự kiểm tra, không phải một sự đảm bảo — hệ thống phát hiện thật sự còn đánh giá hành vi và tín hiệu ở tầng mạng mà một danh sách tĩnh không thể thấy được.
Trước khi bắt đầu
Mở công cụ kiểm tra vân tay ở một tab và kiểm tra kernel ở tab khác. Kiểm tra vân tay hiển thị user-agent, renderer WebGL, múi giờ, mảng ngôn ngữ, thông số màn hình và danh sách font của bạn ở cùng một nơi; kiểm tra kernel so sánh trình duyệt bạn khai báo với những gì engine JavaScript thực sự thể hiện từ bên trong — hữu ích để phát hiện một UA khai báo sai trình duyệt đang thực sự chạy. Thực hiện bảy bước kiểm tra dưới đây theo thứ tự; mỗi bước mất chưa đến một phút.
1. User-Agent so với hệ điều hành/nền tảng
So sánh chuỗi user-agent và navigator.platform. Chúng có cùng nêu tên một hệ điều hành không? Một UA khai báo "Windows NT 10.0" đi kèm giá trị platform là MacIntel, hoặc một UA iPhone đi kèm chuỗi platform Win32 — đây là những mâu thuẫn nội tại: cả hai giá trị này lẽ ra phải đến từ cùng một API cấp hệ điều hành và không thể bất đồng trên một thiết bị thật.
Đạt: UA và platform nêu cùng một họ hệ điều hành.
Không đạt: UA khai báo một hệ điều hành, nhưng navigator.platform báo cáo một hệ điều hành khác.
2. Múi giờ so với vị trí địa lý theo IP
Kiểm tra Intl.DateTimeFormat().resolvedOptions().timeZone — múi giờ hệ thống mà hệ điều hành của bạn báo cáo — so với khu vực mà địa chỉ IP của bạn được định vị trên công cụ tra cứu thông tin IP. Múi giờ America/Chicago đằng sau một IP tại Singapore là điều có thể giải thích được (người đang đi du lịch, người dùng VPN), nhưng khi kết hợp với các tín hiệu khác trong quá trình chấm điểm, đây chính là loại mâu thuẫn mà bài cách website phát hiện VPN đề cập.
Đạt: Khu vực múi giờ hợp lý với vị trí địa lý của IP. Không đạt: Múi giờ và vị trí địa lý theo IP chỉ về các châu lục hoặc lệch múi giờ khác nhau mà không có lời giải thích như du lịch/VPN.
3. Accept-Language so với khu vực IP
So sánh navigator.languages (và header Accept-Language mà các yêu cầu của bạn gửi đi) với ngôn ngữ thường gặp ở khu vực IP của bạn. navigator.languages phản ánh thứ tự locale của hệ điều hành, không chỉ là một cài đặt trình duyệt — vì vậy một phiên khai báo là "Chrome tại Mỹ" nhưng navigator.languages chỉ có ["zh-TW", "vi"], không hề có tiếng Anh, đã là bất thường, và càng đáng ngờ hơn khi kết hợp với việc không đạt bước kiểm tra múi giờ ở trên.
Đạt: Ít nhất một ngôn ngữ được báo cáo khớp với ngôn ngữ phổ biến của khu vực IP. Không đạt: Toàn bộ danh sách ngôn ngữ không hợp lý với vị trí được khai báo, đặc biệt khi kết hợp với các mâu thuẫn khác.
4. Nhà sản xuất GPU/WebGL so với hệ điều hành được khai báo
Mở phần WebGL trong công cụ kiểm tra vân tay và đọc chuỗi renderer chưa bị che giấu. Một số backend đồ họa chỉ tồn tại trên những hệ điều hành nhất định — token Direct3D trong chuỗi renderer chỉ có thể đến từ Windows, còn chuỗi ANGLE (Apple, ...) hoặc dựa trên Metal chỉ có thể đến từ macOS. Nếu UA của bạn khai báo macOS nhưng chuỗi renderer lại nêu tên backend Direct3D, tổ hợp này không chỉ hiếm — nó bất khả thi về mặt vật lý trên một thiết bị thật.
Đạt: Backend của chuỗi renderer nhất quán với hệ điều hành mà UA khai báo. Không đạt: Chuỗi renderer nêu tên một backend không tồn tại trên hệ điều hành được khai báo.
5. Font đã cài so với hệ điều hành được khai báo
Mỗi hệ điều hành desktop đi kèm một bộ font mặc định riêng biệt mà các hệ điều hành khác không có: Windows đi kèm các font như Calibri, Segoe UI, macOS đi kèm San Francisco, Helvetica Neue, còn các bản phân phối Linux phổ biến thì không có font nào trong hai bộ trên. Đối chiếu danh sách font mà công cụ kiểm tra vân tay báo cáo với hệ điều hành bạn khai báo — một phiên "Windows" nhưng không phát hiện được bất kỳ font độc quyền nào của Windows, hoặc danh sách font pha trộn font độc quyền của cả macOS lẫn Windows, là dấu hiệu cho thấy hồ sơ này được lắp ghép chứ không chạy trên một máy thật.
Đạt: Các font phát hiện được bao gồm ít nhất một số font độc quyền của hệ điều hành được khai báo, và không chứa font độc quyền của hệ điều hành khác. Không đạt: Danh sách font mâu thuẫn với hệ điều hành được khai báo, hoặc pha trộn font của các hệ điều hành không thể cùng tồn tại.
6. Độ hợp lý của kích thước màn hình/tỷ lệ pixel thiết bị
Nếu UA của bạn khai báo là điện thoại (iPhone hoặc Android), kích thước màn hình và hỗ trợ cảm ứng phải khớp với điều đó. Một UA điện thoại báo cáo độ phân giải màn hình 2560×1440 mà không có sự kiện cảm ứng, hoặc tỷ lệ pixel thiết bị không khớp với bất kỳ model điện thoại đã phát hành nào, là một trong những kẽ hở phổ biến nhất mà các công cụ tự động hóa trên desktop để lại khi đổi chuỗi UA mà không điều chỉnh model thiết bị bên dưới.
Đạt: Kích thước màn hình, tỷ lệ pixel thiết bị và hỗ trợ cảm ứng đều nhất quán với một thiết bị thật khớp với UA được khai báo. Không đạt: UA di động báo cáo độ phân giải cấp desktop và/hoặc không có hỗ trợ cảm ứng, hoặc ngược lại.
7. Cờ tự động hóa
Cuối cùng, kiểm tra các dấu hiệu tự động hóa trực tiếp: navigator.webdriver có báo cáo true không? Đối tượng window.chrome có tồn tại như lẽ ra phải có với trình duyệt được khai báo không? navigator.plugins và Permissions API có trả về kết quả nhất quán nội tại, không rỗng không? Đây là những điều đầu tiên một quy trình phát hiện bot kiểm tra, thường trước cả các bước so sánh tính nhất quán ở trên, và được trình bày chi tiết trong bài phát hiện trình duyệt headless.
Đạt: navigator.webdriver là false/undefined, và dữ liệu plugin/quyền trông giống một trình duyệt desktop bình thường.
Không đạt: navigator.webdriver báo cáo true, hoặc các thuộc tính xung quanh nó trông như đã bị vá một cách nhân tạo.
Cách diễn giải kết quả
Một bước kiểm tra không đạt riêng lẻ hiếm khi gây hậu quả nghiêm trọng — người dùng thật đôi khi cũng rơi vào những tổ hợp bất thường. Điều thực sự đẩy điểm số lên cao là sự tích lũy: múi giờ không khớp, cộng với ngôn ngữ không khớp, cộng với danh sách font không phù hợp với hệ điều hành được khai báo, là một câu chuyện hoàn toàn khác so với việc chỉ một mục không đạt. Nếu bạn đang dùng trình duyệt riêng tư, một tiện ích, hoặc VPN, hãy dự đoán rằng bước kiểm tra múi giờ/IP sẽ hợp lệ không đạt — đó là một sự đánh đổi có chủ đích, không phải lỗi — nhưng các bước kiểm tra GPU, font và cờ tự động hóa vẫn nên đạt trên một thiết bị thật, vì việc đổi đường mạng hay chuỗi UA không ảnh hưởng đến chúng.
Câu hỏi thường gặp
Tôi có cần đạt mọi mục trong danh sách này không?
Không nhất thiết. Người dùng VPN thường cố ý "không đạt" bước kiểm tra múi giờ/IP — đó chính là mục đích của việc dùng VPN — trong khi vẫn đạt mọi mục còn lại. Danh sách này hữu ích nhất để phát hiện những lần không đạt bất ngờ, đặc biệt là những lần bạn không thể giải thích bằng một công cụ mà bạn đang chủ động sử dụng.
Mục nào trong danh sách khó "sửa" nhất bằng công cụ riêng tư?
Chuỗi renderer GPU/WebGL (mục 4) và font đã cài (mục 5) khó nhất, vì chúng lần lượt được đọc từ phần cứng và hệ điều hành chứ không phải một cài đặt trình duyệt — để giả mạo chúng một cách thuyết phục đòi hỏi nhiều hơn việc đổi một header hay một thuộc tính JavaScript có thể đọc được.
Tôi có thể chạy danh sách này trên di động không?
Được, dù mục 5 (font) và mục 6 (màn hình/DPR) có ý nghĩa khác — hệ điều hành di động đi kèm bộ font hẹp hơn, đồng nhất hơn, và với UA điện thoại, tính nhất quán màn hình/cảm ứng mới là tiêu chí chính. Bài vân tay trình duyệt di động trình bày chi tiết điều gì thực sự tạo nên sự khác biệt trên các thiết bị di động.
Kết luận
Cả bảy bước kiểm tra này đều không cần công cụ nào ngoài những gì BrowserInsight đã chạy sẵn phía client. Thực hiện chúng theo thứ tự — UA/nền tảng, múi giờ/IP, ngôn ngữ/IP, GPU/hệ điều hành, font/hệ điều hành, màn hình/cảm ứng, và cờ tự động hóa — sẽ phát hiện đúng những mâu thuẫn mà một hệ thống chấm điểm nhất quán thật sự tìm kiếm, theo đúng thứ tự mà hầu hết các quy trình phát hiện áp dụng: các bước kiểm tra rẻ, gần như không có dương tính giả trước, các bước xác suất sau. Chạy kiểm tra vân tay và kiểm tra kernel cùng nhau, và bạn sẽ biết trước bất kỳ hệ thống phát hiện nào liệu cấu hình của mình có kể cùng một câu chuyện nhất quán hay không.
Đọc thêm:


