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