‘壹’ 抓包工具 Fiddler抓包之后的数据分析
原文:
https://blog.csdn.net/quiet_girl/article/details/50579570
(1)下图是登录一个网络网站的登录操作的抓包,在Inspectors中能看到HTTP Request数据和HTTP Response数据。
[ 图1:HTTP REQUEST 和 HTTP RESPONSE 数据 ]
(2)Fiddler左下角有个命令行工具叫做QuickExec,可以直接输入命令,常见的命令有:
help 打开官方的使用页面介绍,所有的命令都会列出来
cls 清屏 (Ctrl+x 也可以清屏)
select 选择会话的命令
?.png 用来选择png后缀的图片
bpu 截获request
设置完毕,在手机端操作登录网络云盘账号
[ 图2:设置Rules --> Automatic Breakpoints --> Before Requests后请求的页面 ]
对于这个截取的页面可以进行数据的更改,更改之后点击绿色的”Run to Completion“即可进行更新数据后的登录操作,操作结果是由更新之后的数据决定的。
(2)Fiddler截取HTTP Response数据
有两种方式实现截取HTTP Response数据:
A. 第一种: Rules --> Automatic Breakpoints --> After Requests:这种方法会中断所有的会话
如何消除此命令呢? 点击Rules-> Automatic Breakpoint ->Disabled
B. 第二种: 在命令行中输入命令: bpafter www..com (这种方法只会中断 www..com )如何消除命令呢? 在命令行中输入命令 bpafter
下面是一个手机端小恩爱软件的例子:
在手机端操作登录小恩爱软件,并打开个人中心带有图片的地方,
设置完毕之后,操作小恩爱,打开带有图片的地方,将带有图片的那个url(如何观察带有图片:在Inspectors tab下,可以在下面的response框中观察到图片),将其拖入”Auto Responser“ 下,在此tab最下面,可以重新选择图片文件进行更改,点击”Save“之后则小恩爱上的个人头像会变成更改之后的图片。
[ 图5:截取HTTP Response之后的页面 ]
[ 图6: Find a file选择需要上传的图片 ]
下面可以在Fiddler Script下面进行编码,编码完毕,点击”Save Script“,那么这段编码就会对你后续的操作起作用。
这里编码是把 www..com 的会话变成绿色的,编码内容:if (oSession.HostnameIs(" www..com ")) { oSession["ui-color"] = "green"; },
‘贰’ Charles ios抓包
本地开发项目的时候,我们可以通过谷歌浏览器的debug模式来看request以及response的数据,但是如果我们开发移动端真机项目呢?或者真机线上出现问题如何抓取数据查看接口入参和出参呢?这就需要用到“抓包”
抓包就是通过工具抓取应用的接口数据然后通过分析数据得出问题结论的一种常用的工作方法。下面简述一下在iOS上面安装Charles并且实现抓包的过程,抓取范围包括web/APP内嵌web/小程序原生/小程序内嵌web等
【1】获取PC的IP地址和端口
在Charles菜单栏 -> Help -> Local IP Address中可以查看PC的IP地址。
一般Charles端口是默认的8888,可以从Charles菜单栏 -> Proxy -> Proxy Settings查看
【2】配置iPhone代理
设置 -> 无线局域网 -> 局域网信息(i) -> 配置代理 -> 手动
在配置iPhone代理完毕后,就可以通过Structure或者Sequence窗口预览HTTP请求的数据了。但由于HTTPS请求被加密过,预览请求时只能预览到乱码数据。要预览到HTTPS请求的数据明文,需要PC和iPhone安装证书授权。
【1】PC安装证书
在Charles菜单栏 -> Help -> SSL Proxying -> Install Charles Root Certificate中可以为PC安装证书
这样,就可以使用Charles中抓包iPhone发出的HTTPS请求并预览明文数据了。
【3】 启动抓包SSL权限
在Charles菜单栏 -> Proxy -> SSL Proxying Settings中勾选Enable SSL Proxying,然后在Locations中添加需要抓包的Host和Port即可。或者直接写*端口写443图示如下:
可以抓取对应添加的域名的Https的接口的数据
‘叁’ Fiddler怎么对IPhone手机的数据进行抓包分析
配置Fiddler, 允许"远程连接"
打开Fiddler, Tools-> Fiddler Options 。 (配置完后记得要重启Fiddler).
选中"Decrpt HTTPS traffic", Fiddler就可以截获HTTPS请求
选中"Allow remote computers to connect".是允许别的机器把HTTP/HTTPS请求发送到Fiddler上来
大功告成,开始抓包
现在IPhone上的应用(比如Safari, Firefox,itunes, App Store)发出的HTTP/HTTPS都可以被Fiddler获取。
实例:打开Safari,
1. 输入http://www.cr173.com/z/qvodplayer/. 看看Fiddler能否捕获。
2. 输入https://dynamic.12306.cn/otsweb/ 看看Fiddler能否捕获。
是不是HTTP和HTTPS都截获到了????, 你不但能截获, 还可以下断点,修改Request, 修改Response, Do what you want.
用完了, 记得把IPhone上的Fiddler代理关闭, 以免IPhone上不了网。
只能捕获HTTP,而不能捕获HTTPS的解决办法
有时候会发现, Fiddler 只能捕获IPhone发出得HTTP请求, 而不能捕获HTTPS请求, 原因可能是证书没有安装好。 解决办法是:
1. 先把IPhone上所有的Fiddler证书删除 (拿出IPhone, 点”设置“->“通用”->"描述文件")
2. 安装上面的方法,重新安装Fiddler证书
以上内容来自:http://blog.csdn.net/rztyfx/article/details/8861201
‘肆’ 如何对抓到的数据包分析
首先我们打开wireshark软件的主界面,在主界面上选择网卡,然后点击start。wireshark即进入抓包分析过程。在本篇我们选择以太网,进行抓包。接下来再界面我们可以看到wireshark抓到的实时数据包。我们对数据包的各个字段进行解释。
1.No:代表数据包标号。
2.Time:在软件启动的多长时间内抓到。
3.Source:来源ip。
4.Destination: 目的ip。
5.Protocol:协议。
6.Length:数据包长度。
7.info:数据包信息。接下来再界面我们可以看到wireshark抓到的实时数据包。我们对数据包的各个字段进行解释。接下来我们点击解析后的某一条数据可以查看数据包的详细信息。在抓包过程中,我们可以点击图标启动或者停止。来启动或者停止抓取数据包。
‘伍’ iOS App的tcp、udp数据包抓取与分析教程
在对app进行安全分析时,有时需要检查app的网络接口请求是否安全,网络协议交互是否可被恶意利用。因此就需要运行app并捕获其与服务端交互的网络数据进行分析。前面文章已介绍过http、https数据包的捕获,该篇文章主要介绍捕获app的tcp、udp流量数据。我们将 使用tcpmp捕获tcp、udp流量 ,再 通过wireshark过滤、分析app的tcp、udp流量 。
一、tcpmp捕获app流量
在运行app后,不要马上关掉app进程,我们要找出与app通信的 服务端ip 或者 端口 以及 网络协议(tcp、udp) ,方便后续wireshark过滤
新开一个终端,ssh再连接一次ios设备,查看app的进程pid(比如该app的进程pid为11524),如下所示
找到app的进程pid后,查看app的网络交互情况,我们使用 lsof ,它可查看系统中的文件使用情况,广义上网络套接字也属于文件描述符,因此可以通过lsof查看,如下所示
lsof -i -a -p <pid> #我们上面查看到的进程pid
-i 表示 列出所有网络连接
-a 表示 指定当前用户
-p 表示 某个进程(pid)
我们即可看到该app网络交互的 网络协议 、 ip 、 端口 等
最后停止tcpmp捕获app网络数据,结束抓包
二、wireshark过滤分析app流量
参考链接:
https://linux.die.net/man/8/lsof
‘陆’ 如何进行手机APP的数据爬取
Python爬虫手机的步骤:
1. 下载fiddler抓包工具
2. 设置fiddler
这里有两点需要说明一下。
设置允许抓取HTTPS信息包
操作很简单,打开下载好的fiddler,找到 Tools -> Options,然后再HTTPS的工具栏下勾选Decrpt HTTPS traffic,在新弹出的选项栏下勾选Ignore server certificate errors。
设置允许外部设备发送HTTP/HTTPS到fiddler
相同的,在Connections选项栏下勾选Allow remote computers to connect,并记住上面的端口号8888,后面会使用到。
好了,需要的fiddler设置就配置完成了。
3. 设置手机端
设置手机端之前,我们需要记住一点:电脑和手机需要在同一个网络下进行操作。
可以使用wifi或者手机热点等来完成。
假如你已经让电脑和手机处于同一个网络下了,这时候我们需要知道此网络的ip地址,可以在命令行输入ipconfig简单的获得,如图。
好了,下面我们开始手机端的设置。
手机APP的抓取操作对于Android和Apple系统都可用,博主使用的苹果系统,在此以苹果系统为例。
进入到手机wifi的设置界面,选择当前连接网络的更多信息,在苹果中是一个叹号。然后在最下面你会看到HTTP代理的选项,点击进入。
进入后,填写上面记住的ip地址和端口号,确定保存。
4. 下载fiddler安全证书
在手机上打开浏览器输入一个上面ip地址和端口号组成的url:http://192.168.43.38:8888,然后点击FiddlerRoot certificate下载fiddler证书。
以上就简单完成了所有的操作,最后我们测试一下是否好用。
5. 手机端测试
就以知乎APP为例,在手机上打开 知乎APP。下面是电脑上fiddler的抓包结果。
结果没有问题,抓到信息包。然后就可以使用我们分析网页的方法来进行后续的操作了。
‘柒’ 抓包数据怎么分析
一、抓包中请求组成:请求行、请求头、空行、请求体
1.请求行:请求行由请求方法字段、URL字段和HTTP协议版本字段3个字段组成,它们用空格分隔。比如 GET /data/info.html HTTP/1.1。(按我理解,就是请求信息的第一行)
2.请求头:HTTP客户程序(例如浏览器),向服务器发送请求的时候必须指明请求类型(一般是GET或者 POST)。如有必要,客户程序还可以选择发送其他的请求头。大多数请求头并不是必需的,但Content-Length除外。对于POST请求来说 Content-Length必须出现。(按我理解,就是请求的各种信息)
3. 空行不怎么看的出来:它的作用是通过一个空行,告诉服务器请求头部到此为止。(按我理解,可以忽略不计)
4.请求体:浏览器真正发送给服务器的数据。(按我理解是需要提交的参数)
若方法字段是GET,则此项为空,没有数据
若方法字段是POST,则通常来说此处放置的就是要提交的数据
二、响应组成:响应行、响应头、响应体
1.响应行:响应行一般由协议版本、状态码及其描述组成 比如 HTTP/1.1 200 OK。(按我理解,响应信息里面的第一行)
2.响应头:响应头用于描述服务器的基本信息,以及数据的描述,服务器通过这些数据的描述信息,可以通知客户端如何处理等一会儿它回送的数据。(按我理解,就是响应的各种信息)
3.响应体:响应体就是响应的消息体,如果是纯数据就是返回纯数据,如果请求的是HTML页面,那么返回的就是HTML代码,如果是JS就是JS代码。(按我理解,就是请求发送后,系统的响应,真正返回给client的东西)