将charles设置成系统代理
抓包原理:charles是通过将自己设置成代理服务器来完成封包截取的。
windows平台:选择菜单中的"Proxy" -> "Windows Proxy"
mac平台:选择菜单中的"Proxy" -> "Mac OS X Proxy"
查看抓包请求
charles提供两种查看抓包的的视图
- structure 视图将网络请求按访问的域名分类
- sequence 视图将网络请求按访问的时间排序
过滤网络请求
方法一:使用filter栏
方法二:在菜单栏选择"Proxy" -> "Recording Settings",然后选择 include 项,添加一个 location ,填入需要监控的协议、主机地址、端口号,即可只截取目标服务器的网络请求了。
方法三:在想过滤的网络请求上右击,选择"Focus",之后在 Filter 一栏勾选上 Focussed 选项。
截取手机上的网络请求
charles 上的设置
将代理功能打开,在菜单栏中选择 "proxy" -> "proxy setting", 默认是proxies项,
在 http proxy设置框中,填入代理端口8888,并且勾选 "enable transparent HTTP proxying"。
手机上的设置
打开wifi设置,在详情中找到http 代理一项,选择手动模式,填入 charles 运行所在的电脑的ip,以及端口号8888。
截取 https 通讯协议
安装证书:安装 charles 的CA证书。
电脑上安装证书:
在菜单栏选择 "help" -> "ssl proxying" -> "install charles Root Certificate",之后安装证书即可。
手机上安装证书
在菜单栏选择 "help" -> "ssl proxying" -> "install charles Root Certificate on a Mobile Devices or Remote Browser",会弹出弹窗,内容如下:
configure your devices to use charles as it's HTTP proxy on x.x.x.x:8888, then browse to chls.pro/ssl to download and install the certificate.
经测试,在iphone上,需要使用safari浏览器才行,使用QQ浏览器无法识别证书,不能安装。
开启截取HTTPS
在菜单栏选择 "proxy" -> "ssl proxy setting" -> ssl proxying,然后勾选 Enable SSL Proxying,添加 location, 输入主机地址、端口号(https默认端口是443)
手机上信任证书
iPhone:设置 -> 通用 -> 关于本机 -> 证书信任设置
模拟慢速网络
在做移动开发的时候,我们常需要模拟慢速网络或者高延迟的网络,以测试在移动网络下,应用的表现是否正常。
在菜单栏中选择 "proxy" -> "Throttle Setting" ,然后勾选 Enable Throttling,并且可以设置 Throttle Preset 类型。
- only for selected hosts
勾选这个选项后,可添加 location ,只模拟制定网站的慢速网络。
修改网络请求内容
在以往请求上点击右键,选择 "compose", 即可创建一个可编辑的网络请求。
我们可以修改该请求的任何信息,包括url、端口、参数等,之后点击 "Execute" 即可发送该修改后的网络请求。
给服务器做压力测试
可以使用Charles 的 Repeat 功能来简单地测试服务器的并发能力,方法如下。
在需要测试的网络请求上右击,选择 Repeat Advanced项,可以在弹出的对话框中设置请求次数以及并发线程数。
修改服务器返回内容
有时候我们想让服务器返回一些指定的内容,方便我们调试一些特殊情况。例如列表页面为空的情况,数据异常的情况,部分耗时的网络请求超时的情况等。
根据具体的需求,charles 提供了 Map 功能、Rewrite 功能、以及 Breakpoints 功能,都可以达到修改服务器返回内容的目的。这三者在功能上的差异是:
- Map 功能适合长期地将某一些请求重定向到另一个网络地址或本地文件
- Rewrite 功能适合对网络请求进行一些正则替换
- Breakpoints 功能适合做一些临时性的修改
Map 功能
charles的 Map 功能分 Map Remote 和 Map local 两种。
- Map Remote 是将制定的网络请求重定向到另一个网址请求地址
- Map Local 是将制定的网络请求重定向到本地文件
在菜单栏中选择 "tools" -> "Map Remote"
需要填写网络重定向的源地址和目的地址,对于不需要限制的条件可以留空。
在菜单栏中选择 "tools" -> "Map Local"
对于复杂的网络请求结果,我们可以先使用 charles 的 save Response 功能, 将请求结果保存到本地,然后稍加修改,成为我们的目标映射文件。
Rewrite 功能
在菜单栏中选择 "tools" -> "Rewrite"
添加 rule ,修改返回内容。
缺点:只能修改简单的字段,复杂的不适合(使用Map Local)
添加rule, 作为代理
更建议使用Map Remote
BreakPoints 功能
临时性
在菜单栏中选择 "proxy" -> "BreakPoints setting"
注意事项
当开启断点功能时,请注意接口的参数部分。
如果某个参数是变化的,charles会认为是另外一个请求,则断点无效。
反向代理
在菜单栏中选择 "proxy" -> "Reverse proxies settings"
反向代理功能允许我们将本地的端口映射到远程的另一个端口上。
设置外部代理,解决与翻墙软件冲突
charles和翻墙软件都是把自己设置成系统代理,会产生冲突。
在菜单栏中选择 "proxy" -> external Proxy Settings
网友评论