Charles抓包神器的使用,完美解决抓取HTTPS请求unknown问题

简介: 本文介绍了在 Mac 上使用的 HTTP 和 HTTPS 抓包工具 Charles 的配置方法。首先,强调了安装证书对于抓取 HTTPS 请求的重要性,涉及 PC 和手机端。在 PC 端,需通过 Charles 软件安装证书,然后在钥匙串访问中设置为始终信任。对于 iOS 设备,需设置 HTTP 代理,通过电脑上的 IP 和端口访问特定网址下载并安装证书,同时在设置中信任该证书。配置 Charles 包括设置代理端口和启用 SSL 代理。完成这些步骤后,即可开始抓包。文章还提及 Android 7.0 以上版本可能存在不信任用户添加 CA 证书的问题,但未提供解决办法。

在 Windows 上可能比较好用的抓包工具是 fidder,当然,在 Mac 上也有一款抓包神器不输 fiddler,那就是今天的主角—— Charles。

软件的安装过程就不介绍了,只要自己下载好了软件,安装过程就是傻瓜式的操作,非常简单。

今天主要介绍的是如何配置 HTTP 和 HTTPS。有不少童鞋在抓取 HTTPS 请求时,会出现 unknown 无法解析的情况,那么,遇到这种情况,我们该如何处理呢?

这篇文章将为你介绍整个配置过程,来,继续往下看吧!

我这里演示的是:
Charles 版本为:4.6.6
MacOS 系统版本为:Sonoma 14.5
iOS 系统版本为:17.3

安装证书

安装证书这一步是抓取 HTTPS 请求的关键所在,包括 PC 端和手机端都需要安装证书

PC 端

我们需要先打开 Charles 软件,然后在菜单栏中依次选择:Help -> SSL Proxying -> Install Charles Root Certificate 然后直接点击,将证书安装到我们的电脑上。

安装证书

将证书安装完毕之后,我们需要打开钥匙串访问

打开「钥匙串访问」

当我们打开钥匙串访问后,找到「系统钥匙串」-> 「系统」-> 「证书」-> 「Charles Proxy CA……」

找到证书

我们可以看到这个证书默认是不被信任的,此时我们需要将其设置为信任。

设置证书为“始终信任”

  1. 我们直接对着“Charles Proxy ……”开头的证书直接双击然后就会出现一个弹窗;
  2. 此弹窗中有一个信任,默认是闭合的,此时我们需要点击一下,进行展开;
  3. 展开后我们可以看到有一项“使用此证书时”,我们将其改为始终信任
  4. 然后关闭此弹窗就可以了。不放心的童鞋可以再次打开这个弹窗做一个验证。

需要输入密码

当我们关闭弹窗的时候,需要我们验证密码。

已经标记为“受所有用户信任”

当我们再次查看证书时,我们可以看到此时已经是受所有用户信任,此时电脑端的证书就已经安装完成了。

接下来,我们安装手机端的证书:

手机端

我这里以 iOS 设备为例,Android 手机可能会有所差异,但是我想应该安装步骤都是大差不差的,各位做一个参考也行。

在手机上安装证书,依然需要先打开 Charles 软件,然后在菜单栏中依次选择:Help -> SSL Proxying -> Install Charles Root Certificate on a Mobile Device or Remote Browser 然后直接点击。

手机上安装证书

当我们点击之后会有一个弹框提示,大致内容如下:

手机端安装时,会有弹窗提示

大致的意思是说需要我们在手机上设置 HTTP 代理,代理地址为 192.168.0.102:8888 设置好后再通过浏览器访问 chls.pro/ssl 地址并下载安装证书。

并且还需要注意:如果是 iOS 10 及其以后的版本时,还需要进入「设置」-> 「通用」->「关于本机」-> 滑到最底部「证书信任设置」,并启用 Charles 证书为可信任证书。

并且还需要注意的是,你一定需要将手机和电脑连接在同一个局域网内,如果你的电脑是笔记本的话,就是说你的电脑和手机连接的是同一个 Wi-Fi。另外这里我的电脑端局域网 IP 地址为 192.168.0.102 你的可能和我的不一样,这个也是正常现象,以弹窗中的 IP 地址为准。

接下来,我们需要在手机上操作:

  1. 打开「设置」找到「无线局域网」这里一定需要注意,此时你手机上连接的 Wi-Fi 一定和电脑所在的网络在同一个局域网内,不然就白搭了。
  2. 点击你所连接的 Wi-Fi,滑到最底部会有一个「配置代理」,点击打开,选择「手动」。
  3. 然后在“服务器”位置输入192.168.0.102,“端口”位置输入8888,然后点击右上角的「存储」。

手机上配置代理

然后去打开 Safari 浏览器(其他浏览器不一定可以唤起安装证书的弹窗),输入地址 chls.pro/ssl 打开页面,此时会自动唤起安装描述文件的弹窗。

如果此时你发现并没有唤起安装描述文件的弹窗时,你需要回到你的电脑上,可能会有一个类似以下的弹窗,你需要点击一下Allow,这是你的手机连接到了 Charles 。当你点击了 Allow 之后再去手机 Safari 浏览器上刷新一下应该就会有安装描述文件的弹窗了。

