Charles是一个web代理器,用来记录和展示你所发出和接收到的所有数据。

主要特性:

SSL Proxying——易清晰地文本展示SSL请求和响应
Bandwidth Throttling是用来模拟包括潜在的慢的网络连接
AJAX debugging——以文本或树形模式来展示XML和JSON的请求和响应
AMF——查看Flash Romoting的内容/以树的形式展示远程消息
重复请求来测试后端的变化
编辑请求来测试不同的输入
Breakpoints是用来拦截并编辑请求和响应的。
使用W3C验证器来验证已记录的HTML,CSS,RSS以及原子的响应。

使用简介:
1.下载安装包,安装。
2.注册。在Help窗口内选择Register Charles。(如果不注册的话,使用Charles每30分钟它就会自动退出一次,所以还是注册了吧!)
注册码:Registered name: anthony ortolani              
              License key: a4036b2761c9583fda

3.将Charles设置成系统代理启动Charles之后,第一次它会请求你给它设置系统代理的权限。你可以输入登录密码授予Charles该权限。如果你忽略了该请求,你可以通过选择菜单中的“Proxy”—>”Mac OS X Proxy“来将Charles设置成系统代理。

4.主界面简介:

Charles提供了两种查看视图,分别为“Structure”和"Sequence"。
1.Structure视图将网络请求按照访问的域名分类。

2.Sequence视图将网络请求按照访问的时间进行排序。

工具条:

工具条从左到右的功能一次是:1.新建一个会话    2.打开一个会话(已存在的) 3.关闭当前会话  4.存储当前会话5.清除当前捕获的所有请求  6.搜索  7.开始/停止捕获  8.开始/停止网速模拟功能9.开始/停止断点功能  10.刷新已选择的请求  11.编辑  12.验证响应(请求的结果)13.工具  14.设置

过滤网络请求

有时我们需要对网络请求进行过滤,只监控向指定目录服务器上发送的请求。对于这种需求,我们有2种办法:
1.在主界面的中部的Filter栏中填入需要过滤出来的关键字。
2.在Charles的菜单栏选择"Proxy"->"Recording Settings",然后选择Include栏,选择添加一个项目,然后填入需要监控的协议,主机地址,端口号。这样就可以只截取目标网站的封包了。
(PS:一般,我们使用方法1做一些临时性的封包过滤,方法2做一些经常性的封包过滤。)

截取手机上的网络封包

1.Charles上的设置
要截取手机上的网络请求,我们首先需要将Charles的代理功能打开。在Charles的菜单栏上选择“Proxy”->"Proxy Settings",填入代理端口8888,并且勾上"Enable transparent HTTP proxying" 就完成了在Charles上的设置。

2.手机上的设置
1.我们需要获取Charles运行所在电脑的IP地址,打开Terminal,输入ifconfig en0, 即可获得该电脑的IP。
2.在手机的 “设置”->“WLAN“中,可以看到当前连接的wifi名,通过长按网络名称,弹出一个对话框,选择”修改网络配置“—>勾选”显示高级选项"可以看到在其最底部有“HTTP代理”一项,我们将其切换成手动,然后填上Charles运行所在的电脑的IP,以及端口号8888。(PS:每个人的手机都不同,所以个别细节会有差异)
3.设置好之后,我们打开iPhone上的任意需要网络通讯的程序,就可以看到Charles弹出iPhone请求连接的确认菜单,点击“Allow”即可完成设置。

截取SSL信息
Charles默认并不截取SSL的信息,如果你想对截取某个网站上的所有SSL网络请求,可以在该请求上右击,选择SSL proxy,如下图所示:

这样,对于该HOST上的所有SSL请求就都可以被截取到了。如果不需要的话,取消即可。

模拟慢速网络

如果我们需要模拟慢速网络或者高延迟的网络,来测试在移动网络下,应用的表现是否正常。我们可以通过Charles进行设置。
在Charles的菜单上,选择"Proxy"->"Throttle Setting"项,在之后弹出的对话框中,我们可以勾选上“Enable Throttling”,并且可以设置Throttle Preset的类型。如果只想模拟指定网站的慢速网络,可以勾选图中的"Only for selected hosts"项,然后在对话框的下半部分设置中增加指定的hosts项即可。如下图所示:

修改网络请求内容

Charles提供网络请求的修改和重发功能。我们只需要在已有的网络请求上右键点击,选择”Edit“,即可创建一个可编辑的网络请求。如图所示:

我们可以修改该请求的任何信息,包括url地址,端口,参数等,之后点击“Execute”即可发送该修改后的网络请求。(PS:Charles支持我们多次修改和发送请求)

