美文网首页学习资料ios 关于Charles
使用Charles进行HTTPS抓包

使用Charles进行HTTPS抓包

作者: 东方胖 | 来源:发表于2017-03-13 14:28 被阅读55516次

背景:

在进行App测试或定位线上问题时,经常会遇到抓取HTTPS数据包的需求。一般在windows上会使用fiddler,Mac上使用Charles。对于https请求,抓到的数据因为经过了加密,只能看到乱码。

本文介绍如何使用Charles来抓取https网络报文。操作步骤已在MAC + iphone5s上亲测。

操作原理

关键的操作思想:
1. 构造一个中间人代理,它有能力完成TLS/SSL握手
2. 弄到一个根证书,并用它生成签名认证的代理服务器证书

<p>  Charles就是一个理想的中间人,它支持SSL握手,可以自动根据根证书生成一个签名的服务器证书,并且它的官网为我们提供了一个根证书。
  我们要做的就是在客户端安装好这个根证书,然后让我们的操作系统信任它。对App来说,需要设法在IOS或Android上装上这个官网提供的根证书。
  完成上述步骤后,App再指定Charles为它的代理服务器,这时,App请求的服务器证书就是Charles自动生成的代理服务器证书。如果Charles的根证书已被信任,这个自动生成的代理服务器证书是有效的,使用它App和Charles的TLS握手可以顺利完成。</p>

以下是详细的操作步骤:

分步指南

第一步:配置HTTP代理,这步与抓取HTTP请求是一样的:

图1

选择在8888端口上监听,然后确定。够选了SOCKS proxy,还能截获到浏览器的http访问请求。

图2

第二步:配置SSL代理:

首先在charles的 Proxy选项选择SSL Proxy Settings

图3

点add添加需要监视的域名,支持 *号通配符,端口一般都是443:

第三步 为手机设置代理

在手机无线中配置手动代理,输入安装Charles的电脑的网络地址,端口填8888。

第四步 安装根证书

在手机上安装Charles的根证书:

以IOS为例,在Safri上打开Charles的根证书下载网址: chls.pro/ssl 。
顺利的话会出现这样的画面,继续点安装,然后去设置里的描述文件管理中信任它就行了。

图4

如果不能下载,检查手机是否正确设置了代理,Charles是否已经打开并配置正确。

电脑端的根证书安装

以MAC为例,直接在Charles的Help菜单中安装;安装完成后去系统的钥匙串访问中信任它。

图5

完成后:试试看抓一下QQ空间的数据,将..qq.com 和*.qq.com 添加到SSL Proxy的Setting中后,配置好手机代理,打开手机QQ空间App
可以看到抓取到的报文如下:

图6

几点说明:

  1. 本文的操作指南是在MAC+iphone5s+Charles上实践的。文中开头已经讲述了HTTPS使用中间人代理抓包的简单原理和核心操作思想,其他环境下可以类比。
  2. 有些人认为https可以完美防止中间人攻击,无法抓到https的明文包...... 其实是不对的,TLS的设计只能说是从技术上最大限度地保护网络报文的安全,它无法防止用户自己作死。
  3. 网络安全和用户的安全意识是强相关的,技术的防范能力总是有限的。在实际生活中养成良好的上网习惯,千万不能随意信任不明来源的证书,轻视浏览器、操作系统或其他App给我们发出的安全警告。

相关文章

  • 使用Charles进行HTTPS抓包

    第一步:配置http抓包 1、修改Proxy Settings 如下图默认端口为8888,看个人需要是否要修改为其...

  • 使用Charles进行HTTPS抓包

    具体查看:使用Charles进行HTTPS抓包Charles辅助调试接口 测试iOS APP 模拟各种网络环境Ch...

  • 使用Charles进行HTTPS抓包

    ● 其它使用跟 http 一致,只需要修改一些配置第一步: 第二步: 第三步: 勾选Enable SSL Pro...

  • 使用Charles进行https抓包

    背景 随着apple对https协议的强推(貌似2017年开始ios应用上架就得全部用https协议了),作为iO...

  • 使用Charles进行HTTPS抓包

    背景: 在进行App测试或定位线上问题时,经常会遇到抓取HTTPS数据包的需求。一般在windows上会使用fid...

  • 其他

    使用Charles进行HTTPS抓包1.配置2.Charles抓取https时一直显示unknown

  • 备忘

    一、使用Charles进行HTTPS抓包https://www.jianshu.com/p/7a88617ce80...

  • wireshark工具使用

    iOS一般使用charles进行http、https的抓包,如果要抓取tcp包,可以使用wireshark。使用方...

  • Android使用Charles进行HTTPS抓包

    一般情况下使用Charles比较方便,只需要为手机设置代理,然后打开Charles,操作后即可获取抓包数据。但是需...

  • 使用Charles进行HTTPS抓包(AppleTV)

    一、先下载必要软件: Appstore下载Apple Configurator 2 下载破解版Charles (下...

网友评论

  • 哄哄的薇薇:刚开始一直抓取失败,后来发现这步没有做好,“将..qq.com 和*.qq.com 添加到SSL Proxy的Setting中”,最后通过点击对应请求的右键选择enable SSL proxy解决了。
  • 明志:需要到通用、关于我们,证书管理里面信任证书才可以抓包的。
    凉风起君子意如何:已信任 抓取还是失败
    东方胖:@秋水時至 证书位置位于通用栏的下方 描述文件 中
    东方胖:@明志 文中已写要去设置中信任描述文件。但步骤没有描述清楚。此处有困难者可以参照此楼。谢谢贡献。
  • 黛沁馨1990:你好,我这边都按照对应https抓包配置了,手机安装了证书,也对应在charles上配置了域名,但还是无法正确解析内容,请问这个还有什么情况么?
    黛沁馨1990:@秋水時至 就是手机证书信任没开启哈,以及解决,谢谢
    凉风起君子意如何:@秋水時至 我这边也是,手机安装证书且信任,imac钥匙串也安装并信任,charles sslProxying不加入要抓取域名 则可以访问app(但抓取数据还是乱码),若加入则app访问失败
    东方胖:@黛沁馨1990 手机上信任证书了吗?

本文标题:使用Charles进行HTTPS抓包

本文链接:https://www.haomeiwen.com/subject/ugvfnttx.html