您的位置:

User-Agent大全——不可忽视的身份证明

每个访问网站的客户端都会发送请求头(User-Agent),用来告诉服务器访问者的身份信息,服务器通过判断这个请求头来返回适合该客户端的响应。

一、微信User-Agent大全

在微信开发中,需要获取微信客户端的User-Agent。下面是微信不同版本的User-Agent:

Mozilla/5.0 (iPhone; CPU iPhone OS 12_1_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/16D57 MicroMessenger/7.0.3(0x17000320) NetType/WIFI Language/zh_CN
Mozilla/5.0 (iPad; CPU OS 12_1_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/16D57 MicroMessenger/7.0.3(0x17000320) NetType/WIFI Language/zh_CN
Mozilla/5.0 (iPhone; CPU iPhone OS 12_1_4 like Mac OS X) AppleWebKit/604.1.34 (KHTML, like Gecko) Mobile/16D57 MicroMessenger/6.7.4 NetType/WIFI Language/zh_CN
Mozilla/5.0 (iPad; CPU OS 12_1_4 like Mac OS X) AppleWebKit/604.1.34 (KHTML, like Gecko) Mobile/16D57 MicroMessenger/6.7.4 NetType/WIFI Language/zh_CN

通过正则表达式可以提取微信的版本号和操作系统信息:

const userAgent = navigator.userAgent;
const regexp = /MicroMessenger\/([\d\.]+)/i;
const match = userAgent.match(regexp);
const wxVersion = match && match[1] || '';

二、浏览器User-Agent大全

浏览器的User-Agent有很多种,比如:

  • Chrome的User-Agent:
          Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36
        
  • Firefox的User-Agent:
          Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:64.0) Gecko/20100101 Firefox/64.0
        
  • Safari的User-Agent:
          Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_2) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0.2 Safari/605.1.15
        

对于浏览器的User-Agent,一般用途是判断浏览器类型和版本号。可以通过以下代码获取到浏览器的vendor、type和version:

const userAgent = navigator.userAgent.toLowerCase();
const vendor = /(chrome|firefox|safari|opera)/.exec(userAgent)[1];
const type = /(msie|trident)/.test(userAgent) ? 'IE' : '';
const version = /(?:[^\s]+(?:ri|ox|ya|me|it|ra|x))?\s?(\d+\.\d+)/.exec(userAgent)[1];

三、User-Agent在线检测

使用User-Agent在线检测服务,可以检测出不同User-Agent的系统、浏览器、渲染引擎、机型等信息。下面是三个常用的User-Agent在线检测服务:

使用这些服务,可以更加深入地了解不同User-Agent字符串的组成和含义,方便进行User-Agent的匹配和处理。

四、User-Agent获取和修改

在JavaScript中,可以通过navigator.userAgent获取到当前客户端的User-Agent。一般情况下不建议修改User-Agent,但是我们可以在移动端的WebView中修改User-Agent,以便更好地适配不同设备。下面是修改User-Agent的代码:

// 修改User-Agent
navigator.__defineGetter__('userAgent', function(){
  return 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.3';
});

五、获取User-Agent和其它信息

在进行User-Agent匹配时,需要获取当前客户端的User-Agent和其它信息。下面是获取User-Agent和当前URL的代码:

// 获取当前URL和User-Agent
const url = window.location.href;
const userAgent = navigator.userAgent;
console.log(`url: ${url}`);
console.log(`userAgent: ${userAgent}`);

除此之外,我们还可以获取浏览器窗口尺寸、语言等信息:

// 获取浏览器窗口尺寸和语言
const width = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
const height = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;
const language = navigator.language || navigator.userLanguage;
console.log(`width: ${width}`);
console.log(`height: ${height}`);
console.log(`language: ${language}`);

六、User-Agent如何理解

User-Agent是一种HTTP头部,用来告诉服务器客户端的身份信息。常用于浏览器、爬虫等,以便服务器提供适合该客户端的响应。用户代理字符串(User-Agent String)是User-Agent的具体表现形式。在User-Agent字符串中,一般包含浏览器的类型、版本、操作系统、内核、设备型号、语言等信息。