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)  
定位到WindowsMozilla 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即可