📌 目的
navigator.hardwareConcurrency
可用于获取当前设备的 CPU 逻辑核心数量。这一信息常被用于识别用户设备等级或作为浏览器指纹的一部分参与反欺诈系统分析。
通过伪造该信息,可以有效隐藏真实硬件配置,增强浏览器的防关联与隐私保护能力。
🎯 教学目标
- 了解 JS 层如何读取 CPU 核心数
- 掌握 Chromium C++ 层源码修改方式,实现 CPU 指纹伪造
✅ JS 获取核心数
打开浏览器,按下 F12 进入控制台,输入以下代码查看当前系统的逻辑核心数:
navigator.hardwareConcurrency
示例输出:
20
这说明你当前设备为 20 核心 CPU(高并发服务器可能存在此情况),这类信息极易被用于唯一化识别,因此需伪造。
🛠️ C++ 源码修改方法(Chromium 定制版)
在 Easybr 指纹浏览器中,我们通过修改 Chromium 源码内的相关模块来实现该参数的伪造。
修改位置示例:
navigator_concurrent_hardware.cc
unsigned NavigatorConcurrentHardware::hardwareConcurrency() const {
// ebb
base::Easybrparam param;
std::string device_concurrency = param.GetValue("hardware.concurrency");
if (!device_concurrency.empty()) {
int value = std::stoi(device_concurrency);
return static_cast<unsigned>(value);
}
// ebb end
return static_cast<unsigned>(base::SysInfo::NumberOfProcessors());
}
解释:
base::Easybrparam
:为 Easybr 内部参数获取类,可从配置文件或命令行读取设置值。- 若用户设置了
navigator.hardwareConcurrency=8
,则返回伪造后的 8 核; - 否则默认使用系统真实核心数。
🧪 测试网站推荐
验证修改是否生效可通过以下平台:
- 🔗 https://browserleaks.com/javascript
- 🔗 https://amiunique.org/fp
- 🔗 https://ebrower.com/easybrpcclass/gongnengjishu.html
- 🔗 https://gongjux.com/fingerprint/
✅ 总结
通过伪造 navigator.hardwareConcurrency
,我们能有效隐藏真实设备的处理器核心数,避免被用于浏览器指纹识别与设备关联分析。这一参数常与内存、显卡、WebGL、Canvas、Audio 等多个指纹模块联合使用,构成完整的设备画像。
结合 Easybr 提供的底层参数注入机制,可轻松实现定制化的 CPU 指纹配置,并通过浏览器参数/配置文件控制,无需重新编译,灵活易用,适用于跨境电商、账号运营、反检测等高匿名场景。