真实采集,拿来即用
不再使用由种子 (seed) 合成的身份画像 (persona),而是通过 --fingerprint-profile 报告从一台真实 Chrome 机器上采集到的数值:它的 GPU 字符串、屏幕、字体和硬件数值。clearcote-profiles 配置库把开放的 chrome-fingerprints 数据集(约 10k 条真实 Windows Chrome 采集记录)转换成了数千个一致、开箱即用的配置文件。
72
精选样本,均经过验证,覆盖多种 GPU,开箱即用
~8.5k
完整生成的配置库中的配置文件数
~10k
源数据集中的真实 Chrome 采集记录
经过筛选,而不只是格式转换。在软件渲染(SwiftShader / llvmpipe)下或虚拟机(Parallels / VMware / VirtualBox)内采集的记录都已剔除——虚拟机显卡本身就是一个破绽。为保持透明,被剔除的记录保留在仓库的 excluded/ 目录中;旁边的 index.json 清单为每个配置文件标注了 GPU 厂商、系列、屏幕和并发数(样本集中 Intel 29 · NVIDIA 34 · AMD 9)。
配置文件包含什么,又刻意不包含什么
它报告的数值
- GPU:WebGL 的 unmasked vendor/renderer 字符串、getParameter 参数表,以及支持的扩展列表
- 屏幕:分辨率、可用区域、色深、设备像素比、色域
- 硬件:hardwareConcurrency 和 deviceMemory
- 字体、语音合成音色、音频采样率 & 延迟
浏览器版本(保持最新)
配置文件不包含 User-Agent、Chrome 版本或 UA-CH 品牌信息。源数据集来自 Chrome 117,而 Clearcote 搭载的引擎要新得多。如果导入旧版本,浏览器就会声称自己是 117,行为却仍是它的真实版本——这种不一致本身就能被检测出来。Clearcote 保持自己的当前版本,只借用采集到的数值。
{
"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 }
}你实际下载到的就是这样的文件:每个配置文件就是一个 JSON 文件。这一个来自一台 Intel Arc A770 台式机,是一台真实机器完整采集下来的报告数值:Arc A770 驱动参数表、12 线程、8 GB 内存、1080p 屏幕和 395 款已安装字体。samples/ 中另有 71 个,还有约 8.5k 个可通过 generate.py 生成。
配置文件不是什么:硬件。配置文件改变的是浏览器报告的内容,而不是绘制像素的东西——Canvas、WebGL 读回和音频仍然来自你实际运行的那台机器,任何浏览器都改变不了这一点。因此,同一台机器上的两个账号即使使用两个不同的配置文件,渲染出的 Canvas 也完全相同。如果你需要每个账号在像素层面都像另一台机器,就要靠每个账号独立的 fingerprint 种子,而不是配置文件。
如何配置
我们用 pixelscan 和 BrowserScan 测量了约 30 种配置。真正影响结果的,是下面这两条规则。
1报告真实的 GPU
无论如何,像素都是由你的主机绘制的。声称另一块 GPU,就意味着名称和渲染结果对不上,而对渲染输出做哈希的检测工具会因此扣分。开启 disable_gpu_fingerprint=True 后,报告的 GPU 就与实际干活的那块一致——它会同时调整 WebGL 和 WebGPU,因此两者不会互相矛盾。屏幕、字体和硬件数值仍由配置文件提供。
2每个账号一个种子,而且不要和配置文件搭配使用
只用配置文件时,所有账号的 Canvas 都一样,因为它只替换报告的数值,从不触及渲染。每个账号各不相同的 Canvas 来自 fingerprint 种子。同时设置种子和采集的配置文件,恰恰是检测工具会标记为篡改的那种组合——二者只能选其一。多账号场景请选种子。
多账号配置:每个账号唯一的种子 + 真实 GPU + 独立代理。保持 Canvas 噪声开启——关掉它,等于丢掉了你刚刚换来的每账号独立 Canvas。
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 it生成完整配置库
标准转换器位于浏览器仓库中,并作为锁定版本的依赖引入;筛选逻辑叠加在它之上:
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 set更想用鼠标点选?
Profile Manager 会替你浏览这个配置库(按主机的 GPU 厂商筛选),并把选中的配置文件作为交互式窗口启动。完全不用写代码。

许可证 & 署名。这些配置文件派生自 chrome-fingerprints © Vinyzu,因此该配置库采用 GPL-3.0 许可——注意,这与 Clearcote 浏览器本身不同,后者采用 BSD-3-Clause。如果你再分发,请保留署名和许可证。