Charles 抓包 Https 配置指南

article/2025/11/5 8:18:36

一、说明

在做客户端开发的时候大家一定经常用到抓包工具去抓接口排查调试,非常的简捷方便。Charles 是一款非常好用的抓包工具,我在日常开发中也很喜欢用其进行接口联调、问题排查。

以前的客户端接口请求大多是 Http 传输的,抓接口直接配置代理就可以了,而现在很多应用都改为使用 Https 加密传输,用 Charles 直接查看完全是一堆乱码。 Charles 到底可以抓包 Https 吗 ? 作为一款强大的抓包工具,当然是可以的,但是需要做一些配置才可以。

二、iOS 配置

声明一下:我的 Charles 是汉化版的,大家如果是英文版的也可以对比名称自己找对应的选项去操作。

第1步:在电脑上安装 Charles 证书

操作后显示:

上面有提示“此根证书不被信任”,这个不用理会。

第2步:手机安装证书

操作后显示:

接下来根据提示,在手机上操作:

  1. 配置代理
  2. 打开浏览器在地址栏输入 chls.pro/ssl,会提示下载证书
  3. 步骤截图(iOS 10)

        

如果是 iOS11,有2点区别:

  1. 不像上面的截图自动跳转到证书安装页面,需要进入系统设置的首页,在列表的靠上位置会多出一个“描述文件”选项,点击一下即可进入证书安装页面。
  2. 安装完需要手动信任一下证书:
    1. 设置
    2. 通用
    3. 关于本机
    4. 证书信任设置
    5. charles proxy custom root certificate
    6. 信任该证书

第3步:Charles 配置抓包

SSL 代理设置:

记录设置:

添加要代理的接口:

配置完这些就可以正常抓取 https 接口了。

三、Android 配置

Android 配置和 iOS 配置原理基本上大同小异。

我以小米手机为例说一下步骤:

  1. Charles 安装证书
  2. 系统设置中提前配置好代理
  3. 在浏览器中输入地址下载证书文件,下载完后可以在浏览器的下载结果中查看到该文件,然后记一下存储地址,等下要用
  4. 系统设置 -> 更多设置 -> 系统和安全 -> 从存储设备安装 -> 通过步骤2中记下的路径找到文件并选择 -> 输入密码安装
  5. 安装完后 Charles 配置该有的 url
  6. 完成以上步骤后就可以抓包了

其实上面我把安装证书和 Charles 配置又说了一遍,如果是电脑上已经安装过证书,也配置过 url ,直接操作步骤2、3、4就可以了。

此处注意:我在华为手机上下载证书是正常的,而在小米手机上下载的证书却完全不可用,之后我是尝试把华为手机上的证书传给小米手机去使用的。

这样 Android 端的 https 配置就搞定了。

四、问题

问题 1:Android 7.0 配置后不可用

在 Android 7.0 及以上的系统中,每个应用可以定义自己的可信 CA 集。默认情况下,应用只会信任系统预装的 CA 证书,而不会信任用户安装的CA证书。通过 Charles 安装的证书恰恰正属于用户安装的 CA 证书,因此会被视作不安全的证书。

解决方案:

配置文件:AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest ... ><application android:networkSecurityConfig="@xml/network_security_config"... >...</application>
</manifest>

配置文件:res/xml/network_security_config.xml

<network-security-config><base-config cleartextTrafficPermitted="true"><trust-anchors><certificates src="system" overridePins="true" /> <!--信任系统证书--><certificates src="user" overridePins="true" /> <!--信任用户证书--></trust-anchors></base-config>
</network-security-config>

问题 2:SSL Proxying not enabled for this host: enable in Proxy Settings

Charles 的早期版本配置完以上步骤就没什么问题了,但是近期版本,需要添加额外的配置。

在这儿配置好你自己的域名就可以了。

问题 3:nodename nor servname provided, or not known

有两种情况会报这个问题:

  1. 电脑连接了其它代理:
    1. 检查本机是否有使用 VPN 软件连接网络。
    2. 检查是否连接了带海外 VPN 的 WIFI 网络。
  2. DNS 被一些软件篡改了。你可以检查一下自己的 DNS 是否有问题。如果对 DNS 不太了解,你可以让服务端开发人员协助你检验一下 DNS 是否有问题。

MAC 电脑查看 DNS 方式:系统偏好设置 -> 网络 -> 高级 -> NDS 

将 DNS 删除即可。

问题 4:Charles failed to resolve the name of the remote host into an IP address.

有可能是你的 DNS 被篡改了,解决方案同“问题 3”。

