iOS开发系列-Charles
概述
Charles相当于一个插在服务器和客户端之间的“过滤器”。当客户端向服务器发起请求的时候,先到charles进行过滤,然后charles在把最终的数据发送给服务器;
注意:此时charles发给服务器的数据,不一定是客户端请求的数据;charles在接到客户端的请求时可以自由的修改数据,甚至可以直接Block客户端发的请求
服务器接收请求后的返回数据,也会先到charles,经过charles过滤后再发给客户端;同理:客户端接收的数据,不一定就是服务器返回的数据,而是charles给的数据;
Charles使用
Charles配置
如果想要抓包,第一件事情,就是把charles设置成为本机和服务端之间的”过滤器”;让所有的网络请求全部经过charles,这样就可以捕获并记录到你请求的内容和返回数据了。
设置iPhone的HTTP代理
启动 Charles 后,第一次 Charles 会询问你是否把Charles设置为系统的代理,选择Allow。这样就配置完成了。
charles 主界面的介绍
Charles 主要提供两种查看封包的视图,分别名为 “Structure” 和 “Sequence”。
– Structure/结构视图,将网络请求按访问的域名分类,比如某个域名下有n个资源请求,那么所有此域名下的请求都会在这里做一个详细的分类;
- Sequence/序列视图,将网络请求按访问的时间排序,按照你的电脑的发送请求顺序进行。
Charles Filter过滤
求多了有些时候会看不过来,对于需要抓取的某个请求,通常情况下,我们需要对网络请求进行过滤,只监控向指定目录服务器上发送的请求。对于这种需求,以下几种办法:
方案一
Charles 提供了一个简单的 Filter 功能,可以输入关键字来快速筛选出 URL 中带指定关键字的网络请求。
在主界面的中部的 Filter 栏中填入需要过滤出来的关键字。例如我查看的域名地址
方案二
在 Charles 的菜单栏选择 “Proxy”->”Recording Settings”,然后选择 Include 栏,选择添加一个项目,然后填入需要监控的协议,主机地址,端口号。这样就可以只截取目标网站的封包了;
Charles 网络环境模拟
在开发中中有些bug需要在网络慢的场景中复现。我们可以利用Charles控制手机的网速。
在 Charles 的菜单栏选择 “Proxy”->”Throttle(节流) Settings”,然后勾选 Enable Throttling 选项,选择添加一个Throttle preset。这样就可以了;
Charles 抓包内容乱码解决
在安装的Charles程序右键显示报内容找到Info.plist文件JVMOptions在默认的-Xmx512m后面敲空格 添加-Dfile.encoding=UTF-8
。
对于其它的一些使用方法可参考:http://zhubangbang.com/charlesproxy
最新文章
- IE10(去掉文本框的X)
- SQL Queries from Transactional Plugin Pipeline
- vi/vim初步接触
- Windbg 双机代码同步调试设置
- Java [Leetcode 231]Power of Two
- 帝国cms中 内容分页的SEO优化
- maven指定构建的编码格式
- Ruby的语法糖
- mysql binlog 混合模式 出现的基于sql的数据不一致,主要是now()这类函数导致
- Nginx访问限速配置方法详解
- select标签 样式 及文本有空格
- Tomcat结构(转)
- 表达式求值(栈方法/C++语言描述)(三)
- apache mysql无法启动解决办法
- 为开源社区尽一份力,翻译RocketMQ官方文档
- 【TensorFlow篇】--Tensorflow框架可视化之Tensorboard
- C++自己实现一个String类
- 封装redis
- 解决win10隔几分钟自动黑屏睡眠的方法
- 【转载】C#使用正则表达式校验邮箱