判断访问设备/方式/浏览器内核(PC、wap、微信等)

2018-02-06 15:35:00
linefo
原创
857


技术原理


一般只能通过HTTP协议里面约定的header信息来判断。

设备访问服务器时,会在header里面附带一些特定信息,告诉访问服务器自己的情况(包括对设备/浏览器的说明)。严格来说这种区分方式不准确,因为有不发送/伪造的可能。

安卓和IOS的app访问的话,不太了解,这里就不讨论了。


这类信息一般约定是写在HTTP_USER_AGENT里,另外HTTP_X_WAP_PROFILE、HTTP_VIA、HTTP_ACCEPT可能也有。


判断思路


通常,每种编程语言都有获取到HTTP_USER_AGENT值的方式,比如在PHP中使用 $_SERVER["HTTP_USER_AGENT"] 可以获取到。

接着判断HTTP_USER_AGENT的值里面是否含有特定的文本(比用使用正则类函数)即可。


使用下面的PHP代码输出某次访问HTTP_USER_AGENT的值:
echo "<h2>".$_SERVER["HTTP_USER_AGENT"]."</h2>";exit;


结果:


特定的 HTTP_USER_AGENT 文本


(指包含下面的文本即可判断,内容不定时更新)


能代表移动端访问的


'sony',
'ericsson',
'mot',
'samsung',
'htc',
'sgh',
'lg',
'sharp',
'sie-',
'philips',
'panasonic',
'alcatel',
'lenovo',
'iphone',
'ipod',
'blackberry',
'meizu',
'android',
'netfront',
'symbian',
'ucweb',
'windowsce',
'palm',
'operamini',
'operamobi',
'openwave',
'nexusone',
'cldc',
'midp',
'wap',
'mobile'



代表在微信中访问的


'MicroMessenger'


其他header信息


HTTP_X_WAP_PROFILE


一般来说,含有 HTTP_X_WAP_PROFILE 即是来自移动设备。


HTTP_VIA


一般来说,如果 HTTP_VIA 里面包含文本“wap”则是来自移动设备。


HTTP_ACCEPT


通过这里判断可能不太准确(这里没有验证过)。

通过在 HTTP_ACCEPT 中查找“vnd.wap.wml”和“text/html”两个文本。

约定是这样的:

(1)如果只支持wml,不支持html,则是移动设备

(2)如果支持wml和html,但文本排序,wml在html之前则是移动设备

文章分类
联系我们
联系人: Mr.Chen
QQ: 185391277