Charles使用方法简介的更多相关文章

  1. 网络神器Greasemonkey(油猴子)使用方法简介+脚本分享【转载】

    推荐下,觉得这个方法有用, 今天艾薇百科来介绍一下功能强大的Greasemonkey,俗称"油猴子",Greasemonkey可以自由定制网页,实现你想要的各种功能.堪称" ...

  2. Redis Cluster搭建方法简介22211111

    Redis Cluster搭建方法简介 (2013-05-29 17:08:57) 转载▼       Redis Cluster即Redis的分布式版本,将是Redis继支持Lua脚本之后的又一重磅 ...

  3. Monte Carlo方法简介(转载)

    Monte Carlo方法简介(转载)       今天向大家介绍一下我现在主要做的这个东东. Monte Carlo方法又称为随机抽样技巧或统计实验方法,属于计算数学的一个分支,它是在上世纪四十年代 ...

  4. C#——Marshal.StructureToPtr方法简介

    目录 MarshalStructureToPtr方法简介 功能及位置 语法 参数说明 异常 备注 举例 本博客(http://blog.csdn.net/livelylittlefish)贴出作者(三 ...

  5. TabBarController创建及使用方法简介

    TabBarController创建及使用方法简介 大致讲解一下TabBarController的创建过程: 首先,我们需要一些视图,如创建UIControllerView类型的view1,view2 ...

  6. delphi操作文本文件的方法简介

    delphi操作文本文件的方法简介减小字体 增大字体 作者佚名来源不详发布时间2008-5-31 10:31:16发布人xuedelphi1 文件类型和标准过程       Delphi同Object ...

  7. iOS中常用的四种数据持久化方法简介

    iOS中常用的四种数据持久化方法简介 iOS中的数据持久化方式,基本上有以下四种:属性列表.对象归档.SQLite3和Core Data 1.属性列表涉及到的主要类:NSUserDefaults,一般 ...

  8. jQuery的AJAX方法简介及与其他文件$符号冲突的解决办法

    一.重要的jQuery AJAX方法简介 $.load(url) 从服务器载入数据 $.get(url,callback) 从服务器请求数据,并执行回调函数 $.post(url,data,callb ...

  9. FragmentActivity与Fragment两者交互方法简介(转)

    FragmentActivity与Fragment两者交互方法简介 分类: Fragment 2014-07-07 18:17 88人阅读 评论(0) 收藏 举报 在Android4.0后很多时候我们 ...

随机推荐

  1. [CSS Hack]解決IE6、IE7、IE8、Firefox的瀏覽器相容性問題!

    每次調CSS最令人頭痛的就是瀏覽器校正問題,因為每個瀏覽器對CSS的解釋都不太一樣,Firefox本身算是比較照規矩來,處理上比較簡單,但是遇到微軟的IE系列頭就大了,雖然都是IE,但是IE6.IE7 ...

  2. 修改 linux 时区时间和 php 时区

    问题:客户美国服务器时间不对第一步,先修改硬件时区. vim /etc/sysconfig/clock将 ZONE="America/New_York" 注释,加多一行 ZONE= ...

  3. day17-jdbc 7.Statement介绍

    SQL语句:DML.DQL.DCL.DDL.DML和DQL是用的最多的.DCL和DDL用的很少. 程序员一般是操作记录,创建一表很少. package cn.itcast.jdbc; import c ...

  4. cocos2dx中替代goto的用法:do{}while(0)和CC_BREAK_IF

    我们时常会调用某个函数来创建一个对象,但由于内存不足或其他异常情况发生时对象可能会创建失败,创建失败我们就要结束当前程序转到错误处理地方去处理错误或释放已生成的对象. int* p1 = new in ...

  5. C++面向对象类的实例题目七

    题目描述: 编写两个有意义的类,使一个类嵌套在另一个类中. 分析: 本题涉及两个类student和cdegree,前者为学生类,包含学生的学号(nubner),姓名(name)和成绩(degree), ...

  6. matlab rand(3,5)

    rand()函数在(0,1)上创建均匀分布的随机数的数组 >> rand(3,5) ans = 0.8147 0.9134 0.2785 0.9649 0.9572 0.9058 0.63 ...

  7. 算法Sedgewick第四版-第1章基础-023-MultiwordSearch.java

    Multi-word search. Program MultiwordSearch.java reads a sequence of query words q[1], ..., q[k] from ...

  8. 两个进程之间的通讯——pipe 管道

    在实际工作中,已经编辑好了NIPT_analysis的软件,该软件一般的输入文件是sam文件,但是为了集成进入测序仪器,需要直接从比对软件的标准输出中读取sam文件,省去了比对软件和NIPT_anal ...

  9. GCD 学习(四) dispatch_group

    如果想在dispatch_queue中所有的任务执行完成后在做某种操作,在串行队列中,可以把该操作放到最后一个任务执行完成后继续,但是在并行队列中怎么做呢.这就有dispatch_group 成组操作 ...

  10. linux deb及rpm格式软件安装

    deb格式软件安装 deb包是debian,ubuntu等LINUX发行版的软件安装包,是类似于rpm的软件包,而非debian,ubuntu系统不推荐使用deb软件包,因为要解决软件包依赖问题,安装 ...