Charles介绍
一、概述:
Charles是一款代理软件,通过将Charles设置为代理服务,可以用Charles抓取请求数据和结果,也可以转发,伪造数据。比较相似的软件还有Fiddler,但是Fiddler对IOS的兼容不好,所以建议使用Charles。该软件是用Java写的,能够在Windows,Mac,Linux上使用。Charles的主要功能有:
1、支持SSL代理,可以抓取分析http和https请求;
2、支持流量控制,可以模拟慢速网络以及等待时间(latency)较长的请求;
3、支持AJAX调试,可以自动将json或xml数据格式化,方便查看;
4、支持AMF调试,可以将Flash Remoting或Flex Remoting信息格式化,方便查看;
5、支持网络请求转发,方便后端调试;
6、支持修改网络请求参数;
7、支持网络请求的截获并动态修改;
8、检查HTML,CSS和RSS内容是否符合W3C标准;
二、界面视图:
1、Structure视图:左侧按域名将请求的url进行分类,右侧是每个url的详细信息。在左侧下方Filter文本框中输入关键字,会过滤出包含指定关键字的域名的所有请求;
2、Sequence视图:上方将请求的url以请求时间的先后顺序从上到下展示,下方是每个url的详细信息。在上方底部Filter文本框中输入关键字,会过滤出包含指定关键字的url的所有请求;
鼠标右键菜单“Focus”可以指定要关注的域名下的所有请求,其他域名的请求单独分组;
三、工具栏:
:清除捕获到的所有请求;
:红点状态说明正在捕获请求,灰色状态说明当前没有捕获请求;
:加锁状态说明正在使用SSL代理,解锁状态说明当前已关闭SSL代理;
:灰色状态说明没有开启网速限速,绿色状态说明开启了网速限速;
:灰色状态说明没有开启断点,红色状态说明开启了断点;
:修改所选请求,点击之后可以修改请求的内容;
:重复发送所选请求,点击之后会将所选的请求再发送一次;
:验证所选请求的响应内容是否合法;
:常用功能,包含了经常使用的功能;
:常用设置,包含了经常使用的配置;
四、常用功能:
1、抓PC上http请求数据包:
抓取Charles所在PC上的网络请求时,需要如下配置:
①“Proxy”菜单中的“macOS Proxy”打勾;
②工具栏的状态为“正在捕获请求”;
③确保“网络偏好设置”的“自动发现代理”和“自动代理配置”是取消勾选的;
④确保没有启用其他过滤和工具,比如“Recording Settings”中的“Include”和“Exclude”过滤,以及黑白名单启用时,黑白名单中的URL是否包含要抓包的URL;
2、抓手机上http请求数据包:
注意安装Charles的电脑和设置代理的手机所连接的网络必须是同一网络,以IOS系统为例:
①打开菜单“Proxy”下的“Proxy Settings”,可以看到Charles默认监听的端口是:8888,并且在“Enable transparent HTTP proxying”前打勾选中;
②打开菜单“Help”下的“Local IP Address”,查看安装Charles的电脑的ip地址;
③在手机所连接的Wifi中设置代理为步骤1和2得到的端口和地址,保存设置后便可以抓到手机的请求。
3、抓PC上https请求数据包:
如果用抓http请求数据包的方式抓取https请求数据时,得到的https请求数据都是unknown,此时需要在PC上安装CA证书:
①打开菜单“Help”下的“SSL Proxying”下的“Install Charles Root Certificate”;
②找到Charles证书,连续点击,在弹出的对话框的“信任”中,选择“始终信任”;
4、抓手机上https请求数据包:
按之前1-3步的配置仍然无法抓https的请求,因为还需要在手机安装Charles的CA证书。
①打开菜单“Help”->“SSL Proxying”->“Install Charles Root Certificate on a Mobile Device or Remote Browser”;
②在弹出的对话框中找到如图所示地址,在手机的浏览器中打开。
③在手机浏览器中请求该地址后,点击允许并安装。安装完成后此时显示“已验证”;
④在手机“通用”->“关于本机”->“证书信任设置”中,对Charles证书设置为完全信任。
⑤选中要抓的https请求,右键菜单“Enable SSL Proxying”。
⑥在菜单“Proxy”->“SSL Proxying Settings”中的“SSL Proxying”中添加了该url,此时便可抓https的包。
5、模拟慢速网络:
进入菜单:“Proxy”->“Throttle Settings”,勾选“Enable Throttling”,并在下方设置参数。如果只对某个请求限速,可以勾选“Only for selected hosts”。
6、修改网络请求内容并请求:
①选中要修改的url,右键菜单“Compose”;
②在打开的窗口可以修改url的请求参数,点击“Execute”执行请求。
7、给服务器做压力测试:
①选中某个url,右键菜单“Repeat Advanced”;
②输入请求次数、并发数以及时间间隔便可以进行测试;
8、使用Map方式将某个请求转到另一个请求:
①打开菜单“Tools”->“Map Remote”,勾选“Enable Map Remote”;
②填写MapFrom和MapTo。
一般情况下,Protocol和Host需要填,Port、Path和Query可以不填,如果不填则说明MapFrom和MapTo的这几项都一样,这种情况下可以只填MapTo中的Query,相当于只增加query参数;
如果填了MapFrom中的Path,Path一般都会以*结尾,避免指定的Path匹配不到;
如果要保留Header中的原始Host,需要勾选"Preserve host in header fields"
③如果是Map Local方式,则文件可以使用Charles提供的Save Request、Save Response以及Export功能导出;
9、使用Rewrite功能修改请求参数或返回内容:
①进入菜单“Tools”->“Rewrite”,勾选“Enable Rewrite”,添加一组rewrite规则;
②在右侧上方添加匹配的Location;
③在右侧下方添加要重写的数据;
10、使用Breakpoint打断点修改请求参数或返回内容:
①选中要打断点的url,右键菜单选择“Breakpoints”给此url打上断点,此时默认会将Request和Response都打上断点;
②进入菜单“Proxy”->“Breakpoint Settings”,可以看到“Enable Breakpoints”已开启,且刚才添加的url已被添加到断点列表;
③重新请求此url时,在Request和Response时都会停顿,切到“Edit Request”和“Edit Response"就可以对请求和响应内容进行修改,修改后记得要点击下方的“Execute”才能按修改后的内容执行。
11、将本地作为代理服务器的反向代理:
①进入菜单“Proxy”->“Reverse Proxies”,勾选“Enable Reverse Proxies”进行添加和编辑;
②添加时默认会自动填充一个可用的本地端口,填写远程host和端口,勾选“Rewrite redirects”,那么在本地请求http://127.0.0.1:55715/xxx时就会自动代理请求到配置的远程机器上的/xxx
12、外部代理设置(需要通过代理服务器访问某网址时):
进入菜单“Proxy”->“External Proxy Settings”,勾选“Enable external proxy servers”,添加所需参数;
更多推荐
所有评论(0)