Android 配置Fiddler抓包
将浏览器的代理设置成Fiddler能够实现Fiddler抓取浏览器的请求。同理,Android手机配置Fiddler作为代理服务器,从而让Fiddler能够截获Android的流量来实现抓包。
在配置抓包之前,请保证手机Wifi和安装了Fiddler的PC网络位于同一局域网(可互相ping通)。
配置抓HTTP包
第一步,获取Fiddler所在PC的IP地址,以及Fiddler的代理服务器端口地址,默认为8888
可以通过ipconfig命令等查看,最简单的就是将鼠标移到Fiddler窗口右上角的online字样上面,会自动提示当前电脑IP地址。
获取IP地址
比如,我当前PC IP地址为172.20.224.63
打开Fiddler上Tools-->Options,选择Connections选项卡,可以查看到代理端口地址。默认为8888。你可以自行配置成其他端口号。
还有,请勾选“Allow remote computers to connect”(这是允许Android手机通过代理进行网络访问)。
获取端口号第二步,手机Wifi连接成功后,高级选项中配置代理。
手机连接和PC位于同一局域网的wifi,连接成功后,进入到高级选项中。(不同手机有不同的进入方法,早期手机是长按已经连接上的wifi,现在有些手机直接提供了进入配置的箭头按钮。)
将代理服务器主机名修改为第一步获取的IP地址,端口号为第一步获取的端口号。然后保存。
以上配置OK,打开手机进行网络访问吧,看看Fiddler上有没有HTTP请求包。
实际测试,如果发现没有数据包,你需要检查Fiddler是否打开,是否允许远程电脑访问,以及端口号和IP地址是否配置正确,然后重启试试看(重启Fidder、手机重连Wifi,重新配置等)。
以上配置的仅仅是抓取HTTP请求,对于HTTPS请求,你还是看不到。下面介绍下,HTTPS抓包配置。
配置抓HTTPS包
HTTPS也是需要通过Fiddler代理来抓取的,所以呢,前面的配置代理的过程不变。下面介绍其他涉及到证书安装方面的。
配置Fiddler能够抓HTTPS包
打开Tools->Options,选择HTTPS选项卡,按照下图进行勾选。
然后会自动弹出提示框,让你信任Fiddler的根证书,点击
Yes
。信任根证书
点击
Yes
后,Fiddler就向PC安装根证书,这个时候PC的警告提示框弹出来,选择是(Y)
进行安装。安装根证书
后面还有其他弹框,统一选择
是
,保证能够安装上。如果你之前选择了否,导致没安装上也不要紧。重新在Options->HTTPS选项卡里面,点击
Actions
按钮,在弹出列表中点击Trust Root Certificate
会重新弹出让你安装根证书的提示框。
image.png
手机上安装Fiddler根证书
PC上安装好了根证书之后,还需要在手机上安装根证书,才能保证Fiddller能够正确解析出HTTPS包。(原理是,手机通过Fiddler做了代理后,HTTPS请求进行握手时候获取的证书就是Fiddler自己生成的证书,这个证书在手机上默认不受信任,这样会导致手机端认为服务端非法从而断开HTTPS握手,导致请求失败。所以,我们需要让手机信任Fiddler的根证书。)
手机在配置好HTTP代理后,打开浏览器,输入:http://ipv4.fiddler:8888/。实际上ipv4.fiddler
会引导到Fiddler所在PC的IP地址上。所以,你输入http://<pc ip>:<port>也是可以的。(题外话,ipv4.fiddler
这个域名不是外网通用域名,你知道为啥会正确解析不?猜想是Fiddler自己提供了本地DNS解析服务)
然后点击下载Fiddler的根证书,下载成功后进行安装。安装成功后,你在手机的证书管理器中是可以看到自己安装的证书的。
通常位于手机安全->凭据存储->用户凭据中。
OK,以上是所有的配置。
配置成功后,观察Fiddler,手机进行一些操作,看看HTTPS的请求能解析不。如果你遇到下面的异常:
javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
很大可能是由于手机上没有安装Fiddler的根证书。当然,还有例外,如果手机Android系统为7.0以上,即便安装了Fiddler的根证书,也会出现这个异常。原因请参考https://www.jianshu.com/p/0711ca1121e9