【问题标题】:How can I spoof my userAgent using a userscript?如何使用用户脚本欺骗我的 userAgent?
【发布时间】:2021-01-19 14:02:01
【问题描述】:

我正在尝试访问一个网站,但它不允许我这样做,因为它不支持我的浏览器。我相信它正在通过 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 的请求在我欺骗它之前已经完成。有什么方法可以在不使用扩展的情况下做到这一点?谢谢。

【问题讨论】:

  • 为什么不使用内置的浏览器工具呢?它们允许用户代理欺骗。 --- 老实说,网站需要停止这种“我们不支持您的浏览器”bs。
  • @evolutionbox,我可以在不支持我的浏览器的不同网站上运行用户脚本,但在其他不支持此类操作的网站上禁用它。
  • @evolutiobox 事情是 general.userAgent.override 不起作用,因为我没有使用 firefox,虽然 userAgent spoofer 扩展非常有用,但我希望 userScript 有更简单的方法.不过感谢您的帮助!
  • 当然,请求是在您更改用户代理之前完成的。您可能正在该请求产生的页面上运行此脚本。大多数允许用户代理欺骗的常见浏览器都有许多浏览器插件。或者你甚至可以自己写一个。但是在已经加载的页面上执行代码将无济于事,因为 1)为时已晚 2)一旦刷新页面,它就消失了......

标签: javascript user-agent detection userscripts spoofing


【解决方案1】:

在建立初始 HTTP/s 连接并且页面即将加载后加载用户脚本。

到那时,服务器已经收到了用户代理数据。因此,用户脚本不能欺骗服务器。

插件可以拦截和改变浏览器和服务器之间的初始通信,从而欺骗用户代理。

使用自己的服务器(例如 Google、Yahoo、Facebook 等)的网站可以访问他们的服务器,因此通过用户脚本欺骗它们的可能性较小(取决于其他因素)。

在商业服务器上运行的网站可能无法访问上述服务器数据,必须使用 JavaScript 来获取用户代理,因此存在欺骗用户代理的可能性。

类似地,使用稍后执行的页面 JavaScript(例如,在单击某项事件时)以获取当时的用户代理的网站可以使用用户脚本进行欺骗。

【讨论】:

  • 我希望这不是真的,但事实就是如此。谢谢你的回答。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-13
  • 2013-06-21
  • 2018-08-27
  • 2013-05-03
  • 2023-03-15
相关资源
最近更新 更多