Charles(青花瓷抓包工具)使用教程

三、主要功能使用
(1)初步认识
Charles 提供两种查看封包的视图, “Structure” 和 “Sequence”。
1、Structure 视图将网络请求按访问的域名分类。
2、Sequence 视图将网络请求按访问的时间排序。
可以根据具体的需要在这两种视图之前来回切换。请求多了有些时候会看不过来,Charles 提供了一个简单的 Filter 功能,可以输入关键字来快速筛选出 URL在这里插入图片描述
在这里插入图片描述

(2)HTTP & HTTPS抓包(网页)

抓取 Http 和 Https 的请求和响应。
1.http:

启动 后,将 Charles 设置成系统代理,选择菜单中的 “Proxy” –> “macOS Proxy” 将 Charles 设置成系统代理。

在这里插入图片描述

通过浏览器请求的网址都会出现在这里。点击具体的请求后出现request和response等信息。
2.https:

如果是https请求出现的是乱码,这时候你就需要安装Charles的CA证书了,点击 Charles 的菜单,选择 “Help”-> “SSL Proxying”-> “Install Charles Root Certificate”

在这里插入图片描述
然后输入系统的帐号密码,即可在钥匙串看到添加好的证书。默认该证书是不被信任的,在该证书上右键->”显示简介”,手动改为始终信任。
在这里插入图片描述
Charles设置Proxy
Proxy -> SSL Proxying Settings
勾选Enable SSL Proxying,点击Add
在这里插入图片描述

注意:
(1)未设置前https的标识都有<unknown>
(2)Host设置,不知道具体的API地址,可设置为" * ", 代表所有。
(3)Port设置,设置时Port默认都是443。

(3)手机抓包
可以抓手机端访问的资源。
Charles 设置:
要截取 手机网络请求,首先需要将 Charles 的代理功能打开。在 Charles 的菜单栏上选择 “Proxy”–>“Proxy Settings”,填入代理端口 8888,并且勾上 “Enable transparent HTTP proxying” 就完成在 Charles 上的设置。

在这里插入图片描述
iOS手机:
在 iPhone 的 “ 设置 ”–>“ 无线局域网 ” 中,找到当前连接的 wifi 名,点击右边的详情键,在其最底部有「HTTP 代理」一项,将其切换成手动,填上 Charles 运行所在的电脑的 IP,以及端口号 8888。

Android 手机:
“设置”->”WLAN”,选择与电脑相同的WiFi,勾选”显示高级选项”,并将代理设置为手动。然后填上 电脑的 IP,以及端口号 8888
如果要在 iOS 或 Android 机器上截取 Https 协议的通讯内容,还需要在手机上安装相应的证书。点击 Charles 的顶部菜单,选择 “Help” -> “SSL Proxying” -> “Install Charles Root Certificate on a Mobile Device or Remote Browser”,然后就可以看到 Charles 弹出的简单的安装教程。
在这里插入图片描述
(4)修改网络请求参数

网络请求的截获和动态修改。
了调试服务器的接口,需反复尝试不同参数的网络请求。Charles 可以方便地提供网络请求的修改和重发功能。选中以往的网络请求,工具栏中点击 “Edit”,即可创建一个可编辑的网络请求

在这里插入图片描述
(5)模拟慢速网络

支持模拟慢速网络,主要是模仿手机上的2G/3G/4G的访问流程。

在测试时想要模拟网络慢的情况,在Proxy->Throttle Setting,然后选择Enable Throttling,在Throttle Preset下选择网络类型即可。

在这里插入图片描述
“Only for selected hosts” 项代表:模拟指定网站的慢速网络。
(6)设置断点

在Charles发起一个请求的时候,可以给某个请求打一个断点,来观察或者修改请求或者返回的内容。只需要在请求网址右击选择Breakpoints,然后点击断点按钮。

在这里插入图片描述
(8)过滤

在 Charles 的菜单栏选择 Proxy->Recording Settings,然后选择 Include 栏,选择Add,然后填入需要监控的协议,主机地址,端口号,进行过滤。
在这里插入图片描述
注意注意在iOS 开发使用模拟器抓包https
更改使用AFNetworking

#import “AFURLConnectionOperation.h”
这个类里面更改成这样
原来的

 if ([self.securityPolicy evaluateServerTrust:challenge.protectionSpace.serverTrust forDomain:challenge.protectionSpace.host]) {
            NSURLCredential *credential = [NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust];
            [[challenge sender] useCredential:credential forAuthenticationChallenge:challenge];
        } else {
            [[challenge sender] cancelAuthenticationChallenge:challenge];
        }

更改后

 if ([self.securityPolicy evaluateServerTrust:challenge.protectionSpace.serverTrust forDomain:challenge.protectionSpace.host]) {
            NSURLCredential *credential = [NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust];
            [[challenge sender] useCredential:credential forAuthenticationChallenge:challenge];
        } else {
            NSURLCredential *credential = [NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust];
            [[challenge sender] useCredential:credential forAuthenticationChallenge:challenge];
        }
  • 2
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值