Charles抓包工具

        Charles是一款代理服务器,通过成为电脑或者浏览器的代理,截取请求和请求结果达到分析抓包的目的。与之比较相似的软件还有Fiddler,但是Fiddler对Mac的兼容不够好,所以建议使用Charles。该软件是用Java写的,能够在WindowsMacLinux上使用。Charles的主要功能用:

         1支持SSL代理,可以截取分析SSL的请求;

       2、支持流量控制,可以模拟慢速网络以及等待时间(latency)较长的请求;

          3支持AJAX调试,可以自动将jsonxml数据格式化,方便查看;

          4支持AMF调试,可以将Flash Remoting或Flex Remoting信息格式化,方便查看

          5支持重发网络请求,方便后端调试

          6支持修改网络请求参数;

          7支持网络请求的截获并动态修改;

          8检查HTMLCSSRSS内容是否符合W3C标准;

使用方法:

1、Charles提供两种视图:

1>Structure视图按域名将请求的url进行分类,右侧是每个url的详细信息;

Charles抓包工具

2>Sequence视图将请求以请求时间排序,下方是每个url的详细信息;

Charles抓包工具

2、过滤URL:

1>在Filter中输入关键字,只过滤出想要显示的URL;

Charles抓包工具

2>使用“Recording Settings”中的“Include”和“Exclude”进行过滤;

Charles抓包工具

3>选中想要特别关注的url,右键菜单“Focus”,然后选中“Focused”,也可以进行过滤;

Charles抓包工具

3、抓包手机http请求,以iphone为例:

1>打开菜单“Proxy”->“Proxy Settings”,可以看到Charles默认监听的端口是:8888,并且在“Enable transparent HTTP proxying”前打勾选中;

Charles抓包工具

2>打开菜单“Help”->“Local IP Address”,查看安装Charles的电脑的ip地址;

Charles抓包工具

3>在手机所连接的Wifi中设置代理为步骤1和2得到的端口和地址,注意安装Charles的电脑和设置代理的手机所连接的网络必须是同一网络,保存设置后便可以抓到手机的请求。

Charles抓包工具

4、手机抓包https请求,以iphone为例:

1>如果请求是https请求,如果未做此设置,抓包得到的是unknown的数据,需要在电脑和手机上安装Charles的CA证书;

Charles抓包工具

2>打开菜单“Help”->“SSL Proxying”->“Install Charles Root Certificate”;

Charles抓包工具

3>找到Charles证书,连续点击,在弹出的对话框的“信任”中,选择“始终信任”;

Charles抓包工具

4>此时仍然无法抓https的包,因为还需要在手机安装Charles的CA证书。打开菜单“Help”->“SSL Proxying”->“Install Charles Root Certificate on a Mobile Device or Remote Browser”;

Charles抓包工具

5>在弹出的对话框中找到如图所示地址,在手机的浏览器中打开。

Charles抓包工具

6>在手机浏览器中请求该地址后,点击允许并安装。安装完成后此时显示“已验证”;

Charles抓包工具    Charles抓包工具    Charles抓包工具

7、在手机“通用”->“关于本机”->“证书信任设置”中,对Charles证书设置为完全信任。

Charles抓包工具

8、选中要抓的https请求,右键菜单“Enable SSL Proxying”。

Charles抓包工具

9、在菜单“Proxy”->“SSL Proxying Settings”中的“SSL Proxying”中添加了该url,此时便可抓https的包。

    Charles抓包工具

5、模拟慢速网络:

进入菜单:“Proxy”->“Throttle Settings”,勾选“Enable Throttling”,并在下方设置参数。如果只对某个请求限速,可以勾选“Only for selected hosts”。

Charles抓包工具

6、修改网络请求内容并请求:

1>选中要修改的url,右键菜单“Compose”;

Charles抓包工具

2>在打开的窗口可以修改url的请求参数,点击“Execute”执行请求。

Charles抓包工具

7、给服务器做压力测试:

1>选中某个url,右键菜单“Repeat Advanced”;

Charles抓包工具

2>输入请求次数、并发数以及时间间隔便可以进行测试;

Charles抓包工具

8、使用Map方式将某个请求转到另一个请求:

1>打开菜单“Tools”->“Map Remote”,勾选“Enable Map Remote”;

Charles抓包工具

2、填写要从哪个url转到哪个url。

Charles抓包工具

3、如果是Map Local方式,则文件可以使用Charles提供的Save Request、Save Response以及Export功能导出;

9、使用Rewrite功能修改实际返回的值:

进入菜单“Tools”->“Rewrite”,勾选“Enable Rewrite”,添加所需参数;

Charles抓包工具

10、使用Breakpoint临时修改内容:

进入菜单“Proxy”->“Breakpoint Settings”,勾选“Enable Breakpoints”,添加所需参数;

Charles抓包工具

11、反向代理:

进入菜单“Proxy”->“Reverse Proxies”,勾选“Enable Reverse Proxies”,添加所需参数;

Charles抓包工具

12、解决多个代理的冲突:

进入菜单“Proxy”->“External Proxy Settings”,勾选“Enable external proxy servers”,添加所需参数;

Charles抓包工具


参考:http://blog.devtang.com/2015/11/14/charles-introduction/