简述
在测试app的时候,比如:页面无法展示内容(由服务端接口返回值提供),往往就需要去定位问题,找到所抛出的请求是否异常,pc浏览器和mac浏览器访问是可以通过平台提供的软件(Charles&fiddler)来实现,那么如何抓到手机抛出的请求呢?实现抓取手机网络请求
这里分别介绍两种工具在两种平台下的使用方法
- (2015/12/02 更新 加入抓取https的设置方法)
①、Pc windows+fiddler(Http&Https)
条件:
第一种为适用于windows平台,适用fiddler来实现抓取手机网络请求。
1、windows安装fiddler
2、pc和手机需要在同一局域网下(二级路由也没有问题)
第一步:安装设置fiddler代理
Fiddler --> Tools --> Fiddler Options --> connections
在Fiddler listen on port中填入一个自定义4位数端口号(不能以0开头)
勾选选项“Allow remote computers to connect”
至此fiddler的代理设置已完成(设置完成后不要关闭fiddler)
第二步:手机设置连接fiddler代理
这里以ios 设备为例;(安卓也是一样的)
打开手机的WIFI设置,连接局域网可用WIFI;点击已连接WIFI后的 i 标志;进入网络代理设置
设置HTTP代理为手动,填入fiddler所在的pc机ip地址,以及设置的Fiddler listen on port并保存
!设置截获Https请求(Fiddler)
依次找到菜单:FiddlerOption --> https标签
1.勾选 Captrue HTTPS CONNECTs
和 Decrypt HTTPS traffic
选项
2.手机安装fiddler信任证书以iPhone为例,安卓同理
安卓和IOS均要使用手机系统浏览器,然后输入代理ip和端口号来访问你的fiddler代理ip:
如下图(代理fiddler的pc的ip是192.168.101.34,端口号8888)
如果代理成功的话,会看到以下页面,如果不成功请检查ip和防火墙
点击“FiddlerRoot certificate”会跳转到系统证书安装确认页面:
<b>安装完成之后,再次访问指定网页,所有的https请求的返回值你都可以看得到了~</b>
②、Mac+Charles
条件:
第二种为适用于mac os平台,使用charles来实现抓取手机网络请求。
1、mac os 安装charles(charles工具试用期是30天的,破解教程自行度娘或者call me)
2、mac os 和手机需要在同一局域网下 (二级路由无效)
第一步:设置Charles代理
1、运行Charles程序,设置port
Proxy --> ProxySettings --> Proxies --> httpProxy
第二步:获取mac os当前ip
按住option键,点击右上角的wifi图标即可看到IP:
第三步:设置手机HTTP代理
3、打开iOS设置,进入当前wifi连接,设置HTTP代理,将服务器填为上一步中获得的IP,即192.168.199.147,端口填8888:
<b>结尾:在不使用的时候需要将手机中得HTTP代理关闭,否则pc或者mac关机或者关闭软件后,手机无法正常上网!</b>
!设置截获Https请求(Charles)
如果不进行下面的设置,https的reqeust和response都是乱码,设置完之后https就可以抓包了。
Mac端安装证书操作:
点击Charles菜单的help->SSL->proxying->install charles root certificate
<b>在到电脑的钥匙串中信赖刚刚的证书:</b>
手机端安装证书操作:
下载 Charles证书解压后导入到iOS设备中(将crt文件作为邮件附件发给自己,再在iOS设备中点击附件即可安装;也可上传至百度之类的网盘,通过safari下载安装)
电脑端操作:
1、在Charles的工具栏上点击设置按钮,选择Proxy Settings…
切换到SSL选项卡,选中Enable SSL Proxying。(别急,选完先别关掉)
2、SSL选项卡的Locations里填写要抓包的域名和端口,点击Add按钮,在弹出的表单中Host填写域名。比如填api.baidu.com,Port填443
!!!信任证书
很多小伙伴在设置好代理,装好证书之后依然会出现https请求无法解包的情况!经过一段时间研究,找资料发现原来仅仅只是需要一个小设置即可!
设置-通用-关于本机-证书信任设置 , 打开相应证书的开关即可
打开对应证书开关