Charles是一款比较常用的全平台的网络封包街区工具,而我们在做移动开发的时候,我们为了调试、测试、分析等目的,经常需要和服务端的网络通讯协议打交道。Charles可以帮我们截取网络数据包来进行分析。
Charles通过将软件本身设置成系统的网络访问代理服务器,使得所有的网络请求都会走一边Charles代理,从而Charles可以截取经过它的请求,然后我们就可以对其进行网络包的分析。
用到的功能:

  • 1.截取http和https网络包
  • 2.支持重发网络请求,方便后端调试
  • 3.支持修改网络请求参数
  • 4.支持网络请求的截取以及动态修改请求响应结果。
  • 5.支持模拟限流网络

    1.Charles的基本界面



1.1.structure视图

structure视图将网络请求按请求的域名进行分类,将同域名的请求进行分类。

所有的请求是以域名进行分类显示的,可以让我们更关注同域名下的请求。当次域名下有接口连接被请求了,会闪一下,这样就可以让我们发现哪些域名下的数据正在被请求。

1.2.sequence视图

sequence视图模式下,会将所有的网络请求都按照访问的时间从上到下进行排序。

和structure一样,很直观的自暗示当前的请求连接、请求数据、响应数据等情况。因为这是按请求的先后顺序进行有序的排列,Charles同时也提供了一个过滤请求的地方,可以通过它来简单的过滤我们需要的请求再进行查看。

对于某一个具体的网络请求,Charles提供了详细的请求内容和响应内容,将发送的数据和显示的数据显示出来,对于一些常见的数据格式,Charles还提供了一些格式化的操作,例如json内容,可以切换到json标签下,它会按照json的格式进行格式化,方便我们阅读和查看,而图片的请求也会在Charles中显示缩略图的预览。

2.网页抓包

启动Charles后,需要将Charles设置为系统代理,选择菜单中proxy——MacOS来讲Charles设置系统代理。

然后你会发现,通过浏览器的请求都会被抓取。

3.截取移动设备的网络封包

Charles通常本身是可以直接截取本机上的网络封包的,但移动设备上的网络请求同样也需要去抓取,例如iPhone Android设备等。

3.1Charles对应设置

将代理功能打开,并设置一个固定的端口号。默认8888
proxy-proxy settings,查看当前或者修改当前代理端口,并保证Enable transparent HTTP proxying被勾选。

3.2手机上的设置

查看本机ip地址和Charles监听的端口号

方法1:使用help-local IP address

方法2: ifconfig en0

打开手机Wi-Fi,填入IP和端口号

3.3截取https的网络封包

app内使用https是非常常见的。正常情况下,Charles是不能截取到https的网络包的。这设计到https的证书问题。
使手机可以抓取到https协议,需要安装Charles的CA证书。
步骤:

  • 1.在Mac上安装CA证书。通过顶部菜单选择:help——SSL Proxying——install Charles Root Certificate,来安装CA证书。
  • 2.iPhone和Android手机,安装证书
    android手机请查看该帖
  • 3.在需要截取https的请求上,选择Enable SSL Proxying。

完成上面的步骤依然抓取不了https的网络包。主要的原因在于:CA证书需要被MacOs信任。
其他-钥匙串访问,查看CA证书

4.过滤

方法一:在Charles的菜单栏选择Proxy——recording settings,然后选择include栏,选择add,然后填入需要监控的协议,主机地址,端口号,如下图

方法二:在一个网址上右击,选择Focus,然后其他的请求就会被放到Other Hosts的文件夹里面,这样也达到了过滤的目的。

5.模拟弱网

有时候在测试的时候我们想要模拟一下网络慢的情况,这时候Charles他是可以帮助到你的,在Proxy->Throttle Setting,然后选择Enable Throttling,在Throttle Preset下选择网络类型即可,具体设置你可以自行拿捏。

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

6.修改网络请求

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

get
put
post
head
trace
delete
options

7.给服务器做压力测试

我们可以使用 Charles 的 Repeat 功能来简单地测试服务器的并发处理能力,方法如下:
我们在想打压的网络请求上(POST 或 GET 请求均可)右击,然后选择 「Repeat Advanced」菜单项,如下所示:

8.断点

在Charles发起一个请求的时候,我们是可以给某个请求打一个断点的,然后来观察或者修改请求或者返回的内容,但是在这过程中要注意请求的超时时间。
要针对某一个请求设置断点,只需要在这个请求网址右击选择Breakpoints,然后点击断点按钮,就可以断点某一个请求了。

参考出处:http://blog.devtang.com/2015/11/14/charles-introduction/
https://testerhome.com/topics/15117

FAQ

1.乱码问题未解决

3.1以下版本,首先到去 http://www.charlesproxy.com/ssl.zip 下载CA证书文件。双击crt文件,选择总是信任就可以了。
https://www.cnblogs.com/mrjade/p/7677051.html

2.Firefox在添加*:443后不能连接网络的问题


安装CA证书后保存为.cer文件


firefoxs——首选项——隐私与安全——查看证书



再次访问百度,可以正常访问。

