209 lines
7.9 KiB
Markdown
209 lines
7.9 KiB
Markdown
---
|
||
title: Charles工具使用
|
||
date: 2020-06-27 22:36:20
|
||
tags: [Charles]
|
||
categories: [工具, Charles]
|
||
author: Anges黎梦
|
||
---
|
||
|
||
## 常用功能介绍和使用
|
||
|
||
**Charles的功能很强大,这里只介绍几个常用的并且非常实用的功能:**
|
||
|
||
1. Charles抓取pc内容功能
|
||
2. 截取移动设备上的网络请求包
|
||
3.手动重复请求
|
||
4.手动修改请求内容
|
||
5. 过滤网络请求
|
||
6. 代理转发
|
||
7.控制网速
|
||
8.黑名单功能
|
||
|
||
**Charles 主要提供两种查看封包的视图,分别名为 “Structure” 和 “Sequence”**
|
||
|
||
1. Structure 视图将网络请求按访问的域名分类
|
||
2. Sequence 视图将网络请求按访问的时间排序
|
||
|
||

|
||
|
||
## Charles抓取pc内容功能
|
||
|
||
Charles 是通过将自己设置成代理服务器来完成抓包的,勾选系统代理后,系统本地发出去的请求都能被截取下来。
|
||
|
||
如果只抓取APP的包的话,可关闭此配置,这样不会出现太多的数据看着比较乱
|
||
|
||
mac下可通过Proxy —> macOS Proxy关闭
|
||
|
||

|
||
|
||
如果不需要使用也可从 Proxy—> Proxy setting 里将启动项关闭,
|
||
|
||
这样每次打开Charles时就会默认关闭/打开抓取pc内容的功能
|
||
|
||

|
||
|
||
## 截取移动设备上的网络请求包
|
||
|
||
我们在调试移动APP时,需要抓取APP发送的数据包,
|
||
|
||
首先进行设置:Proxy —> Proxy Settings 默认端口是8888,根据实际情况可修改
|
||
|
||
查看本机IP地址:Help —> Local IP Addresses
|
||
|
||
当手机连接代理的时候,Charles会弹出请求,问询是否同意抓包,如果不小心拒绝了,实际就无法抓包了,
|
||
|
||
但是可以从Proxy—>access control setting中添加当前手机的IP地址,就可以正常抓包了。
|
||
|
||
如果不想每换一个手机都要进行验证,可以配置允许所有手机访问,加入0.0.0.0/0(IPv4)或::/0(IPv6)
|
||
|
||

|
||
|
||
如果打开抓包工具,发现抓出的内容没有显示response和request的选项,点击设置
|
||
|
||

|
||
|
||
|
||
## 手动重复请求
|
||
|
||
Charles提供发送重复请求的功能,可以用这个功能做一些简单的压测,
|
||
|
||
选中链接后 右键可见:repeat,repeat advanced 或可在tools中找到。
|
||
|
||

|
||
|
||
Repeat:重复发包一次;选中链接点击repeat之后,即可将该请求重复一次,如需重发一个域名下的全部的请求,进入structure,选择域名之后点击repeat,即可全部请求。
|
||
|
||
repeat advanced:重发多次相同的请求,重发次数可设置。点击后弹出弹窗可进行重复的设置;同样可从structure里重发某个域名下的全部请求。
|
||
|
||

|
||
|
||
**手动修改请求内容**
|
||
|
||
1.compose
|
||
|
||
右键选择compose,即可修改参数和URL。修改完成点击execute即可执行。
|
||
|
||

|
||
|
||
2.breakpoint
|
||
|
||
右键选中需要的接口,点击breakpoint;点击之后进入proxy —>break settings,即可看到该接口,
|
||
|
||
双击该接口可修改接口相关的内容,修改后保存即可:
|
||
|
||

|
||
|
||
修改完成后,只要重新请求这个接口,就会打开一个新的窗口,
|
||
|
||
提供修改编辑该接口的功能(这里我只勾选了response,所以只能编辑response),编辑完成点击execute即可执行,
|
||
|
||
需要注意的是,一般客户端都会有个超时时间,所以需要很快的修改,不然有的时候可能修改就会不生效;
|
||
|
||
这个方法适合需要修改一些简单的内容。
|
||
|
||

