You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Selenium如何伪造浏览器类型与版本?应对JavaScript检测

如何完整伪造浏览器类型与版本(绕过User-Agent和JS检测)

当然可以实现完整的浏览器伪装,只修改请求头的User-Agent确实不足以应对JS层面的检测,需要从请求头+JS环境属性+浏览器特征三个维度入手,以下是针对Firefox的具体方案:

一、浏览器扩展(最简便的方案)

选择支持全维度伪装的扩展,避免只改请求头的工具:

  • 使用User-Agent Switcher and Manager这类扩展(注意选带"JS属性替换"功能的版本),它会同时替换:
    • HTTP请求头中的User-Agent
    • JS环境中的navigator.userAgent、navigator.appName、navigator.appVersion、navigator.vendor等核心属性
    • 部分浏览器特有对象(比如模拟Safari的window.safari或Opera的opera对象)

二、Firefox原生配置(手动基础伪装)

通过about:config手动修改参数,覆盖基础属性:

  • 修改general.useragent.override:替换请求头和基础UA字符串
  • 修改general.appname.override:对应navigator.appName(比如Safari填Netscape,Opera填Opera)
  • 修改general.appversion.override:对应navigator.appVersion
  • 修改general.vendor.override:对应navigator.vendor(比如Safari填Apple Computer, Inc.)

注:这种方式只能覆盖基础属性,无法处理浏览器特有对象或指纹检测,适合简单场景。

三、油猴脚本(自定义精准伪装)

如果需要更精细的控制,用Tampermonkey注入脚本,手动覆盖所有JS可检测的属性:

// 覆盖核心导航器属性,以伪装Safari为例
Object.defineProperty(navigator, 'userAgent', {
  get: () => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 14_0) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.0 Safari/605.1.15'
});
Object.defineProperty(navigator, 'appName', {
  get: () => 'Netscape'
});
Object.defineProperty(navigator, 'appVersion', {
  get: () => '5.0 (Macintosh; Intel Mac OS X 14_0) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.0 Safari/605.1.15'
});
Object.defineProperty(navigator, 'vendor', {
  get: () => 'Apple Computer, Inc.'
});

// 模拟Safari特有对象
if (!window.safari) {
  window.safari = { pushNotification: {} };
}

// 删除Firefox特有标识
delete window.InstallTrigger;

你可以根据目标浏览器(Opera/Safari等)的真实属性,调整脚本中的值,甚至模拟更多特有API。

四、应对高级指纹检测

部分网站会用Canvas、WebGL或字体指纹识别,这类检测需要额外处理:

  • 使用Canvas Fingerprint Defender扩展模糊Canvas指纹
  • 通过扩展或脚本修改WebGL的渲染参数,匹配目标浏览器的指纹特征

内容的提问来源于stack exchange,提问作者WhiteBite

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 13:50:25