哈,这是在segmentFault
写的第一篇博客文章,祝好!
tags: 技术, wordpress, DIY, SEO, 安全, 前端, 互联网, 二次开发
今天疯了般地弄了数据链路层分析、应用层网站流量导向分析有关的东东…先来说说这个数据链接层的分析,限于篇幅和类型,明天再写第二篇。
分析背景:帮朋友弄二次开发的商城系统今天拿到微信上测试了,打开后发现顶部的图片小图标不见了,各种分析(对移动端的分析够折腾的)后才发现是利用了css
的一个特性——条件控制,针对高分辨率的显示屏CSS
代码里提供了简单的条件控制(见下面的代码,关注一下@media only screen
),当时直接扒腾讯微购前端代码时是在PC端测试的,并没有仔细看这里的代码,在PC
端72dpi
下面@2x.png
的图片压缩一半的分辨率一样可以显示的很清晰,但是如果拿这个图在高分辨率的移动端时,就显得很模糊,影响体验了。
@media only screen and (-webkit-min-device-pixel-ratio:1.5),only screen and (min--moz-device-pixel-ratio:1.5),only screen and (min-resolution:240dpi){
.icon_arrow_right{background-image:url(../images/weigou-20131223171219@2x.png?20131223171219);background-position:-203px -96px;background-size:211px}
.icon_back{background-image:url(../images/weigou-20131223171219@2x.png?20131223171219);background-position:-186px -81px;background-size:211px}
.icon_cart{background-image:url(../images/weigou-20131223171219@2x.png?20131223171219);background-position:-47px -109px;background-size:211px}
/* ....... */
可是这和数据链路层分析有什么关系呢?——腾讯在最近把微购页面做了安全访问控制后,在PC端不能直接访问了,访问时直接告知appid错误,需要登录。——也就是说,直接扒微购的链接样式已经行不通了。第一次扒的时候只保存了由@2x.png
压缩后的sprite
图,后面再想扒已经没有链接了,我需要采取其他手段来获取图片链接了。
现在的需求:@2x.png
图片链接。
解决方法:
1、之前在浏览器上下载@2x.png压缩后的图片有历史记录吧?没因为看AV
什么的清空记录吧?对的,一般这样的图片就放在同一个资源服务器上,找到它(妹的当时忘记去找了)。
2、下载历史记录被清空了…微购网站链接有对吧?CSS代码已经扒下来了对吧?直接把CSS代码里需要的图片url和已保存的微购链接拼接,多试几次也许可以成功——如果是把图片资源和网站文件放在同一台服务器(特指同一个域名)上的小型网站一般是可以成功的(但是腾讯微购不是)。
3、拼接若干次还是返回404
,那还是抓包分析吧。下面详细介绍这个(采用此方法,成功)。
抓包原理:
具体的请自行百度,这里就说说简单的。手机使用微信访问腾讯微购时采用的是HTTP协议,数据从你请求访问微购网站时,从你的手机上的无线网卡发送出去,经过运营商们的各种操作后把请求数据送到了目的地址——微购网站的服务器网卡,微购服务器分析发现你是要请求访问微购网站首页的,验证身份后认可请求,便开始把首页数据打包发送到运营商,各种操作后数据包又到了你的手机无线网卡上,这时手机解包、分析协议、解析数据、呈现数据到你看到首页漂亮MM,整个过程在网速快的情况下不到2秒。我们简单的抓包就在网卡上进行——但是尼玛手机无线网卡咋抓包啊?!手机上抓包不会但是电脑上抓包我会啊(大学老师教的好),那就考虑在手机->运营商->服务器中间加一道电脑网卡,即中转一次,在电脑上不是会用wifi共享么?那就可以用有线网卡和运营商连接,把无线网卡开启作为无线热点,然后手机连接电脑共享的wifi,这样访问就构成了手机->电脑无线网卡->电脑有线网卡->电信联通等运营商->服务器,我们只需要在电脑无线网卡(较好)或在电脑有线网卡上抓包即可。此方法可行,但是程序员的惰性开始发作了——电脑正用着wifi呢,无线网卡被占用了不想重新给有线网卡接线——或者用台式机压根就没有无线网卡肿么破?这时就想起来有个虚拟机的东西……
我们现在是需要抓@2x.png这张图的地址。我们打算用虚拟机的方法去抓它。那行,move on.
1、安装抓包工具wireshark:
2、安装安卓开发包(含java环境、eclipse编程环境、android虚拟机),官网去下载压缩包解压、配置一下就行了,教程多多自行搜索。
3、打开安卓虚拟机(出现PANIC、ERROR神马的在网上搜索一下就有解决方法,一般是路径问题):
4、在安卓虚拟机上使用浏览器下载安装微信(虚拟机默认会开虚拟网卡和电脑物理网卡NAT连接给安卓系统当3G网使用):
5、下载的同时打开wireshark观察流量变化较大的网卡(一般就两个),确定虚拟网卡后可以监听它了:
6、登录微信号并打开公众账号,进入微购物界面:
7、查看wireshark抓到的包,并找到HTTP协议的包,分析找到相关代码(图中高亮显示,根据CSS代码拼接就完成了):
结尾:其实文章更强调一个解决实际问题的过程,再怎么难的问题,分解成一步一步便能很快解决。另外,wireshark真心强大啊,有志之士定得多研究研究!