一、说明

在做客户端开发的时候大家一定经常用到抓包工具去抓接口排查调试,非常的简捷方便。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抓包提示证书无效的解决方法

Charles 抓包 Https 配置指南相关推荐

  1. charles 抓包https

    概述 Charles是一款代理服务器,通过将自己设置成系统(电脑或者浏览器)的网络访问代理服务器,然后截取请求和请求结果进行分析抓包.该软件是用Java写的,能够在Windows,Mac,Linux上 ...

  2. Charles抓包https

    Charles抓包https 灰灰是只小贱狗 2018.05.08 10:46 字数 762 阅读 7800评论 3喜欢 3 抓取HTTPS请求包,对数据进行排查检验 1.安装Charles 2.电脑 ...

  3. charles抓包https证书下载

    charles抓包https 概述 在charle和手机端都安装证书,其他和http请求一样 原理: 看过来 1.charles证书下载 下一步 下一步* 打开电脑端设置 ![在这里插入图片描述](h ...

  4. Charles 抓包工具教程(二) Charles 抓包HTTPS请求

    本文为在霍格沃兹测试开发学社中学习到的一些技术,写出来分享给大家,希望有志同道合的小伙伴可以一起交流技术,一起进步~ Charles 抓包HTTPS请求 一.MacOS 安装 Chares 证书 二. ...

  5. charles抓包工具使用指南

    前言 移动APP抓包 PC端抓包 查看模式 其他功能 问题汇总 1. 前言: Charles是一款抓包修改工具,相比起burp,charles具有界面简单直观,易于上手,数据请求控制容易,修改简单,抓 ...

  6. charles抓包https设置

    写在前面 https抓包的实现 (一)首先,电脑得装个证书 (二)然后,移动设备上安装证书 (三)最后,Charles添加SSL Proxying 写在前面 开发时,面对各种接口数据,绝大多数时间都会 ...

  7. Charles抓包https(测试app的双向认证)

    HTTPS抓包 HTTPS的抓包需要在HTTP抓包基础上再进行设置 设置前抓包HTTPS是这样的 设置后抓包HTTPS长这样 以下为在HTTP抓包基础上进行HTTP抓包的进一步设置步骤: (1)安装S ...

  8. 最简单的Charles抓包https教程

    这里介绍charles抓包教程,亲测可行 一.背景 对于我司app都是使用的https网络请求,但开发中需要快速定位问题,因而对https请求抓包有非常高的依赖性.如果不对https做别的处理,抓包就 ...

  9. Fiddler 抓包https配置 提示creation of the root certificate was not successful 证书安装不成功

    在使用Fiddler抓包时,我们有时需要抓https协议的包,这种需要配置一下 开启监控https才可以 首先 找到Tools-->Options 在弹出的菜单中 选择https项 勾选捕捉ht ...

最新文章

  1. flutter listview 滚动到底部_Flutter常用Widget详解(三)
  2. 数据流和十六进制转换
  3. 俄罗斯最大搜索引擎Yandex开源了一款梯度提升机器学习库CatBoost
  4. mysql二进制安装的优缺点_MYSQL的二进制安装
  5. 表单的默认提交方式_对于PHP表单提交有哪集中方式讲解
  6. [android] 请求码和结果码的作用
  7. 警告:Vista存高风险 不宜过早安装
  8. 解决 IDEA导入Eclipse项目出现的中文注释乱码问题
  9. Jaspersoft 与springboot结合生成一维码,二维码
  10. 如何在java中把两个PDF拼接到一个
  11. R语言Γ(gamma)分布
  12. VTK:线宽用法实战
  13. 搜狗浏览器显示无法解析服务器的DNS地址,搜狗浏览器显示无法解析DNS地址的解决方法...
  14. Python画四张子图-导入数据
  15. Python基础——PyCharm版本——第八章、文件I/O(核心2——JSON序列化与反序列化——超重点)
  16. 华硕固件默认ip,不能进入路由的管理后台了?千万别慌张
  17. 备赛全国阳光健身健美大赛训练记录(粗略)
  18. Re:从零开始的程序猿生活
  19. 国产Linux系统再添一员猛将,颜值完全不输苹果!
  20. MySQL:使用SQL语句删除所有索引

热门文章

  1. 工业互联网对5G UPF的要求
  2. a标签点击下载文件通用方法,pdf文件预览不能下载解决方法
  3. [问题解决] NameError: name ‘get_ipython‘ is not defined
  4. 半小时漫画预防常见病
  5. php加速引擎 zend详解
  6. android 文件分类管理,分类文件管理app下载-分类文件管理安卓最新版下载-丫丫安卓网...
  7. jquery ajax 请求时间
  8. 会Python的淘宝商家可以横扫一切竞争对手,这就是会技术的魅力!(上)
  9. IPsec ×××路由器配置:ISAKMP策略
  10. SqlServer DATEDIFF、datediff函数的使用实例