一、概述:

        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标准;

二、界面视图:

         1Structure视图:左侧按域名将请求的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”,添加所需参数;

GitHub 加速计划 / li / linux-dash
10.39 K
1.2 K
下载
A beautiful web dashboard for Linux
最近提交(Master分支:2 个月前 )
186a802e added ecosystem file for PM2 4 年前
5def40a3 Add host customization support for the NodeJS version 4 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