需要在电脑上允许一下

当出现安装描述文件的弹窗后,会告知你现在正在下载一个配置描述文件,你直接点击允许就好了。

手机上下载配置描述文件

当下载好证书之后,我们需要前往:「设置」->「通用」-> 「VPN与设备管理」然后就可以看到“已下载的描述文件” Charles Proxy CA…… 进行点击进去,然后看到右上角会有一个「安装」按钮,点击安装即可。

安装配置描述文件

之前也说到了,如果是 iOS 10 及其以后的版本时,还需要在「证书信任设置」,并启用 Charles 证书为可信任证书,这点你按照你的系统版本按需来做就好了。

不过一般来说,现在很少有低于 iOS 10 的手机还在跑了吧?其实这一点也是很多人虽然安装完了证书,但是发现依然抓取 HTTPS 请求时认为 unknown 的原因。 所以,一定要记得去信任一下证书,这点非常重要!

开启信任证书

现在我们证书已经安装好了,但是还需要简单配置一下 Charles。

配置 Charles

配置代理端口

直接点击菜单栏中的「Proxy」 ->「Proxy Settings」

配置代理

还记得上面我们在手机上设置代理的时候那个 8888 端口吗?如果你想自定义代理端口,可以直接在这个位置进行更改。不改问题也不大,自己按照实际情况而定。

更改代理端口

配置 SSL 代理设置

直接点击菜单栏中的「Proxy」->「SSL Proxying Settings」

配置SSL代理设置

这里有一个非常重要的配置 SSL Proxying Settings,我们需要确保勾选上了「Enable SSL Proxying」并且还需要添加「Include」,否则即使我们添加了证书,抓取 HTTPS 时还是会出现 unknown

配置 SSL 代理设置

Include 和 Exclude 就是字面上的含义,分别代表包含和不包含,这里我在 Include 处设置两个星号 * 的含义是:包含所有的域名和端口。你也可以按照你自己的实际情况来设置。

好了,现在该配置的都已经配置完了,剩下的就可以愉快的玩耍啦。

另外,听说 Android 7.0 之后默认不信任用户添加到系统的 CA 证书,也就是说对基于 SDK24 及以上的 APP 来说,即使你在手机上安装了抓包工具的证书也无法抓取 HTTPS 请求。那么如何解决这个问题呢?当前我手上没有 Android 手机,也无法去测试,这个问题就留给有 Android 手机的用户来解决吧。不过,我想这个问题应该也已经有了解决方案,如果你知道解决方案,也希望一起分享分享。

相关文章
|
1月前
|
安全 API 网络安全
使用OkHttp进行HTTPS请求的Kotlin实现
使用OkHttp进行HTTPS请求的Kotlin实现
|
2月前
|
安全 网络安全 数据安全/隐私保护
HTTPS 请求中的证书验证详解(Python版)
HTTPS 请求中的证书验证详解(Python版)
174 0
|
4月前
|
Web App开发 存储
常见抓包工具配置抓取HTTPS
常见抓包工具配置抓取HTTPS
|
4月前
|
JavaScript 前端开发 Java
【Azure 环境】各种语言版本或命令,发送HTTP/HTTPS的请求合集
【Azure 环境】各种语言版本或命令,发送HTTP/HTTPS的请求合集
推荐一http抓包工具
http://www.ieinspector.com/httpanalyzer/
608 0
|
3月前
|
监控 安全 搜索推荐
设置 HTTPS 协议以确保数据传输的安全性
设置 HTTPS 协议以确保数据传输的安全性
|
1天前
|
网络协议 安全 网络安全
探索网络模型与协议:从OSI到HTTPs的原理解析
OSI七层网络模型和TCP/IP四层模型是理解和设计计算机网络的框架。OSI模型包括物理层、数据链路层、网络层、传输层、会话层、表示层和应用层,而TCP/IP模型则简化为链路层、网络层、传输层和 HTTPS协议基于HTTP并通过TLS/SSL加密数据,确保安全传输。其连接过程涉及TCP三次握手、SSL证书验证、对称密钥交换等步骤,以保障通信的安全性和完整性。数字信封技术使用非对称加密和数字证书确保数据的机密性和身份认证。 浏览器通过Https访问网站的过程包括输入网址、DNS解析、建立TCP连接、发送HTTPS请求、接收响应、验证证书和解析网页内容等步骤,确保用户与服务器之间的安全通信。
7 1
|
27天前
|
安全 搜索推荐 网络安全
HTTPS协议是**一种通过计算机网络进行安全通信的传输协议
HTTPS协议是**一种通过计算机网络进行安全通信的传输协议
54 11
|
27天前
|
缓存 安全 网络协议
HTTPS协议的历史发展
HTTPS协议的历史发展
37 8
|
28天前
|
安全 应用服务中间件 Linux
判断一个网站是否使用HTTPS协议
判断一个网站是否使用HTTPS协议
41 4