问题 5:503 Error

错误提示:

Failure    UnknownHost: ...
Response Code    503 ErrorCharles Error Report
Name lookup failed for remote host
Charles failed to resolve the name of the remote host into an IP address. Check that the URL is correct.The actual exception reported was:java.net.UnknownHostException: pre-api-app.youyan.meitu.com
Charles Proxy, https://www.charlesproxy.com/

解决方案:

将手机上“已安装证书”中的 Charles 证书删除,并用之前下载到手机上的证书文件重新安装一次(无需重新下载)。

如果重新安装后由 503 错误变成了 404 错误,等一分钟左右再尝试请求接口,就可以正常抓到包了。

问题 6:前一秒还能抓包,后一秒突然抓不到了

重启 Charles 后就好使了,具体原因暂不清楚。

问题 7:Charels 可以显示其它 App 的接口请求,却不能显示自己 App 的

杀死进程,重启 App 后就可以了。

问题 8:400 Bad Request

我是在开启 Charles 的情况下,电脑又连接了一下代理,把代理关闭后会提示 400 Bad Request。

解决方案:重启 Charles。

问题 9:Android 手机下载证书文件时提示下载失败

打开 PC 端浏览器在地址栏输入 chls.pro/ssl,等下载完后再手动将文件拷贝到手机。

可能你的 Charles 默认不会代理 PC 端网络请求,需要点击以下菜单勾选,等用完后你可以再点击该项取消勾选。

​​​​​​​ 

五、参考文献

  1. Charles抓包https
  2. Android7.0及以上charles抓包提示证书无效的解决方法

http://chatgpt.dhexx.cn/article/w7Q3FSEr.shtml

相关文章

Charles抓https配置

环境:window10、charles4.6.1、ios14.4 1、第一步&#xff1a;pc安装证书 注意&#xff1a;证书存储的位置要选择‘受信任的根证书颁发机构’ 2、第二步&#xff1a;手机浏览器打开chls.pro/ssl下载安装证书 注意&#xff1a;下载安装完证书后&#xff0c;还需要如下设置 3、…

Tomcat配置Https

前言&#xff1a; 对于tomcat配置https还是挺简单的&#xff0c;首先你需要一个网站证书&#xff08;里面包含了公钥和私钥&#xff09;&#xff0c;这个证书相当于钥匙&#xff0c;但是https证书是需要花钱买的&#xff0c;我们在练习模拟不需要花钱买&#xff0c;可以使用 j…

Tomcat详解(七)——Tomcat使用https配置实战

今天继续给大家介绍Linux运维相关知识&#xff0c;本文主要内容是Tomcat使用https配置实战。 一、tomcat证书配置 首先&#xff0c;要实现https&#xff0c;就必须先具有tomcat证书。我们在安装tomcat的时候&#xff0c;肯定都先安装了JAVA&#xff0c;而JAVA中有自带的证书生…

宝塔配置https

1. 2.左侧选中ssl&#xff0c;右上选中lets’encrypt 然后申请&#xff0c;结果如图 3.放行443 端口&#xff0c;我的是阿里云&#xff0c;其他云也是一样&#xff0c;要在安全组中出方向&#xff0c;添加开放443 4.宝塔中的设置&#xff0c;也要放行443端口的访问 5.然后用…

tomcat的https配置(亲测有效)

tomcat的https配置 1、下载证书2、配置证书1.上传文件到服务器2、编辑conf/server.xml文件 3、配置http自动跳转到https4、最后重启tomcat服务器5、测试 1、下载证书 申请域名并通过审核后就可以下载电子证书 点击选择我的证书 我这里选择免费证书 然后按照提示下载 tomcat 的…

nginx-http重定向到https配置

第一步打开服务器找到nginx目录文件&#xff0c;找到nginx.conf文件进行配置 我们只需要找到http所在的那个服务加入一行代码 return 301 https://www.abc.com$request_uri; 就可以将http协议改成https http{include mime.types;server{charset utf-8;listen 443 s…

Spring Boot 的HTTPS 配置

HTTPS 配置 由于HTTPS具有良好的安全性&#xff0c;在开发中得到了越来越广泛的应用&#xff0c;像微信公众号、小程序等的开发都要使用HTTPS来完成。对于个人开发者而言&#xff0c;一个HTTPS 证书的价格还是有点贵&#xff0c;国内有一些云服务器厂商提供免费的HTTPS证书&am…

https协议配置

