Charles 抓包工具使用详解

标签: none

什么是抓包

抓包(Packet Capture),实际上就是对网络请求(包括发送与接收)的数据包进行截获、重发、编辑、转存等操作,在Android下,也经常被用来进行数据截取等。学会抓包之后,获取某个App的API就是轻而易举的事了,当然,现在有很多App,都对API进行了加密验证,例如Mac校验。所以在这种条件下,调用人家的API就困难得多了。在局域网使用ARP攻击也可以抓包 KALI LINUX ARP攻击


抓包工具

抓包工具比较常见的是Fiddler,Wireshark等,个人比较喜欢Charles,官网,界面简洁人性化,只做数据截取的话,足够用了,并且同时支持Windows,Mac,Linux。下面就介绍如何利用Charles进行抓包。

去Charles的官方网站(http://www.charlesproxy.com)下载最新版的Charles安装包.

Charles是收费软件,可以免费试用30天。试用期过后,未付费的用户仍然可以继续使用,但是每次使用时间不能超过30分钟,并且启动时将会有10秒种的延时。

Charles

charles界面如图




主机允许代理模式

菜单栏Proxy -> Proxy settings,Port设置一个不与电脑其他端口冲突的端口号,比如8888,并勾选Enable transparent HTTP proxying,点击OK。这样,就允许了HTTP代理模式。






客户端设置代理

在Android/iOS下设置代理。

首先,通过ipconfig查看主机ip地址(mac或linux下使用ifconfig)。





然后,Android或iOS须和主机处于同一个局域网下(连同一个路由器,同网段)。

在Android中打开设置->WLAN->长按当前连接的Wifi->修改网络->高级选项->打开代理(手动)->输入主机ip地址及代理端口号->保存,如图






iOS开启代理的方式也差不多,进入设置->无线局域网-> 查看当前连接的Wifi信息->HTTP设置服务器和端口。如图






截获数据包

前面设置完毕之后,当Android/iOS 下,有进行网络请求时,那么Charles会弹出一个对话框,确认是否允许代理,点击Allow,表示允许。如图





这个时候,请求的地址就会出现在左侧的structure栏里面,点击可以查看具体请求的信息。




HTTPS

安装SSL证书

HTTPS请求,响应数据可能会出现乱码,这时候就需要安装Charles的CA证书.

1.去 http://www.charlesproxy.com/ssl.zip 下载CA证书文件。

2.解压该zip文件后,双击其中的.crt文件,这时候在弹出的菜单中选择“总是信任”,如下所示


3.从钥匙串访问中即可看到添加成功的证书。如下所示




当然如果要抓取iPhone设备上的HTTPS请求,需要在iPhone上也安装一个证书,在safari输入这个网址:http://charlesproxy.com/getssl ,点击安装即可


截取SSL信息

Charles默认并不截取SSL的信息,如果你想对截取某个网站上的所有SSL网络请求,可以在该请求上右击,选择SSL proxy,如下图





这样,对于该Host的所有SSL请求可以被截取到了。  用通配符* 可以监控所有HTTPS 请求.



模拟慢速网络

在做iPhone开发的时候,我们常常需要模拟慢速网络或者高延迟的网络,以测试在移动网络下,应用的表现是否正常。Charles对此需求提供了很好的支持。

在Charles的菜单上,选择"Proxy"->"Throttle Setting"项,在之后弹出的对话框中,我们可以勾选上“Enable Throttling”,并且可以设置Throttle Preset的类型。如下图





如果我们只想模拟指定网站的慢速网络,可以再勾选上图中的"Only for selected hosts"项,然后在对话框的下半部分设置中增加指定的hosts项即可。


修改网络请求内容

有些时候为了调试服务器的接口,我们需要反复尝试不同参数的网络请求。Charles可以方便地提供网络请求的修改和重发功能。只需要在以往的网络请求上点击右键,选择“Edit”,即可创建一个可编辑的网络请求。如下图





我们可以修改该请求的任何信息,包括url地址,端口,参数等,之后点击“Execute”即可发送该修改后的网络请求(如下图所示)。Charles支持我们多次修改和发送该请求,这对于我们和服务器端调试接口非常方便。






总结

通过Charles软件,我们可以很方便地在日常开发中,截取和调试网络请求内容,分析封包协议以及模拟慢速网络。用好Charles可以极大的方便我们对于带有网络请求的App的开发和调试。



charles还有其他挺多功能,比如断点,数据过滤,重定向等功能,这里就不一一介绍了~

加密请求

有一些做的比较好的接口,可能需要对请求参数做一个校验。例如哔哩哔哩的API,就需要把所有的请求参数,排序后进行MD5加密,服务端会对加密结果进行校验。但是这方面没有固定的套路,还需要自己檫亮眼睛去发现加密方式~~





原文  http://blog.csdn.net/yyh352091626/article/details/52759294

        http://www.infoq.com/cn/articles/network-packet-analysis-tool-charles


扫描二维码,在手机上阅读!

添加新评论