本文作者: jsweibo
本文链接: https://jsweibo.github.io/2019/04/30/JavaScript%E4%B8%AD%E7%9A%84Navigator-prototype-userAgent/
摘要
本文主要讲述了:
- 作用
- 如何修改 userAgent 的值
- 采集 userAgent 的注意事项
正文
作用
Navigator.prototype.userAgent
作为Navigator.prototype
的getter
属性,被所有Navigator
的实例继承。返回用户代理字符串
示例:
1 | Object.getOwnPropertyDescriptor(Navigator.prototype, 'userAgent'); |
示例:
1 | // "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36" |
如何修改 userAgent 的值
由于 userAgent 是getter
属性,因此 userAgent 的值无法被赋值运算符=
修改。
示例:
1 | console.log(navigator.userAgent); |
但是这并不意味着 userAgent 的值无法被修改。
示例:
1 | Object.defineProperty(Navigator.prototype, 'userAgent', { |
采集 userAgent 的注意事项
- User-Agent 请求头的值不一定等于
navigator.userAgent
- 即使使用
navigator.userAgent
来采集 userAgent,360 旗下的浏览器只会向特定的域名(例如:https://www.360.cn
)暴露自己真正的 userAgent,QIHU 360SE
或QIHU 360EE
,平时都会伪装成 Chrome 的 userAgent
示例:
http://localhost/index.html
1 |
|
当用Windows 10; Internet Explorer/11.0
打开时:
User-Agent
请求头:
1 | Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko |
navigator.userAgent
1 | Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; rv:11.0) like Gecko |
参考资料
本文作者: jsweibo
本文链接: https://jsweibo.github.io/2019/04/30/JavaScript%E4%B8%AD%E7%9A%84Navigator-prototype-userAgent/
本文对你有帮助?请支持我
- 本文链接: https://jsweibo.github.io/2019/04/30/JavaScript%E4%B8%AD%E7%9A%84Navigator-prototype-userAgent/
- 版权声明: 除非另有说明,否则本网站上的内容根据署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可。