抓包工具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
c1

具体:
1. 客户端先访问http://www.charlesproxy.com/看下,可以看到charles抓取了一大堆数据,ctrl+f查找看下我们需要的Charles is an HTTP proxy这段文字,在哪个请求中
c2
可以看到是在这个http://www.charlesproxy.com/请求中出现的

2. 在http://www.charlesproxy.com/这条请求上右键,选择breakpoints。这样,当我们再访问http://www.charlesproxy.com/这个站点时,charles分别会在这个请求的request、response停留,除非我们excute继续
c3

3. 再访问http://www.charlesproxy.com/,可以看到IE在等待响应
这里画箭头的地方可以看到Edit request修改request请求。我们这里只要修改response,因此直接点击excute继续下去
c4

4. 修改response
选择Edit Response中的html,将Charles is an HTTP proxy修改为HaloCoolnull
c5

效果:
可以看到已经修改成功
c6

附录:
附录1:第2步中除了可以在选择的url右键设置breakpoints外,还可以通过proxy | Breakpoints设置更加详细的断点参数,如只breakpoints response请求
c7

2.fildder抓包功能原理与Charles一样,这里不在具体介绍。

posted on 2017-05-17 11:25  国元  阅读(673)  评论(0编辑  收藏  举报

导航