看了多篇博客,受益匪浅!在这里做一个总结。
如题,这里把问题做一个大的划分:
- Fiddler对Android手机网络请求抓包
- Fiddler对Android模拟器网络请求抓包
- Fiddler对Https请求抓包
- Fiddler对使用OkHttp网络框架的app请求抓包
问题 1:
问题 2:
网上查找了许多,但是针对的模拟器版本比较老或者使用的是Genymotion,我用的是Android Studio自带的模拟器,版本是23,发现与那些教程讲的有些出入。如果你遇到的问题和我一样,可以看下这篇博客。
问题 3:
注意这篇文章第七步,作者导出了证书(.cer文件)并在安装在Android模拟器,这样Fiddler就可以抓取Android模拟器中所有App的网络请求了。
如果你不想安装证书在模拟器,你只是想要Fiddler抓取模拟器中指定App里面的请求,你也可以在执行网络请求的时候将证书信息提交给服务器。如何提交?
参见
Android Https相关完全解析 当OkHttp遇到Https
通过 HTTPS 和 SSL 确保安全
问题 4:
我想去了解Fiddler的目的是想更便捷、更直观、更具体的看到APP对服务器的请求以及响应数据,即便okhttp提供了日志打印。现在我想解决这样一个问题,我希望Fiddler能监听并抓取我本机模拟器中指定的APP所发出的请求。如果你的项目使用的是OkHttp网络框架,只需要设置一下代理就可以了:
client = new OkHttpClient.Builder()
.proxy(new Proxy(Proxy.Type.HTTP, new InetSocketAddress("192.168.1.134", 8888)))
.sslSocketFactory(sslSocketFactory, trustManager)
.build();
IP 为 本机IP地址,可在DOS里面通过ipconfig拿到,端口号 8888,由PC来代理请求,PC又会经过Fiddler的。为何这样设置?
参见 :
【HTTP】Fiddler(一) - Fiddler简介
这样,Fiddler就可以抓取该APP中所有请求了。
由于默认情况下Fiddler会抓取很多网络请求,如果你只想测试你App中包含某个Host下的请求,你可以