javascript - 如何使用用户脚本欺骗我的 userAgent?
问题描述
我正在尝试访问一个网站,但它不允许我这样做,因为它不支持我的浏览器。我相信它正在通过 userAgent 检测来检测我的浏览器。所以我想创建一个 userScript 来修改我的 userAgent,这样网站就无法检测到我的浏览器。我试过了:
// ==UserScript==
// @name Change UserAgent
// @namespace http://tampermonkey.net/
// @version 0.1
// @description Spoofs the userAgent
// @author You
// @include *
// @run-at document-start
// ==/UserScript==
Object.defineProperty(navigator, 'userAgent', {
value: "MyCustomUserAgent",
configurable: false
});
尽管它向我显示 userAgent 是一个自定义值,但我相信在我可以欺骗之前完成对 userAgent 的请求。有什么方法可以在不使用扩展的情况下做到这一点?谢谢你。
解决方案
在建立初始 HTTP/s 连接并且页面即将加载之后加载用户脚本。
到那时,服务器已经收到了用户代理数据。因此,用户脚本不能欺骗服务器。
附加组件可以拦截和更改浏览器和服务器之间的初始通信,从而欺骗用户代理。
使用自己的服务器(例如 Google、Yahoo、Facebook 等)的网站可以访问他们的服务器,因此通过用户脚本欺骗它们的可能性较小(取决于其他因素)。
在商业服务器上运行的网站可能无法访问上述服务器数据,并且必须使用 JavaScript 来获取用户代理,因此存在欺骗用户代理的可能性。
类似地,使用稍后执行的页面 JavaScript(例如,在单击某物时的事件上)以获取当时的用户代理的网站,可能会被用户脚本欺骗。
推荐阅读
- oracle - Oracle 表单从现有记录中插入一条新记录
- python - 我有一个数据集,其列是单词。如何将相同的列相互添加?
- html - 在 Github 上创建目录 (TOC):有没有办法可以摆脱要点,从而获得更清晰的 TOC?
- firebase - yield 表达式所隐含的类型必须是可分配的
- ios - 如何从 NSError 代码中找到错误描述?
- node.js - 为什么随着循环变长,Node-Fetch 在运行循环中获取 600 次重复所需的时间越来越长?
- html - 第 N 个孩子,但与第一个孩子相关联
- python - 在 TensorFlow Keras 中仅将偏差设置为不可训练
- html - div宽度有间隙
- r - 如何在 R 中返回矩阵我打印的矩阵计算?