• 0
  • 0
分享

  做过 APP 测试的同学都会接触抓包工具,通过抓包工具可以获取到客户端与服务端接口的交互数据,在实际测试APP的过程中,我们往往会发现服务端返回 的参数字段错误、数据统计错误等问题,通过抓包可发现这些问题,对开发修复 BUG 提供有效的帮助。

  那么今天给大家继续介绍一下抓包工具 Charles工具。

  一、Charles简介

  Charles是一个HTTP代理服务器,HTTP监视器,反转代理服务器,当浏览器连接Charles的代理访问互联网时,Charles可以监控浏览器发送和接收的所有数据。它允许一个开发者查看所有连接互联网的HTTP通信,这些包括request,response和HTTPheaders(包含cookies与caching信息)。

  主要功能如下:

  ·支持SSL代理。可以截取分析SSL的请求。

  · 支持流量控制。可以模拟慢速网络以及等待时间(latency)较长的请求。

  · 支持AJAX调试。可以自动将json或xml数据格式化,方便查看。

  · 支持AMF调试。可以将FlashRemoting或FlexRemoting信息格式化,方便查看。

  · 支持重发网络请求,方便后端调试。

  · 支持修改网络请求参数。

  · 支持网络请求的截获并动态修改。

  · 检查HTML,CSS和RSS内容是否符合W3C标准。

  Charles是一款很实用,界面很友好(至少跟fiddler比起来),功能强大的抓包神器,因为它是基于java开发的,所以跨平台,Mac、Linux、Windows下都是可以使用的,并且在Android和iOS设备上通用。

  它的原理是通过成为电脑或者移动设备的代理截取请求和请求结果达到分析抓包的目的。

  二、Charles下载与安装

  官网下载地址:(百度一下~ )

18.png

18-1.png

  下载后,直接点击下一步,就可以安装才能安装成功。安装后打开Charles如下:

18-2.png

  三、Charles配置

  (1)Charles-PC端的配置如下:

  第一步:设置端口号Proxy--ProxySettings默认端口号是8888。

18-3.png

  第二步:查看电脑IP,Help--LocalIPAddresses。

18-4.png

  第三步:手机设置代理后(步骤参考上一节的手机端配置),设置代理服务器和端口号。

18-5.png

  第四步:打开APP,发送请求,Charles弹出是否允许该手机访问,点击Allow。

18-6.png

  第五步:点击允许后,可以在Proxy--AccessControlSettings里看到允许访问此代理服务器列表。

18-7.jpg

  注意:如果点击了拒绝,可以手动添加手机IP/Mac地址到允许访问列表,后者重启Charles,手机再次访问即可。

  设置完成后,即可抓包。

18-8.png

  (2)过滤网络请求:

  从上图中,可以看出网络请求很多,我们能否过滤出我们指定的URL地址呢?有以下两种方法:

  方法一:在Sequence界面的中部的Filter栏中填入需要过滤出来的关键字,例如我们的服务器地址时:*.xxxx.wsmall.com,那么只需要在Filter栏中填入wsmall即可。

18-9.png

  方法二:在Charles的菜单栏选择Proxy--RecordingSettings,选择Include,输入需要监控的协议,主机地址,端口号,这样就可以只截取目标网站的封包了。

18-10.png

18-11.png

  (3)Charles抓取HTTPS请求包前置条件:

  手机已经设置代理,可抓取到http包,未抓取HTTPS包的情况:

18-12.png

  抓取到HTTPS包的情况:

18-13.png

  安装SSL证书到手机设备:点击

  Help--SSLProxying--InstallCharlesRootCertificateonaMobileDevice。

18-14.png

  在手机浏览器输入地址chls.pro/ssl,出现证书安装页面,点击安装部分手机需要设置手机密码才可以安装。

18-15.png

  Charles设置Proxy:

  Proxy--SSLProxyingSettings。

18-16.png

  设置需要抓取的域名,端口输入443,设置完后,即可抓取HTTPS包。

