Dữ liệu từ máy thật, có sẵn để dùng
Thay vì một persona tổng hợp sinh ra từ seed, hãy dùng --fingerprint-profile để báo cáo các giá trị thu thập từ một máy Chrome thật — chuỗi GPU, màn hình, font và số liệu phần cứng của máy đó. Thư viện clearcote-profiles chuyển bộ dữ liệu mở chrome-fingerprints (~10k bản ghi Chrome trên Windows thật) thành hàng nghìn profile nhất quán, dùng được ngay.
72
mẫu đã được tuyển chọn và kiểm định — đa dạng GPU, dùng được ngay
~8.5k
profile trong toàn bộ thư viện được sinh ra
~10k
bản ghi từ Chrome thật trong bộ dữ liệu gốc
Được tuyển chọn, không chỉ chuyển đổi. Các bản ghi được tạo khi render bằng phần mềm (SwiftShader / llvmpipe) hoặc bên trong VM (Parallels / VMware / VirtualBox) đều bị lọc bỏ — bản thân adapter của VM đã là một dấu hiệu để lộ. Các bản ghi bị loại vẫn được giữ lại trong thư mục excluded/ của repo cho minh bạch, cùng với manifest index.json gắn thẻ cho từng profile theo hãng GPU, dòng GPU, màn hình và concurrency (trong bộ mẫu: Intel 29 · NVIDIA 34 · AMD 9).
Profile chứa gì — và cố ý không chứa gì
Các giá trị được báo cáo
- GPU — các chuỗi vendor/renderer unmasked của WebGL, bảng getParameter và danh sách extension được hỗ trợ
- Màn hình — độ phân giải, vùng khả dụng, độ sâu màu, device-pixel-ratio, gam màu
- Phần cứng — hardwareConcurrency và deviceMemory
- Font, giọng đọc speech synthesis, sample rate & độ trễ âm thanh
Phiên bản trình duyệt (luôn được cập nhật)
Profile không chứa User-Agent, phiên bản Chrome hay các brand UA-CH. Bộ dữ liệu gốc là Chrome 117, còn Clearcote dùng một engine mới hơn nhiều. Nếu nhập cả phiên bản cũ, trình duyệt sẽ tự nhận là 117 trong khi hoạt động như phiên bản thật của nó — và chính sự lệch nhau đó có thể bị phát hiện. Clearcote giữ phiên bản hiện hành của riêng mình; chỉ các giá trị thu thập được là đi mượn.
{
"meta": { "id": "vinyzu-04201", "gpu_vendor": "Intel", "gpu_family": "Arc" },
"hardware_concurrency": 12,
"device_memory": 8,
"screen": { "width": 1920, "height": 1080, "color_depth": 24, "device_pixel_ratio": 1 },
"webgl": {
"UNMASKED_VENDOR_WEBGL": "Google Inc. (Intel)",
"UNMASKED_RENDERER_WEBGL": "ANGLE (Intel, Intel(R) Arc(TM) A770 Graphics Direct3D11 vs_5_0 ps_5_0, D3D11)"
},
"fonts": { "detected": ["Arial", "Calibri", "Cambria", "Consolas", "Segoe UI", "… 390 more"] },
"audio": { "BaseAudioContextSampleRate": 48000, "AudioContextBaseLatency": 0.01 }
}Thứ bạn thực sự tải về: mỗi profile là một file JSON. File này là một máy desktop Intel Arc A770 — toàn bộ giá trị mà một máy thật báo cáo, được thu thập nguyên vẹn: bảng driver của Arc A770, 12 luồng, 8 GB, màn hình 1080p và 395 font đã cài. Thêm 71 profile nữa có sẵn trong samples/, và ~8.5k profile khác qua generate.py.
Profile không phải là phần cứng. Profile thay đổi những gì trình duyệt báo cáo, chứ không thay đổi thứ vẽ ra pixel của bạn — canvas, WebGL readback và audio vẫn đến từ chính chiếc máy bạn đang chạy, và không trình duyệt nào thay đổi được điều đó. Vì vậy, hai tài khoản dùng hai profile khác nhau trên cùng một máy vẫn render ra canvas giống hệt nhau. Nếu bạn cần mỗi tài khoản trông như một máy khác ở cấp độ pixel, điều đó đến từ seed fingerprint riêng cho từng tài khoản, không phải từ profile.
Cách cấu hình
Đo trên pixelscan và BrowserScan với ~30 cấu hình. Hai quy tắc dưới đây là những quy tắc thực sự làm thay đổi kết quả.
1Báo cáo GPU thật
Dù thế nào thì máy host của bạn vẫn là thứ vẽ ra pixel. Khai báo một GPU khác nghĩa là tên GPU và kết quả render không khớp nhau, và các scanner tính hash trên kết quả render sẽ trừ điểm vì điều đó. Bật disable_gpu_fingerprint=True để GPU được báo cáo khớp với GPU đang thực sự làm việc — nó đổi WebGL và WebGPU cùng lúc, nên hai bên không bao giờ mâu thuẫn nhau. Profile vẫn cung cấp màn hình, font và số liệu phần cứng.
2Mỗi tài khoản một seed — và đừng dùng chung với profile
Chỉ dùng profile thì mọi tài khoản sẽ có cùng một canvas, vì profile chỉ thay thế các giá trị được báo cáo và không hề động đến quá trình render. Canvas riêng cho từng tài khoản đến từ seed fingerprint. Đặt cả seed và một profile thu thập cùng lúc là tổ hợp duy nhất bị scanner gắn cờ là tampering (can thiệp) — hãy chọn một trong hai. Với nhiều tài khoản, hãy chọn seed.
Thiết lập nhiều tài khoản: mỗi tài khoản một seed riêng + GPU thật + proxy riêng. Hãy để canvas noise ở trạng thái bật — tắt nó đi là mất luôn canvas riêng cho từng tài khoản mà bạn vừa bỏ công thiết lập.
import clearcote
# ONE ACCOUNT, ONE IDENTITY — the multi-account setup
browser = clearcote.launch(
fingerprint="acct-1", # unique per account: this is what varies the canvas
disable_gpu_fingerprint=True, # report the real GPU, so name and render agree
geoip=True, # timezone + language follow the proxy
proxy={"server": "..."}, # one per account
) # note: no fingerprint_profile — a seed replaces it
# A CAPTURED MACHINE INSTEAD — for a single identity, not a fleet
# (the repo's samples/ set works out of the box)
browser = clearcote.launch(
fingerprint_profile="samples/vinyzu-04201.json", # an Intel Arc A770 desktop
disable_gpu_fingerprint=True,
) # note: no fingerprint seed alongside itTự sinh toàn bộ thư viện
Bộ chuyển đổi chuẩn (canonical converter) nằm trong repo của trình duyệt và được ghim làm dependency — phần tuyển chọn được xếp thêm lên trên:
pip install -r requirements.txt # dataset + canonical converter
python generate.py # -> profiles/*.json (~8.5k profiles)
python generate.py --samples 80 --out samples # regenerate the sample setThích trỏ và nhấp chuột hơn?
Profile Manager duyệt thư viện này giúp bạn — lọc theo hãng GPU của máy host — và khởi chạy profile bạn chọn thành một cửa sổ tương tác. Không cần viết dòng code nào.

Giấy phép & ghi công. Các profile được phái sinh từ chrome-fingerprints © Vinyzu, nên thư viện dùng giấy phép GPL-3.0 — lưu ý điều này khác với chính trình duyệt Clearcote, vốn dùng BSD-3-Clause. Hãy giữ nguyên phần ghi công và giấy phép nếu bạn phân phối lại.
Profile Manager
Ứng dụng desktop duyệt thư viện này theo hãng GPU của máy host — và khởi chạy chỉ với một cú nhấp.
Các flag fingerprint
Tài liệu tham khảo đầy đủ về --fingerprint-profile và mọi switch danh tính khác.
Vì sao tính nhất quán là yếu tố quyết định
Cách phát hiện bot thực sự hoạt động — lý do các quy tắc này tồn tại.