1. 如何抓取HTTPS包
1.1首先在charles的 Proxy选项选择SSL Proxy Settings
Proxy -> SSL Proxying Settings...
勾选Enable SSL Proxying,点击Add
点add添加需要监视的域名,支持 *号通配符,端口一般都是443:
1.2 电脑端安装根证书,注意一定把证书安装在受信任的第三方证书颁发机构目录下
直接在Charles的Help菜单中安装;
1.3 手机设置代理
设置--无线局域网--点击手机连接的WiFi--配置代理--选择手动--输入安装Charles的电脑的网络地址,端口填8888。
1.4 在手机上安装Charles证书
以IOS为例,在Safri上打开Charles的根证书下载网址: chls.pro/ssl 。
顺利的话会出现这样的画面,继续点安装,然后去设置里的描述文件管理中信任它就行了。
如果不能下载,检查手机是否正确设置了代理,Charles是否已经打开并配置正确
2. 模拟弱网
Proxy--Throttle--settings
3. 拦截请求
3.1 通过Charles抓包,可拦截请求并篡改交互信息
a. 可篡改客户端向服务器发起的请求信息(服务器收到的是假消息)
b. 可篡改服务器返回给客户端的响应结果(客户端看到的是假消息)
3.2 篡改用户请求
在浏览器中输入请求,在Charles中会生成一个目录,选择最后一个节点,右键->Breakpoints
在浏览器中刷新该页面,Charles会跳转到Breakpoints列表
篡改请求信息后,点击底部Execute按钮
返回浏览器查看服务器返回结果,返回的页面信息为修改请求后的页面,而不是用户真正请求的页面
3.3 篡改服务器响应结果
a. 设置Breakpoints,将请求信息拦截
b. 点击底部Execute按钮,跳转到如下界面
c. 删除Text中的所有信息,输入<h1>Hi~</h1>,点击Execute
d. 返回浏览器查看页面,展示信息如下
4. 怎么做URL映射
4.1 Map Remote
Tools--Map Remote
4.2 Map Local
注意:Map Local的location必须加www
4.3 Map Remote 与Map local的区别
Charles 的 Map 功能分 Map Remote 和 Map Local 两种,Map Remote 是将指定的网络请求重定向到另一个网址请求地址,Map Local 是将指定的网络请求重定向到本地文件。
对于 Map Remote 功能,我们需要分别填写网络重定向的源地址和目的地址,对于不需要限制的条件,可以不填
对于 Map Local 功能,我们需要填写的重定向的源地址和本地的目标文件。对于有一些复杂的网络请求结果,我们可以先使用 Charles 提供的 “Save Response…” 功能,将请求结果保存到本地(如下图所示),然后稍加修改,成为我们的目标映射文件。
Map Local 在使用的时候,有一个潜在的问题,就是其返回的 Http Response Header 与正常的请求并不一样。这个时候如果客户端校验了 Http Response Header 中的部分内容,就会使得该功能失效。解决办法是同时使用 Map Local 以下面提到的 Rewrite 功能,将相关的 Http 头 Rewrite 成我们希望的内容。