Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript“userAgent”与浏览器有何不同;s头请求_Javascript_Browser_Http Headers_User Agent_Navigator - Fatal编程技术网

Javascript“userAgent”与浏览器有何不同;s头请求

Javascript“userAgent”与浏览器有何不同;s头请求,javascript,browser,http-headers,user-agent,navigator,Javascript,Browser,Http Headers,User Agent,Navigator,Javascript报告的导航器用户代理是否可能与作为用户代理头发送的不同 我问这个问题的部分原因是:我有一个从JS收集用户代理并向服务器报告的应用程序。在大多数合法案件中,这是不必要的。然而,他们真的会有所不同或撒谎吗 navigator.userAgent为“只读”使更改不太可能。我只是想知道,无论出于何种原因,黑客或扩展程序是否真的可以在普通浏览器或无头浏览器上这样做。是的。一些IE版本至少只报告了javascript版本中的插件。 好的,下面是我自己测试和研究的答案。在野外,头端和客户端

Javascript报告的
导航器
用户代理
是否可能与作为用户代理头发送的不同

我问这个问题的部分原因是:我有一个从JS收集用户代理并向服务器报告的应用程序。在大多数合法案件中,这是不必要的。然而,他们真的会有所不同或撒谎吗


navigator.userAgent
为“只读”使更改不太可能。我只是想知道,无论出于何种原因,黑客或扩展程序是否真的可以在普通浏览器或无头浏览器上这样做。

是的。一些IE版本至少只报告了javascript版本中的插件。
好的,下面是我自己测试和研究的答案。在野外,头端和客户端之间存在三种类型的用户代理差异:

短UA字符串策略通过IE发送。使用通过
navigator.userAgent
提供的扩展UA字符串。然后,他们添加了添加的功能


默认情况下,用于iOS的Tor浏览器发送Windows桌面Firefox用户代理。 目前:
Mozilla/5.0(Windows NT 6.1;rv:45.0)Gecko/20100101 Firefox/45.0

然而,Javascript报告了一个通用的Safari移动web视图用户代理


UCMini(U2)发送UCWeb用户代理,请求如下:

UCWEB/2.0(iPad;U;CPU操作系统7_1,如Mac操作系统X;en;iPad3,6)U2/1.0.0 UCBrowser/9.3.1.344

当客户端报告此古怪问题时:


Mozilla/5.0(X11;U;Linux i686;zh CN;r:1.2.3.4)Gecko/

是,以防不完整的用户代理欺骗

浏览器插件,如

  • [过时]
  • [过时]
将只更改http头中的用户代理,而不更改javascript变量中的用户代理

  • navigator.userAgent
  • navigator.appCodeName
  • navigator.appName
  • navigator.appVersion
  • 导航平台
  • 导航器供应商
  • navigator.vendorSub
要实现[更]完整的用户代理欺骗,还需要更改javascript变量:

  • [过时]
  • greasemonkey的用户脚本:
测试页面:

// ==UserScript==
// @name        Change navigator.userAgent
// @namespace   Rob W
// @description Changes navigator.userAgent to IE on IEGallery.com
// @match       http://www.iegallery.com/*
// @run-at      document-start
// @grant       none
// @version     1
// ==/UserScript==

Object.defineProperty(navigator, 'userAgent', {
    value: 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)'
});