前言&#xff1a;https协议配置&#xff0c;一般用于针对政府部门的终端有网络防火墙、网络过滤器等&#xff0c;使系统中的一些请求被拦截&#xff08;劫持&#xff09;&#xff0c;原因一般为在请求头中有存在敏感信息&#xff0c;被网络过滤的监听器发现即拦截&#xff0c;可…

https配置

1.https定义: HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。它是一个URI scheme(抽象标识符体系),句法类同http:体…

配置HTTPS详细教程(内网)

前言 HTTPS &#xff08;全称&#xff1a;Hyper Text Transfer Protocol over SecureSocket Layer&#xff09;&#xff0c;是以安全为目标的 HTTP 通道&#xff0c;在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性 。HTTPS 在HTTP 的基础下加入SSL&#xff0c;H…

Hadamard和Rademacher

Hadamard基向量 H i j 1 H_{ij} \pm 1 Hij​1, H n T H n H n H n T n I n H_n^T H_n H_n H_n^T n I_n HnT​Hn​Hn​HnT​nIn​. 最简单的Hadamard矩阵的构造&#xff1a;Sylvester’s Construction。 Rademacher基信号 r k ( t ) s i g n sin ⁡ 2 k π t r_k(t) \…

Linux驱动之DMA框架(一):DMA框架的基本轮廓

DMA简介 DMA(Direct Memory Access,直接存储区访问)&#xff0c;用于在外设与存储器之间以及存储器与存储器之间提供高速数据传输。可以在无需任何 CPU 操作的情况下通过 DMA 快速移动数据&#xff0c;这样节省的 CPU 资源可供其它操作使用。现代的处理器或者是微控制器都内嵌…

DMA概述

目录 传送原理工作方式 DMA即直接存储器存取&#xff08;Direct Memory Access).用DMA传输数据时&#xff0c;在高速I/O设备与存储器之间直接开辟数据传输通道&#xff0c;此时CPU不再直接参与数据交换&#xff0c;而是通过DMA控制器来管理。 DMA数据传输示意如下&#xff1a; …

10、Random

利用Random类来产生5个20~ 50之间的随机整数。 提示: Random.nextInt(方法的作用是生成一个随机的int值 &#xff0c;该值介于[0,n)的区间&#xff0c;也就是0到n之间的随机int值&#xff0c;包含0而不包含n。 方法1&#xff1a;int nextInt(int n) import java. util. Rand…

让 RadAsm + masm32 环境支持 Irvine32.lib

学习《汇编语言&#xff1a;基于X86处理器》这本书&#xff08;或者该书更早版本&#xff09;的朋友都知道&#xff0c;Irvine32.lib 是该书作者 Kip Irvine 为了汇编初学者而自行设计的一个链接库&#xff0c;它提供了在控制台下简单的输入输出接口。但作者在该书中使用的学习…

RA-Depth

一、论文贡献 1、提出了一种任意尺度的数据增强方法&#xff0c;以促进模型从具有不同尺度的图像中学习深度尺度。 2、开发了一种双高分辨率网络&#xff0c;具有多尺度特征融合&#xff0c;使用新的跨尺度深度一致性损失训练。 二、相关工作 三、方法 3.1参照monodepth2 …

DMA简介

为什么要有 DMA 技术? dma主要是用于读写数据用的 在没有 DMA 技术前&#xff0c;I/O 的过程是这样的&#xff1a; CPU 发出对应的指令给磁盘控制器&#xff0c;然后返回&#xff1b;磁盘控制器收到指令后&#xff0c;于是就开始准备数据&#xff0c;会把数据放入到磁盘控制…

利用RadASM 写汇编程序

本文介绍利用RedASM写一个messageBox “hello world”. RadAsm 是我用过最爽的一个汇编Ide了&#xff0c; 代码高亮&#xff0c;智能提示…… RadASM支持多种不同的汇编编译器&#xff0c;这里我们选择MASM.既然是IDE了&#xff0c;创建工程就很简单了, 文件->Win32 App(no …

srand和rand详细讲解

srand 使用srand引用头文件#include<stdlib.h> 在rand调用之前设置srand&#xff0c;若不设置当rand调用时随机数种子默认为1&#xff0c;随机数种子一样则每次打印出来的值也是一样的。 设置srand srand( (unsigned int )time(NULL) ) 如上所示&#xff0c;我们给一个持…

RadASM with Masm32

1.下载RadASM 从http://www.oby.ro/rad_asm/ 处下载 或http://www.assembly.com.br/ //这个是官网 1.RadASM 2.2.1.6 (09-April-2009) 2.RadASM Assembly programming (07-08-2008) 第一个是编译器 第二个是官网自带的编译配置辅助文件 2.下载MASM 从…