|
||
|
||
3.map local
|
||
|
||
maplocal功能是平时常用的修改请求的方式,通过使某些接口走本地的方式,可以随机改变response或request里的内容,具体操作如下;
|
||
|
||
选择需要修改的URL,右键保存response:
|
||
|
||

|
||
|
||
在本地找到该请求,并修改想要修改的内容,修改完成后保存;在Charles里再次选中该链接;
|
||
|
||
右键并选择maplocal:
|
||
|
||

|
||
|
||
点击后会弹出新窗口,在local path中选择刚才保存并修改后的文件的路径(需要注意的是,这里最好删除Query里的内容,有些接口每次请求的时候可能有些参数是有些变化的,有可能会导致匹配不到);
|
||
|
||
选择完成保存后,再请求该接口,即可走到本地修改的路径下,达到修改请求内容的目的。
|
||
|
||

|
||
|
||
4.Rewrite
|
||
|
||
rewrite也可达到修改请求的效果,并提供批量替换的功能,如有需要可自行尝试;选择tools—>rewrite
|
||
|
||

|
||
|
||
在下面替换时,rewrite提供了可批量替换,替换某一个,和精准匹配的选项,可根据自己需要自行选择,这里不在仔细说明。
|
||
|
||

|
||
|
||
## 过滤网络请求
|
||
|
||
1.Filter
|
||
|
||
在Sequence界面的中部的Filter栏中填入需要过滤出来的关键字。(一般用于临时过滤)
|
||
|
||

|
||
|
||
2.Recording Settings
|
||
|
||
在Charles的菜单栏选择Proxy->Recording Settings,
|
||
|
||
然后选择Include栏,选择添加一个项目,然后填入需要监控的协议,主机地址,端口号。
|
||
|
||
这样就可以只截取目标网站(固定过滤地址)
|
||
|
||

|
||
|
||
3.Focus
|
||
|
||
右键需要的链接,点击focus(或者直接在view -> focused hosts中添加/修改)
|
||
|
||

|
||
|
||

|
||
|
||
加入focus后,点击focused,即可直接追踪这些链接。
|
||
|
||

|
||
|
||
## 代理转发
|
||
|
||
map remote
|
||
|
||
选择tools ->map remote,选择enable map remote,这个时候可以点击右下角add进行添加,
|
||
|
||
像这里我添加了bbs.hupu.com转发到test.bbs.hupu.com。
|
||
|
||
如果勾选enable后,请求该域名,可直接访问test环境,不需要切换hosts即可实现。
|
||
|
||

|
||
|
||

|
||
|
||
## 控制网速
|
||
|
||
Throttle Setting
|
||
|
||
点击proxy ->Throttle Setting,选择enable throtting,
|
||
|
||
下面提供了各种模式供选择,如果只想对某个hosts下的内容进行网速控制,也可勾选only for selected hosts进行添加。
|
||
|
||
概念介绍:Bandwidth(带宽)、Utilistation(利用百分比)、Round-trip(往返延迟)、MTU(最大传输单元)
|
||
|
||
3G:300k-2Mbps左右
|
||
2.5G(GPRS)一般在100kbps
|
||
2G(GSM)一般在5-9kbps
|
||
|
||

|
||
|
||
添加完成后,可看到顶部的小乌龟变了颜色,这个时候已经在进行网速控制了,可通过点击小乌龟取消网速控制;设置好之后,下次也可通过点击小乌龟快速开启网速控制。
|
||
|
||

|
||
|
||
## 黑名单功能
|
||
|
||
勾选黑名单,黑名单即使选择接口返回错误的形式(404 或者403)
|
||
|
||
弹出界面后选择enable,这里blocking action中可以选择drop connection”或者 “return 403 respose”选择第一个会直接返回404错误,第二个则返回403。
|
||
|
||

|
||
|
||

|