Charles抓包工具
Charles是一款代理服务器,通过成为电脑或者浏览器的代理,截取请求和请求结果达到分析抓包的目的。与之比较相似的软件还有Fiddler,但是Fiddler对Mac的兼容不够好,所以建议使用Charles。该软件是用Java写的,能够在Windows,Mac,Linux上使用。Charles的主要功能用:
1、支持SSL代理,可以截取分析SSL的请求;
2、支持流量控制,可以模拟慢速网络以及等待时间(latency)较长的请求;
3、支持AJAX调试,可以自动将json或xml数据格式化,方便查看;
4、支持AMF调试,可以将Flash Remoting或Flex Remoting信息格式化,方便查看;
5、支持重发网络请求,方便后端调试;
6、支持修改网络请求参数;
7、支持网络请求的截获并动态修改;
8、检查HTML,CSS和RSS内容是否符合W3C标准;
使用方法:
1、Charles提供两种视图:
1>Structure视图按域名将请求的url进行分类,右侧是每个url的详细信息;
2>Sequence视图将请求以请求时间排序,下方是每个url的详细信息;
2、过滤URL:
1>在Filter中输入关键字,只过滤出想要显示的URL;
2>使用“Recording Settings”中的“Include”和“Exclude”进行过滤;
3>选中想要特别关注的url,右键菜单“Focus”,然后选中“Focused”,也可以进行过滤;
3、抓包手机http请求,以iphone为例:
1>打开菜单“Proxy”->“Proxy Settings”,可以看到Charles默认监听的端口是:8888,并且在“Enable transparent HTTP proxying”前打勾选中;
3>在手机所连接的Wifi中设置代理为步骤1和2得到的端口和地址,注意安装Charles的电脑和设置代理的手机所连接的网络必须是同一网络,保存设置后便可以抓到手机的请求。
4、手机抓包https请求,以iphone为例:
1>如果请求是https请求,如果未做此设置,抓包得到的是unknown的数据,需要在电脑和手机上安装Charles的CA证书;
2>打开菜单“Help”->“SSL Proxying”->“Install Charles Root Certificate”;
3>找到Charles证书,连续点击,在弹出的对话框的“信任”中,选择“始终信任”;
4>此时仍然无法抓https的包,因为还需要在手机安装Charles的CA证书。打开菜单“Help”->“SSL Proxying”->“Install Charles Root Certificate on a Mobile Device or Remote Browser”;
5>在弹出的对话框中找到如图所示地址,在手机的浏览器中打开。
6>在手机浏览器中请求该地址后,点击允许并安装。安装完成后此时显示“已验证”;
7、在手机“通用”->“关于本机”->“证书信任设置”中,对Charles证书设置为完全信任。
8、选中要抓的https请求,右键菜单“Enable SSL Proxying”。
9、在菜单“Proxy”->“SSL Proxying Settings”中的“SSL Proxying”中添加了该url,此时便可抓https的包。
5、模拟慢速网络:
进入菜单:“Proxy”->“Throttle Settings”,勾选“Enable Throttling”,并在下方设置参数。如果只对某个请求限速,可以勾选“Only for selected hosts”。
6、修改网络请求内容并请求:
1>选中要修改的url,右键菜单“Compose”;
2>在打开的窗口可以修改url的请求参数,点击“Execute”执行请求。
7、给服务器做压力测试:
1>选中某个url,右键菜单“Repeat Advanced”;
2>输入请求次数、并发数以及时间间隔便可以进行测试;
8、使用Map方式将某个请求转到另一个请求:
1>打开菜单“Tools”->“Map Remote”,勾选“Enable Map Remote”;
2、填写要从哪个url转到哪个url。
3、如果是Map Local方式,则文件可以使用Charles提供的Save Request、Save Response以及Export功能导出;
9、使用Rewrite功能修改实际返回的值:
进入菜单“Tools”->“Rewrite”,勾选“Enable Rewrite”,添加所需参数;
10、使用Breakpoint临时修改内容:
进入菜单“Proxy”->“Breakpoint Settings”,勾选“Enable Breakpoints”,添加所需参数;
11、反向代理:
进入菜单“Proxy”->“Reverse Proxies”,勾选“Enable Reverse Proxies”,添加所需参数;
12、解决多个代理的冲突:
进入菜单“Proxy”->“External Proxy Settings”,勾选“Enable external proxy servers”,添加所需参数;
参考:http://blog.devtang.com/2015/11/14/charles-introduction/