Code Bye

不用useragent,如何判断是手机端还是PC端

一年前做手机页面的时候,大家都用useragent,一年后的今天可能有人已经不用了。
因为都在模拟useragent,
那么问题来了。
不用useragent,如何判断是手机端还是PC端呢?
这次分给的少,前几次都是满分。结果都是没人回答,散分都散不了。


20分
没有其他值比useragent更用来标识客户端信息的,除非你在js中去做各种判断,如果是在服务端只能通过header协议头分析
引用 1 楼 rayyu1989 的回复:

没有其他值比useragent更用来标识客户端信息的,除非你在js中去做各种判断,如果是在服务端只能通过header协议头分析

是这样的,我输出了所有的headers和ServerVariables。
通过android和ios以及PC的对比,发现几乎无差异。
差异点是,不同的浏览器可能会多几个变量,比如手机端的uc浏览器有个x-ucBrowser-UA,微信浏览器有个x-Requested-with值是com.tencent.mm
我再尝试一下,看有没有新的发现。 
走过路过,请签名帮顶


20分
还是要使用 useragent,这是比较稳妥的办法。如果用户刻意去模拟,你是没有任何办法的。
除非用户的浏览器是你开发的,这样就可以设计一个加密过的token来和服务端进行双向验证,否则别无他法。
header 包头信息是每个浏览器自定义的,也就是说,这个不是你网站的服务器能控制的了的。
我随便写两行代码,就可以随意的模拟成任何浏览器去访问你的网站,而你的网站会以为我是使用的哪个浏览器,但其实我什么浏览器都没用。所以版主放弃吧,从逻辑上来看你这是钻牛角尖了。
你不信你随便找一个你认为做的很好的大网站,手机打开就自动变成wap页,电脑就是pc页,但是你用电脑模拟一下手机页,你看看是什么结果。这种事情你根本控制不了,比方说有的人把电脑的js执行给关了,就不会执行你网站的任何js,他要是把cookie关了,他可能无法登录你的网站,他要是把默认字体给改了,看到的网页样式可能会完全跟你设计的不一样了。这些你都是无法改变的事情。
这些用户只是少数,但是一定会有。你要做的其实不是非要让这些人去按照你的意愿去打开网页,而是要防止他们的非正常操作会影响到你的服务器,你的网站,以及你的网站安全。
引用 3 楼 chengbin0602 的回复:

还是要使用 useragent,这是比较稳妥的办法。如果用户刻意去模拟,你是没有任何办法的。
除非用户的浏览器是你开发的,这样就可以设计一个加密过的token来和服务端进行双向验证,否则别无他法。

你这么说让我想起了app内嵌网页,就是这样的。用个token来表示是app访问过来的。

这次的问题,到这里我基本放弃掉了。
还是会在服务器进行useragent的验证。
采用的方法是

Request.Browser.IsMobileDevice

以前是拿到useragent 然后进行indexof,现在看看.NET 自己封装的这个获取Browser好不好使。


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明不用useragent,如何判断是手机端还是PC端