抓包工具Charles的使用
Fiddler和Charles都是抓包工具,可以抓pc端请求;抓手机上的请求,但需要设置代理;还可以修改请求数据和返回数据。
1.为什么使用抓包工具
如移动端是app本身的事还是接口是否成功返回结果,或者app调用接口的路径是否正确,没有接口说明文档等情况下,使用抓包。
在App开发与后台联调过程中,经常会遇到后台数据返回不全,请求参数需要修改,请求需要重发等情况。
如果每次都在app端修改,或者自己造数据,会增加工作量,而且每次要重新运行app,浪费时间。
因此,经过研究,可以使用抓包工具charles,对app进行抓包,请求断点,修改请求与返回的数据,重新发送请求。
1>网页抓包
打开Charles,直接访问网页就可以捕捉到请求。
2>app抓包
先配置charles证书:
之后会弹出安装证书:
点击安装,一路下一步,直到提示“导入成功”
此时证书还是不被信任的,让不信任变成信任:打开IE浏览器—>工具—>Internet选项—>内容—>证书—>把中级证书颁发机构中的charles证书导出来—>再把导出来的证书导入到受信任的根证书颁发机构中。这样就ok了。
再设置代理,端口号,手机和台式机必须在同一wifi
步骤:1.电脑连上一个wifi1,右键查看wifi1状态,详细信息,找到IP;
2.进入手机端连的wifi1,输入服务器ip=IP,端口号就是8888;
3.弹出的对话框,点allow,就可以发请求了,Charles就可以抓到了。
另外,如何要抓https的请求,需要安装相应证书,才可以捕获到请求。
HTTPS的抓包需要在HTTP抓包基础上再进行设置,设置前抓包HTTPS是这样的,如下图:
设置后,如下图:
以下为在HTTP抓包基础上进行HTTP抓包的进一步设置步骤:
(1)安装ssl证书到手机设备
点击 Help -> SSL Proxying -> Install Charles Root Certificate on a Mobile Device
得到地址:htttp://charlesproxy.com/getssl
在手机Safari浏览器输入地址 http://charlesproxy.com/getssl,出现证书安装页面,点击安装。如果是Android设备,选择设置->从储存设备安装。
注:iOS 10.3系统,需要在 设置→通用→关于本机→证书信任设置 里面启用完全信任Charles证书
(2)Charles设置Proxy
Proxy -> SSL Proxying Settings...
勾选Enable SSL Proxying,点击Add 在Locations里面添加要使用SSL代理的网站,端口号输入443
Host设置要抓取的https接口,开发提供,如果没有网站,可填写*,代表所有请求
(3)进行https抓包
让手机重新发送https请求,可看到抓包的数据,包括请求数据和服务器返回的数据
3>数据篡改,并返回结果, charles通过breakpoints修改APP请求
步骤:1.右键要修改的请求,选择breakpoints,设置断点;
2.进入Edit Reponse界面,编辑返回信息,比如参数啊什么的(也可以修改URL请求)
3.执行Execute,重新发送请求
下面举个例子:
charles有一个breakpoints功能,可以截断、修改客户端的request、repsponse请求。如在charles返回response请求时,我们可以修改response,从而修改返回给客户端的内容。
如这里,我们要修改返回给客户端的http://www.charlesproxy.com/中的Charles is an HTTP proxy,修改为HaloCoolnull
具体:
1. 客户端先访问http://www.charlesproxy.com/看下,可以看到charles抓取了一大堆数据,ctrl+f查找看下我们需要的Charles is an HTTP proxy这段文字,在哪个请求中
可以看到是在这个http://www.charlesproxy.com/请求中出现的
2. 在http://www.charlesproxy.com/这条请求上右键,选择breakpoints。这样,当我们再访问http://www.charlesproxy.com/这个站点时,charles分别会在这个请求的request、response停留,除非我们excute继续
3. 再访问http://www.charlesproxy.com/,可以看到IE在等待响应
这里画箭头的地方可以看到Edit request修改request请求。我们这里只要修改response,因此直接点击excute继续下去
4. 修改response
选择Edit Response中的html,将Charles is an HTTP proxy修改为HaloCoolnull
效果:
可以看到已经修改成功
附录:
附录1:第2步中除了可以在选择的url右键设置breakpoints外,还可以通过proxy | Breakpoints设置更加详细的断点参数,如只breakpoints response请求
2.fildder抓包功能原理与Charles一样,这里不在具体介绍。