如何使用用户脚本伪造UserAgent以绕过网站浏览器检测?解决脚本生效前检测问题
解决UserAgent修改后仍被网站提前检测的问题
你遇到的情况很典型——很多网站会在页面加载的最早期阶段(甚至早于用户脚本的document-start时机)就完成UserAgent检测,不管是前端内嵌的即时执行脚本,还是干脆在服务器端直接校验请求头里的UserAgent。下面给你几个完全不需要浏览器扩展的解决思路:
1. 用浏览器原生功能直接修改(最省心)
几乎所有现代浏览器都自带了修改UserAgent的选项,完全不需要额外工具:
- Chrome/Edge:按下F12打开开发者工具,点击右上角的三个点 →「More tools」→「Network conditions」,取消勾选「Use browser default」,然后输入你的自定义UserAgent即可。
- Firefox:打开开发者工具后,点击工具栏的齿轮图标进入设置,在「高级」分类里找到「User Agent」,选择「Custom」并输入目标值。
这种方式是从HTTP请求层面就替换了UserAgent,不管网站是服务器端校验还是前端早期检测,都会拿到你伪造后的信息。
2. 命令行/配置文件全局替换(适合长期使用)
如果需要长期固定使用某个自定义UserAgent,可以通过浏览器的启动参数或配置文件实现全局生效:
- Chrome/Edge:找到浏览器的快捷方式,右键「属性」,在「目标」栏的末尾添加
--user-agent="MyCustomUserAgent"(注意前面要加一个空格),保存后重新启动浏览器,整个会话的所有请求和JS环境都会使用这个UserAgent。 - Firefox:在地址栏输入
about:config,搜索general.useragent.override,将其值设置为你的自定义UserAgent即可。
3. 关于你之前的脚本为什么失效
你之前用Object.defineProperty修改navigator.userAgent的写法是正确的,但问题出在执行时机:即使设置了@run-at document-start,某些网站的检测脚本可能内嵌在<head>的最顶部,会在用户脚本之前执行,导致修改晚了一步。这种情况下,只有从请求层面或全局层面提前替换UserAgent,才能绕过检测。
内容的提问来源于stack exchange,提问作者Swangie
相关产品推荐
相关产品推荐

