大概有两年没有去过chinaz的论坛了,昨天上去逛了逛。正好看到一个朋友在问百度是如何判断是不是手机登录的。有几个热心朋友回答的是js,我把百度首页的js看了下,没有找到一丝的手持设备判断的信息,我也就回答了两句,这里的判断应该属于程序部分的处理,不属于前端的范畴,是靠判断请求头信息(HTTP_USER_AGENT)进行判断的。不知道这位朋友能不能明白。
为了验证这个结论,这里我用firefox伪造请求头信息(主要是HTTP_USER_AGENT部分),来进行模拟手机访问百度网站。具体操作流程看下面。
如何用firefox伪造user agent来模拟手机访问网站
- 首先需要安装三个Firefox插件:wmlbrowser、XHTML Mobile Profile、User Agent Switcher;(我称它们为“伪娘三贱客”)
先来一睹“伪娘三贱客”的尊容
- 安装好后需要设置 User Agent Switcher ,点击菜单 工具 → Default User Agent → User Agent Switcher → Options → New→New User Agent... ,Description是你给它的一个称呼,比如小三,凹凸曼等等。关键的部分是User Agent里面的东西(这里是请求头主要的信息,程序会根据这个请求头进行判断你是否是手持设备),这里就需要把我们想要模拟的手持设备的信息填入了。
- 添加好后一路确定,回到浏览器界面。工具 →default user agent →选择你自己添加的那个 →在浏览器地址输入你想要访问的地址即可。
十分大方这里你会看到几个选项,Default User Agent (浏览器默认的信息),Internet Explorer (可以模拟ie6,7,8的头信息),Search Robots (模拟谷歌,雅虎,msn的蜘蛛),iphone 3.0 (默认存在的一个),图片中的小三是我自己添加的一个(伪造Android的头信息) - 下面列出几个比较常见手机的User Agent:(如果想要查询更多的手机user agent 信息的话,去看这里,还有这里)
iPhone3:
Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_0 like Mac OS X; en-us) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7A341 Safari/528.16
Android:
Mozilla/5.0 (Linux; U; Android 2.2; en-us; Nexus One Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1
诺基亚N95:
Mozilla/5.0 (SymbianOS/9.2; U; Series60/3.1 NokiaN95/30.0.015; Profile MIDP-2.0 Configuration/CLDC-1.1) AppleWebKit/413 (KHTML, like Gecko) Safari/413
诺基亚N97:
Mozilla/5.0 (SymbianOS/9.4; Series60/5.0 NokiaN97-1/20.0.019; Profile/MIDP-2.1 Configuration/CLDC-1.1) AppleWebKit/525 (KHTML, like Gecko) BrowserNG/7.1.18124
firefox伪造头信息,访问网站的效果
ok,当上面的几步你都熟悉了的话,就可以输入你想要造访的网站了。下面看我用我的“小三”拜访百度首页的情况(小三伪造的安卓的头)
Now,看到了吧。百度首页变了吧。而且智能的判断出了这个采用安卓系统访问!你可以换成iphone试试,框中的部分是不同的!
这里你也许会发现用浏览器访问的百度页面好大啊,其实这里是它页面css的问题,为了实现自适应屏幕宽度。如果想要得到好的浏览效果的话,可以参考如何在电脑上模拟手机登陆网站(Opera Mobile Emulator)
查看firefox发送的头信息,进一步验证我的结论
我们用firebug查看一下请求头信息User-Agent的内容,发现就是我修改的安卓的user agent。而百度首页返回了不同的页面,ok结论成立。百度是通过服务端进行手持设备的判断,不过怎样判断的,代码是什么,这里我就不甚了了了。
转载请注明:牛魔王的世界观 » firefox伪造请求头信息,模拟手机访问网站