分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请轻击人工智能教程
Fiddler是位于客户端和服务器之间的HTTP(S)代理,它能够记录客户端和服务器之间的所有HTTP(S)请求,可以针对特定的HTTP(S)请求,分析网络传输的数据,还可以设置断点、修改请求的数据和服务器返回的数据。
Fiddler在客户端与服务器之间建立了一个代理服务器,Fiddler工作于七层中的应用层,能够捕获通过的HTTP(S)请求。Fiddler启动后会自动将代理服务器设置成本机,默认端口为8888。Fiddler不仅能记录PC上浏览器的网络请求数据,还可以记录同一网络中的其他设备的HTTP(S)请求数据。数据传递流程大致如下:
1) 客户端向WEB服务器发送HTTP(S)请求时,请求会先经过Fiddler代理服务器。
2) Fiddler代理服务器截取客户端的请求报文,再转发到WEB服务器,转发之前可以做一些请求报文参数修改的操作。
3) WEB服务器处理完请求以后返回响应报文,Fiddler代理服务器会截取WEB服务器的响应报文。
4) Fiddler处理完响应报文后再返回给客户端。
现在APP中的数据传输基本上都使用HTTPS传输,传输的数据都是经过加密的,这增加了我们分析数据包的难度,还好Fiddler除了可以抓取HTTP数据包,还可以抓取HTTPS数据包。由于HTTPS传输需要使用到CA证书,所以抓取HTTPS数据包时需要做一些特殊配置。Fiddler截取HTTPS报文的流程大致如下:
1) 客户端请求建立HTTPS链接,发送客户端支持的加密协议及版本列表等信息给服务器端。
2) Fiddler接受客户端请求并伪装成客户端向WEB服务器发送相同的请求。
3) WEB服务器收到Fiddler的请求以后,从请求中筛选合适的加密协议,并返回服务器CA证书,证书中包括公钥信息。
4) Fiddler收到WEB服务器的响应后保存服务器证书并自签名一个CA证书,伪装成服务器,把该证书下发给客户端。
5) 客户端验证证书合法性。(Fiddler能否抓取到HTTPS报文关键看这一步)
6) 客户端生产对称密钥,通过证书的公钥加密发送给服务器。
7) Fiddler拦截客户端的请求以后,使用私钥解密该报文,获取对称加密秘钥,并使用服务器证书中带的公钥加密该对称密钥发送给WEB服务器。此时对称密钥已经泄露了,以后可以使用该秘钥界面客户端和服务器端传输的数据。
8) WEB服务器接收到客户端发送的加密的对称密钥后使用私钥解密,并使用对称密钥加密测试数据传给客户端。
9) Fiddler使用前面获取的对称密钥解密报文。
10) 客户端验证数据无误以后HTTPS连接就建立完成,客户端开始向服务器发送使用对称密钥加密的业务数据。
11) Fiddler使用前面获取的对称密钥解密客户端发送的数据并重新加密转发给服务器。
如果只是需要监听本机浏览器HTTP数据包的话,不需要做任何额外配置,打开Fiddler即可直接使用。
一般我们需要监听远程终端设备的网络请求,需要做以下配置。打开Fiddler,在菜单栏中选择Tools->Options->Connections。输入监听端口(默认是8888),选择Allow remote computers to connect,点击确认然后重启Fiddler。
由于我们需要监控手机端的网络请求,所以还需要对手机端进行设置。首先确保手机网络和安装Fiddler的电脑网络处于同一个Wi-Fi网络中。可以点击Fiddler主界面的右上角的“Online”按钮查看Fiddler所在主机的主机名和IP地址,配置手机网络时需要使用到这个IP地址。
但一般现在APP发送的都是HTTPS请求,所有需要设置Fiddler抓取HTTPS请求。前面也讲了,HTTPS数据报文传输的时候涉及到证书及数据加密的问题,所以Fiddler需要抓取HTTPS报文的话还需要做其他配置。
首先还是打开Fiddler配置:Tools->Options->HTTPS:
勾选Capture HTTPS CONNECTS和Decrypt HTTPS traffic选项,如果只是想抓取本机或者远程终端的数据报文,可以在…from all processes这个下拉框中选择。
打开iPhone手机浏览器,输入Fiddler所在主机的ip:8888,比如:192.168.1.106:8888。访问后,下载证书。
下载后在iOS设置中的描述文件中安装证书。
安装后,打开手机网络设置,选择跟Fiddler主机同一网络,在Wi-Fi高级设置中的代理栏下面选择手动设置,输入Fiddler主机的IP地址(上一步显示的IP)和监听端口号(前面默认8888那个),点击保存。一般这样就可以成功了,但iOS10以上还需要在设置-通用-关于本机-信任证书中,打开信任证书的开关。自此iOS上的代理设置成功。这些配置完成以后,重启Fiddler。我们在手机端打开有HTTPS链接的APP发现可以抓取HTTPS中的数据报文了。