18-17.png

  (4)Charles抓取HTTPS双向认证包:

  双向认证,简单的理解就是服务器端和客户端都有证书,目前有部分APP就采用双向认证,如果我们按照上面的章节操作是抓取不到包的,那么我们怎么处理呢?我们这里比抓取https请求包多了一步上传客户端证书,前置条件是:

  · 可抓取到HTTPS包

  · 客户端证书:xxxt.p12(可以找开发获取)

  · 点击Help--SSLProxying--InstallCharlesRootCertificate,安装证书

18-19.png

18-20.png

  Proxy--SSLProxyingSettings,设置域名和端口号。

18-21.png

  设置域名和端口号,上传客户端证书,上传证书时,需要输入证书密码。

18-22.png

  上传根证书,上传时需要输入证书密码。设置完成后,即可抓取APP的请求包。

18-23.png


作者:佚名    

来源:http://www.51testing.com/html/16/n-7789616.html


  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   每个载入浏览器的HTML文档都会成为Document对象,Document对象,是所有Anchor、Applet、Area、Form、Image、Link、Plugin等对象的祖先对象。  Document 对象使我们可以从脚本(例如javascript)中对 HTML 页面中的所有元素进行访问,比如通过标签操作元素。  一起来看看javascript(以下简称js)是如何操作Document对象及通过Document方法操作其他对象的。  Document方法列表  以chrome浏览器为例,js对document对象及其子对象常用操作方法列表如下(按字母顺序排列)。表1 Documen...
            13 13 1231
            分享
          • 用例(需求用例)概念:使用案例、用况以明确需求为目的,描述用户使用产品(系统)的典型情节。用例简单通俗,能让用户也能参与;强调了用户的目标和观点:谁使用系统?典型场景?目的?强调以用户为中心。用例是系统提供的功能块,换句话来说用例演示了人们如何使用系统。通过用例观察系统,能够将系统实现与系统目标分开,有助于了解最重要的部分(满足用户要求和期望),而不会沉浸于实现细节。通过用例用户可以看到系统提供的功能,先确定系统范围再深入开展项目工作。用例特点1.站在用户角度、而不是实现角度;2.无须披露系统特征和实现细节;3.一个用例只代表了系统的一个单一的目标;4.描述使用,而不是罗列规则。Jacobso...
            0 0 2177
            分享
          •   前言  今天几个测试圈子的大佬约了饭局,席间彼此交流了很多关于职场工作上测试相关的话题,听了他们的一些观点很有启发,我自己对于聊的话题也做了一些描述和实际的案例说明。下面是聊的一些关键话题,我将交流的内容和个人观点整理了下,供大家参考。  从测试leader的角度如何保障质量交付?  聊的第一个话题就是测试leader如何保障团队的质量交付,这个话题最近在很多地方,听很多人聊过。我会尝试从以下几点来做阐述说明,观点仅代表个人看法。  流程管理  问:流程是什么?为什么要有流程?流程能解决什么问题?流程能带来什么保障?  流程是什么?  流程是保障团队目标达成的最佳实践,因人/团队/业务类型...
            0 0 1009
            分享
          • 项目场景:       楼主的项目使用Django应用框架,一般的Django项目,启动一般有三个步骤1.启动runserver :python manage.py runserver2.启动celery:python manage.py celeryd -l info3.启动celerybeat:python manage.py celerybeat -l info   如果在linux服务器上,我们可以设计一个....
            0 0 1800
            分享
          • 一、软件质量模型功能性:能够满足明确和隐含要求的功能;可靠性:能够处理异常情况,在错误中很快恢复;易用性:易懂、易学、漂亮好看;效率性:占用少量资源,提供适当的性能;维护性:指产品可被修改的能力;可移植性:指软件产品从一种环境迁移到另一种环境的能力。二、软件测试分类(1)是否覆盖源代码黑盒测试;白盒测试;灰盒测试。(2)按照阶段划分单元测试:对软件中最小的可测单元进行的测试;集成测试:在单元测试的基础上,对多个单元组装后的产物进行测试;系统测试:在集成测试的基础上,把软件看作一个整体进行测试;验收测试:也叫交付测试,以最终用户的角度确认软件是否符合预期。(3)是否运行静态测试;动态测试。(4)...
            0 0 2525
            分享
      • 51testing软件测试圈微信