目的
navigator.userAgent
是浏览器中最常被网站读取的属性之一,用于识别浏览器内核、版本、操作系统信息,甚至设备类型。它是构成浏览器指纹的关键字段,广泛应用于用户识别、设备分类、风控策略中。
通过伪造 User-Agent,可隐藏真实设备与浏览器信息,从而增强隐私保护与账号防关联能力。
🎯 教学目标
- 了解 JS 层如何读取 User-Agent
- 掌握在 Chromium C++ 层实现 User-Agent 指纹伪造的方式
- 掌握 Easybr 浏览器如何通过参数配置实现动态替换
✅ JS 获取 User-Agent
打开浏览器,按下 F12 进入控制台,输入以下代码查看当前浏览器 UA 信息:
navigator.userAgent
示例输出:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.3029.110 Safari/537.3
这条信息暴露了操作系统、位数、浏览器内核及版本,非常容易被网站用作唯一标识。
🛠️ C++ 源码修改方法(Chromium 定制版)
在 Easybr 指纹浏览器中,User-Agent 可通过底层源码伪造,也可通过命令行或配置动态注入。
方式一:命令行注入(推荐)
--user-agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 13_5) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.5 Safari/605.1.15"
可通过配置启动参数或在 Easybr 环境配置中设置自定义 UA
方式二:源码层注入
修改文件:content/browser/renderer_host/render_process_host_impl.cc
伪代码参考:
std::string user_agent = base::Easybrparam::GetValue("navigator.userAgent");
if (!user_agent.empty()) {
command_line->AppendSwitchASCII(switches::kUserAgent, user_agent);
}
解释:
- 使用
base::Easybrparam
从配置文件读取伪造的 UA 字符串; - 注入到
kUserAgent
启动参数; - 全局替换浏览器 UA 输出,包括
navigator.userAgent
与 HTTP 请求头。
🧪 测试网站推荐
验证 User-Agent 修改是否成功可以使用以下平台:
- 🔗 https://browserleaks.com/useragent
- 🔗 https://amiunique.org/fp
- 🔗 https://ebrower.com/easybrpcclass/gongnengjishu.html
- 🔗 https://whatismybrowser.com
✅ 总结
通过伪造 navigator.userAgent
,可以有效隐藏真实设备操作系统、浏览器类型与版本信息,是对抗指纹识别的重要手段。相比静态设置,Easybr 支持通过命令行参数或配置文件动态控制 User-Agent,更灵活适配多账号环境。
配合 Canvas、WebGL、Audio、语言、字体、分辨率等多项指纹模块伪造,能构建出完整且不可追踪的浏览器环境,广泛应用于跨境电商、广告营销、自动化运营等对隐私要求极高的场景。