我们为什么要做抓包?在实际开发中,抓包可以让我们便捷地分析服务端和客户端数据的交互内容,可以帮助我们排查问题和模拟测试一些场景,比如线上有个数据异常问题,我们不知道是服务端还是客户端存在问题,就可以抓个包分析, 目前市面上抓包的工具非常多,fiddler是一款免费的抓包工具,功能非常强大,主要用于window比较多,当然我们通过一些方式,也能在mac下跑,它就类似于mac下常用的charles抓包工具,当然charles收费的, 本文主要探索了Mac下fiddler的搭建过程以及配置,使用fiddler进行简单的数据抓包。
首先,需要下载mono,登录https://www.mono-project.com/download/stable/
进入mono官方网站,选择对应平台,点击Download Mono 即可
需要特别注意的是,如何这里下载很久还是不成功,最后显示失败,可能访问不到资源,刚开始我不知道导致折腾了很久,最后是通过下载成功了(科学上网后下载还是很快的),下载后的资源是个.pkg的压缩包,解压并逐步安装即可,网上有资料说下载后在终端执行/Library/Frameworks/Mono.framework/Versions/
其次,我们需要配置下mono来把它加入到环境变量中,在终端依次执行下面命令: sudo vi ~/.bash_profile
export MONO_HOME=/Library/Frameworks/Mono.framework/Versions/版本号
export PATH=$PATH:$MONO_HOME/bin,注意其中的版本号一定要与安装的mono保持一致,具体可以打开终端执行命令: mono –version,既可以查看到,OK,到这里保存退出就可以了。
最后,有了mono,这时我们需要下载fiddler,进到fiddler官方网站,https://www.telerik.com/download/fiddler,下载对应的mac压缩版本,解压到一个非中文字符的路径下,在terminal中一路cd到fiddler.exe的文件夹下,执行: sudo mono –arch=32 Fiddler.exe,稍等片刻图形界面就出来了:
看起来和charles类似,下面我们就可以开始fiddler抓包app的探索了.
前面我们已经将fiddler成功跑起来了,在使用之前,我们还需要做几件事,首先,我们要配置下WiFi, 类似于charles, fiddler其实也是通过将自己设置为一个代理服务器来实现对数据的抓取和分析的,因此,我们需要保证手机和mac连在同一个WiFi下,在Mac下输入ifconfig命令,就可以看到电脑端的ip地址,打开手机无线局域网,设置WiFi的代理服务器,选择“手动”,
服务器输入mac的ip地址,端口设为8888(可以自己另行设置,不过要保持与fiddler中的一致), OK,代理服务设置好了,但是还有一件重要的事,那就是配置DNS(不知道安卓手机要不要设置,本次实验中iphone这里要设置,不然总是抓取不到包),点击手机中的配置DNS项,选择手动,添加服务器,将电脑的ip地址输入(就是刚才设置的代理服务器地址,也就是在mac下ifconfig下查看到的那个),到了这里,手机端还有最后一个设置,那就是安装HTTPS证书,很简单,在手机浏览器中输入mac ip:设置的端口号,这里的mac ip就是前文中的ip,端口也是前文中设置的8888,比如本次实验我的是:192.168.1.103:8888,输入后访问会有下面提示:
下载并在手机设置里面安装即可。
其次,特别地,我们需要在mac上的fiddler中进行设置,依次点击toolàoptions,打开设置界面如下,connections选项中,勾选Allow remote computers to connect复选框,设置端口号,这里我设置为8888(与前文手机端设置的保持一致),HTTPS选线中,勾选复选框如图:
至此,fiddler就可以开始监听手机端请求了。
先来看下fiddler的主界面,
最顶部是菜单栏,接下来是工具栏,下面左边是URL列表,可以清晰地看到请求状态,协议,主机,URL地址等信息,选中某个请求,右边就可以显示该请求的详细内容,上面是请求的一些信息,下面是返回的一些信息,可以切换tab查看。
我们对比charles的一些主要用法,逐步探索fiddler的一些用法。
首先, 我们常用到断点这一操作,fiddler中,我们选中左边的某个url,点击顶部菜单栏中的rule,然后选中automatic breakpoints,下级子菜单会出现请求前、请求后的断点,不同charles,这里一次好像只可以选中其一,选完后,再次请求就会走到断点,如图,我这里断点后显示:
我设置的是返回后断点,左边的红色图标全部表示返回后断点,这个时候,我们可以在右边做一些修改,然后点击绿色按钮继续执行。如果要全部执行,就点顶部的Go按钮.
接下来我们看下地址映射功能,
左边选中某个URL,右边点击AutoResponder,勾选Enable Rules, Unmatched request passthrough,添加一条规则,这里假设我想将http://www.d4cc.com 映射为http://baidu.com,在底部两栏中分别选择保存即可。然后再次请求可以发现确实被转发了.
这里由于fiddler软件报异常,就没有继续进行网速设置模拟了,实际上,fiddler与charles一样,也是可以设置网速模拟的,在rules菜单栏立面可以自定义规则即可,后面将继续完善对fiddler的探索(猜想charles有的fiddler应该都有,有待进一步探索)。至此,本次研究到此暂时到此。
以上若与各位知道的有出入,欢迎各位大佬及时指正并提出宝贵意见。
ps: 参考资料链接https://www.jianshu.com/p/5086646e9aa4