每个访问网站的客户端都会发送请求头(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字符串中,一般包含浏览器的类型、版本、操作系统、内核、设备型号、语言等信息。