抓包工具Charles的使用心得

简介

Charles实际上是一款代理服务器,经过成为电脑或者浏览器的代理,而后截取请求和请求结果达到分析抓包的目的。该软件是用Java写的,可以在Windows,Mac,Linux上使用。开发iOS都在Mac系统上吧,安装Charles的时候要先装好Java环境。这么好的软件不是免费的,官网要好几十刀呢,我这里有一个Mac上的破解版,点击这里下载,固然不是最新版的。若是你想体验最新版,Charles是提供试用的。json

Charles主要功能

  • 支持SSL代理。能够截取分析SSL的请求。
  • 支持流量控制。能够模拟慢速网络以及等待时间(latency)较长的请求。
  • 支持AJAX调试。能够自动将json或xml数据格式化,方便查看。
  • 支持AMF调试。能够将Flash Remoting 或 Flex Remoting信息格式化,方便查看。
  • 支持重发网络请求,方便后端调试。
  • 支持修改网络请求参数。
  • 支持网络请求的截获并动态修改。
  • 检查HTML,CSS和RSS内容是否符合W3C标准。

开始抓包

先看一下Charles的庐山真面目吧!后端


 
 

接下来要把电脑设置为代理浏览器


 
 

这样你会发现,你经过浏览器请求的网址都会出如今这里,iOS模拟器的全部的网络请求也会出如今这里。点击某一个网址后,你会发现右边会出现这个网址请求的大概信息,点击具体的请求后会出现request和response等信息服务器


 
 

若是你发现返回的是乱码,首先看是在http请求仍是https请求,若是是http请求,那么应该就是返回来的中文乱码,解决方案是找到该软件显示包内容,Contents目录下的info.plist,打开文件找到vmoption,添加-Dfile.encoding=UTF-8便可。
网络

 
 

 

若是是https请求出现的乱码,以下图这种状况测试


 
 

这时候你就须要安装Charles的CA证书了,首先到去 http://www.charlesproxy.com/ssl.zip 下载CA证书文件。双击crt文件,选择老是信任就能够了,固然若是要抓取iPhone设备上的HTTPS请求,须要在iPhone上也安装一个证书,在手机浏览器输入这个网址:http://charlesproxy.com/getssl ,点击安装便可。而后你就能够告别那烦人的乱码,能够愉快地抓包了。若是这时候你仍是抓不了的话,检查一下Proxy-->SSL Proxying Settings是否设置OK,设置参考下图:spa

 
 

抓取真机上的包

抓取真机上的数据很是的简单,首先使手机和电脑在一个局域网内,不必定非要是一个ip段,只要是同一个路由器下就能够了。按照上面说的把证书安装好,而后找到电脑的IP,你能够选择在终端输入ifconfig en0来获取,也能够选择打开网络偏好设置来查看。3d

 
终端获取IP
 
网络偏好设置查看IP

接下来打开Charles的代理设置:Proxy->Proxy Settings,设置一下端口号,默认的是8888,这个只要不和其余程序的冲突便可,而且勾选Enable transparent HTTP proxying代理

 
端口号设置

在手机上链接上和电脑在同一局域网的网络上设置HTTP代理。端口号就是刚刚在Charles上设置的那个。调试


 
 

而后在手机上随便打开一个网址,这是Charles会弹出一个框让你确认是否代理,点击allow就能够了,而后你就会在Charles上发现手机上的请求了。


 
 

过滤

在 Charles 的菜单栏选择 Proxy->Recording Settings,而后选择 Include 栏,选择Add,而后填入须要监控的协议,主机地址,端口号,这样就达到了过滤的目的。以下图:

 
 

还有一种方法就是在一个网址上右击,选择 Focus,而后其余的请求就会被放到一个叫Other Host的文件夹里面,这样也达到了过滤的目的。
 
 

 

断点

断点的功能搞开发不会不知道,在Charles发起一个请求的时候,咱们是能够给某个请求打一个断点的,而后来观察或者修改请求或者返回的内容,可是在这过程当中药注意请求的超时时间问题。要针对某一个请求设置断点,只须要在这个请求网址右击选择Breakpoints就能够断点某一个请求了。

 
 

模拟网速慢

有时候在开发的时候咱们想要模拟一下网络慢的状况,这时候Charles他是能够帮助到你的,在Proxy->Throttle Setting,而后选择Enable Throttling,在Throttle Preset下选择网络类型便可,具体设置你能够自行拿捏。

 
 

请求重定向

请求重定向的做用是什么呢?开发中通常都是测试环境,若是咱们想对比一下和线上版本的区别的话,能够讲测试的请求重定向到正式环境下。在选择 Tools->`Map Remote下:

 
 

内容替换

有时候咱们会测一下请求的参数不一样会带来不一样的返回结果以测试是否达到业务需求,或者须要不一样的返回结果来验证咱们对数据的处理是否正确,这时候须要后台的同事配合,可是有了Charles,咱们能够本身把控接口返回来的内容,好比数据的空与否,数据的长短等等。在Tools->Rewrite Settings下:

 
 

其余

Charles还有一下其余的妙用。慢慢的去发掘吧!

 

连接:https://www.jianshu.com/p/fdd7c681929c

相关文章
相关标签/搜索