Charles使用1的更多相关文章

  1. windows charles response 乱码解决办法

    使用windows 版本的charles来做代理,发现服务端返回的response会出现中文乱码的情况, 查看软件设置,遗憾的是并没有关于编码的选项. 好在charles windows版本安装目录下 ...

  2. charles工具抓包教程(http跟https)

    1.下载charles 可以去charles官网下载,下载地址:http://www.charlesproxy.com/download/    根据自己的操作系统下载对应的版本,然后进行安装,然后打 ...

  3. mac 抓包工具charles v3.9.3 安装破解步骤

    一.下载 先到它的官网http://www.charlesproxy.com/可下载到最新版本,这个下载有点慢,我已经将它放到网盘中了:http://pan.baidu.com/s/1skTXRIl ...

  4. 谈iOS抓包:Mac下好用的HTTP/HTTPS抓包工具Charles

    在Mac下做开发,用Fiddler抓包由于离不开Windows比较痛苦,还好有Charles,到官网http://www.charlesproxy.com/可下载到最新版本(若不支持rMBP可拖到Re ...

  5. 复习(2)【postman,charles,filezilla server】

    Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件.通常我们可以用它来测试接口. Charles是在Mac下常用的网络封包截取工具,在做移动开发时,我们为了调试与服务器端的 ...

  6. [Android] charles高级使用总结

    reference to : http://blog.csdn.net/a910626/article/details/52823981 charles高级使用总结 网速模拟 点击菜单“Proxy→T ...

  7. 关于Charles抓取手机访问的Https请求

    准备工作 本次测试的Charles版本为3.9.1 · 首先在Charles中开启HTTP请求的远程监听. · 然后分别在手机和Mac上安装Charles的证书. 注意:证书一定要一致,否则抓取不到. ...

  8. iOS 利用Charles抓包

    1.安装 Mac下好用的HTTP/HTTPS抓包工具Charles,到官网http://www.charlesproxy.com/可下载到最新版本(若不支持rMBP可拖到Retinizer中把文字变清 ...

  9. MAC下使用Charles抓取安卓模拟器数据

    一.安装Charles,这个不多记录 二.Charles数据乱码问题(参照这篇文章 http://blog.csdn.net/huanghanqian/article/details/52973651 ...

  10. charles 抓取eclipse中的请求

    charles抓取eclipse中的请求 有时候,想要监测eclipse中发送get获取post请求,一样可以使用代理方式: 1.eclipse代码设置 代码中添加,可以就写在主函数中,然后再调用请求 ...

随机推荐

  1. JDK 1.8 ConcurrentHashMap 源码剖析

    转载两篇不错的文章: 第一篇: 前言 HashMap是我们平时开发过程中用的比较多的集合,但它是非线程安全的,在涉及到多线程并发的情况,进行put操作有可能会引起死循环,导致CPU利用率接近100%. ...

  2. BZOJ 4012 【HNOI2015】 开店

    题目链接:开店 这道题显然一眼树分治,维护点分的结构,在每个点上,对每种年龄到这个点\(u\)以及他在点分树上父亲的距离和建一棵线段树,查询的时候一路往上跳即可. 但是我太懒了(其实你要说我不会也可以 ...

  3. codevs 2216 行星序列 线段树+延迟标记(BZOJ 1798)

    2216 行星序列  时间限制: 2 s  空间限制: 256000 KB     题目描述 Description “神州“载人飞船的发射成功让小可可非常激动,他立志长大后要成为一名宇航员假期一始, ...

  4. 反射中的 Class.forName() 与 ClassLoader.loadClass() 的区别

    在Java中,类加载器把一个类加载进Java虚拟机中,要经过三个步骤来完成:加载.链接和初始化,其中链接又可以分成验证.准备和解析三步,除了解析外,其它步骤是严格按照顺序完成的,各个步骤的主要工作如下 ...

  5. 一些自己常用的cdn

    1.vue <script src="http://cdn.bootcss.com/vue/1.0.28-csp/vue.js"></script> < ...

  6. Android之微信开放平台创建应用

    微信开放平台网站:https://open.weixin.qq.com 1:登录之后(未登录就注册),点击移动应用开发进入 点击创建应用之后,进入填写对应信息. 接下来,填写平台信息. 应用签名获取方 ...

  7. hdu1517找规律

    挺像巴什博弈的,直接递推就能找到规律了,从2开始到9,s win,10到18,o win,18到162,s win,一直向下推进 #include<map> #include<set ...

  8. sqlplus中文问号

    添加两个环境变量后重启. 1.LANG=zh_CN.GBK(GBK是这样形式的,不同编码这里的value值需要跟着改变) 2.NLS_LANG=AMERICAN_AMERICA.ZHS16GBK(这个 ...

  9. 解决ubuntu登陆失败,"Failed to start session"的问题

    我是在虚拟机中安装了Ubuntu 14.04 系统,在Ubuntu 中执行 apt-get update  和  apt-get upgrade 命令后,然后重启系统.    但是,在重启成功后,在登 ...

  10. 阅读和设计源码利器UML

    https://www.w3cschool.cn/uml_tutorial/ 就不做特殊说明了啊: 一 UML 1 简介 类注释: 下面的图表示的 UML 类,该图被分为四个部分. 顶端部分被用来命名 ...