Charles教程汇总

 

1.  简介

    

●    Charles,一款代理抓包工具,可以分析和排查网络相关的问题

●    支持移动(安卓、iOS)设备

●    以下使用文档,以安卓设备为准,iOS设置大同小异

 

2.  Charles安装

●    安装包官方下载:http://www.charlesproxy.com/documentation/

○    官方版为试用版,启动时有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)   手机端安装电脑证书

a)   手机访问域名:http://www.charlesproxy.com/getssl/

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即可