Charles使用教程汇总
1. 简介
● Charles,一款代理抓包工具,可以分析和排查网络相关的问题
● 支持移动(安卓、iOS)设备
● 以下使用文档,以安卓设备为准,iOS设置大同小异
2. Charles安装
● 安装包官方可下载
官方版为试用版,启动时有10s等待时间,每隔30min会提示关闭,重新打开后可以继续使用30min
3. Charles代理配置使用
1) 打开Charles
2) 查看本地IP
3) 手机连接WiFi(此WiFi需要和电脑在同一网段内,公司内直接连接cheetahmobile即可)
4) 设置手机代理
a) 长按cheetahmobile无线网络
b) 选择修改网络
c) 勾选高级选项,将代理设置为手动,填入步骤2获取的IP地址,代理服务器端口默认为8888
d) 手机中打开应用,产生网络请求,电脑端同意连接
e) 如在公司外使用,先将电脑未连接VPN之前的IP设置为手机的代理服务器地址,手机连接电脑之后
5)Access
Control
这个功能可以管理目前连接到你电脑上的设备(包括添加,删除,导入导出配置文件等,另外,Charles还提供了能够让所有设备无须询问直接连接电脑的方式:添加一个0.0.0.0/0的IP即可)
有时可能会遇到手机连接到电脑之后,无访问许可请求,此时可以去access
Control中手动进行添加
对Charles有大量使用需求的同学,时间久了之后,access
control里可能会有很多IP,建议大家在每次的测试开始前,清理IP池,将本次要测试的手机添加到自己的访问名单(使用Charles过程中,需要修改网络请求数据和host,如果不维护IP池,可能会干扰你自己或者别人的测试)
4. 修改默认的8888端口号
● 测试过程中,默认代理填入的端口号为8888,设备之间经常借调,会导致其他人依旧连接你的代理
● 可以手动修改默认的8888端口号
1) 打开设置面板
2) 修改默认的端口号保存即可
5. 设置本地(电脑端)不走Charles代理
● 本地走代理部分情况下会导致上网慢(如有针对情况下限速),且电脑端产生的请求较多,容易刷屏
1) Proxy--Proxy
Setting…
2) 定位到Windows和Mozilla FireFox下
3) 将下方的复选框取消勾选后保存
4) 以后再次启动Charles后,电脑端的所有请求就不会被Charles抓包
6. 设置关注的域名
● 抓包域名比较多情况下,容易刷屏,可以将需要测试的域名添加到关注列表,方便查看
1) 产生的网络请求中,选中后右键选择Focus
2) 再次产生改请求的情况下就会在前面,而未关注的域名就会被分配到Other
Hosts下
7. 域名重定向(A-->B)
● 测试过程中客,可能会将户端A域名的请求访问到B域名上
1) 找到需要重定向(A)的域名,右键选择Map Remote...
2) 填入对应域名的信息后保存(A-->B)
3) 客户端再次请求,下发的域名变为B
8. 域名重定向(A-->本地文件)
● 测试过程中,需要看客户端对服务端数据的容错,如果服务端没有给脏数据,则需要本地模拟脏数据
● 需要对一个字段进行多次校验工作,服务端配置麻烦可以采用本地方式
1) 将正常访问的域名的response数据,复制保存到本地(格式无所谓,txt、json都可以)
2) 选择域名,右键访问的链接,选择Map Local
3) 在Local Path路径中,将本地保存的数据选中
4) 客户端再次请求时,访问的数据即为本地数据
9. 查看已配置的重定向设置
● 查看和取消Map Local和Map Remote已经设置的重定向
1) 点击菜单中的Tools
2) 需要取消重定向设置,将已配置的数据删除或者选择Enable
Map Local开关即可
10. 设置限速
● 查看网络加载慢情况下,客户端的容错及反馈情况
1) 打开限速设置窗口
2) 限速可以针对选定的域名,也可以针对生效
3) 也可以参照Facebook开源的方案进行设置
a) 限速提供了通用的方案,比如Custom,3G等方案
b) 可以手动设置解决方案
海外项目,建议参照Facebook的ATC解决方案来模拟
● Facebook
ATC提供了将近10种类型的网络参数设置,包含了发达国家,发展中国家,郊区、市区等网络情况
11. https解密抓包
● 安全起见,公司部分域名采用了https的方式,https是加密,常规情况下无法抓到包请求
1) 开启Charles
2) 电脑端安装Charles证书
a)
Help--SSL
Proxying--install Charles Root Certificate
b) 安装证书
c) 证书安装到“受新人的发布者”下
3) 手机端安装电脑证书
b) 部分浏览器如果提示证书下载失败,就换个浏览器,目前QQ浏览器亲测有效c) 安装证书,证书名字随便写
d) 安装证书需要设置锁屏密码
4) 安装成功后,Charles客户端开启对应的域名SSL
5) 设置对应域名的网络连接,https默认端口为443
6) 设置成功后,访问域名,即可查看解密后的请求状况
12. 重复请求
● 对于一些客户端不容易触发的请求,可以通过charles中repeat功能进行重复请求,简单方便
1) 选中请求的URL,右键选择Repeat
2) 即可查看请求的结果
13. 对接口进行压力测试
1) 选中要进行压测的接口,右键选择Repeat Advanced…
2) 填入重复执行的次数和并发数
a) Itreations:循环次数
b) Concurrency:并发次数
c) Delays,请求与请求之间的间隔时间
● 并发代表是统一时间内请求多少次,比如设置循环6次,每次并发3条,则会分2次,每次并发3条去向服务端进行请求(需要注意的是,如果循环次数不是并发次数的整数倍,则不会触发所有的请求,如设置循环次数为10,并发条数为3,那么最终只会发起9次请求)
3) 查看测试结果
14. 修改请求参数之Edit
● 验证不同请求参数下,接口是否返回对应的数据
比如发魔方数据,限制了MCC为460以内的生效,那就可以改MCC为非460,看是否还能请求到对应的开关信息
1) 选中对应请求,选择Edit
2) 修改参数请求参数后点Execute
3) 重新请求后,请求参数中就包含了对应的参数
15. 修改请求参数之Rewrite
● 客户端的云端开关,大多是通过魔方下发,不同的MCC,语言和aid会下发不同的数据,客户端如果要拉取不同的配置时,需要修改这些参数。修改MCC和aid还需要在root的设备上使用三方工具,随着Android版本的升级,部分参数甚至无法修改
● 广告和新闻的数据,会区分国际进行投放,有时甚至只会针对特定的国家(如印度新闻)投放,客户端为了测试这些功能,需要借助VPN或者debug版本
● 与MCC和aid修改器说再见
1) 打开Rewrite设置
2) 添加一条配置信息
a) 打开Enable Rewite功能开关
b) 添加一条配置信息
c) Location中,添加域名的详细信息
3) 对域名添加对应的规则
a) 修改URL中的请求参数,比如MCC,aid等,Type选择:Modify
Query Param
b) 修改URL中的地域,比如添加某个国家的IP,Type选择:Add
Header
❖ 举个栗子:
➢ 例子1:客户端需要请求只针对MCC为310且aid尾号为1的用户下发的魔方云端配置
1. 配置魔方域名
2. Type选择:Modify Query Param,并填写对应的参数
3. 打开开关,客户端再次发生请求
➢ 例子2:客户端需求请求只针对印度IP下发的picks广告数据
1. 配置对应域名的数据
2. 新增一个请求参数
3. 再次请求对应链接
➢ 例子3:客户端需要请求只针对英国IP下发的新闻数据
1. 配置对应域名的数据
2. 选择Type为Add Header
3. 客户端再去触发请求,抓包查看X-Forwarded-For已修改为2.101.8.8
16. session的操作
Charles支持同时打开多个session,但新发起的网络请求,只会在最后建议的session中进行记录
Charles还支持将session进行保存,在需要的时候可以将session作为Charles的日志提供给其他需要的人进行查看
17. 两种数据查看方式:structur和sequence
18. 复制和保存请求内容
1. 在某个请求上右键选择“copy
URL”,可以将本次请求的完整URL复制出来
2. 在某个请求上右键选择“copy
response”,可以将本次返回数据的完整内容复制出来
3. 在某个请求上右键选择“save
response”,可以将本次返回数据的完整内容以文件的形式保存在本地
19. 选择内容查看方式
1. 在某个请求上右键选择“view
response as”并进一步选择需要的数据查看方式(有时候返回的内容,Charles不能直接提供json的查看方式,可以用这个功能来强行查看josn格式)
2. 同理,可以在某个请求上右键选择“view
request as”并进一步选择需要的数据查看方式
20.对添加ignore的域名取消忽略
1. 忽略对应的域名
2. 进入Proxy--Recording Settings,进入Exclude取消remove即可