背景:

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

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

操作原理

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

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

以下是详细的操作步骤:

分步指南

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

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

第二步:配置SSL代理:

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

然后在弹出的对话框中点击add,添加需要监视的域名。域名支持 *号通配符,如:抓取所有的https请求,可以填写 *:443
如果想要抓取qq.com的域名,可以填写 *.qq.com

第三步 为手机设置代理

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

第四步 安装根证书

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

以IOS为例,在Safri上打开Charles的根证书下载网址: chls.pro/ssl 。
顺利的话会出现这样的画面,继续点安装,一路点确定。然后去设置里的描述文件管理如果看到有绿色的勾勾就说明安装成功了。

接下来,在设置->通用->关于本机->证书信任设置 (这一步很重要) 刚刚安装的证书的开关打开信任就可以抓取加密包了。

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

电脑端的根证书安装

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

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

几点说明:

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

作者:一只怪味鱼
链接:https://www.jianshu.com/p/7a88617ce80b
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

使用Charles进行HTTPS抓包相关推荐

  1. Charles的https抓包及使用

    一.背景 1.Charles的https抓包功能只能在版本3.11以上可用. 2.Charles的下载地址[os版本和win版本都有列出]:Download a Free Trial of Charl ...

  2. 小米6使用Charles进行HTTPS抓包

    在Mac上使用Charles进行手机的HTTPS抓包 1. 小米篇 1.1 环境 MacOS 10.13.3 Charles 4.0.2 小米6 Android7.1.1 MIUI9.2 1.2 在M ...

  3. 抓包工具charles的https抓包配置

    环境 windows 10 问题 开启Charles时,通过Chrome浏览器访问https地址,提示隐私设置错误,出现"您的连接不是私密连接". 报错 原因 未将将Charles ...

  4. Mac下用Charles实现Android http和https抓包

    背景 工作以后,团队需要,抓包工具用的特别多.Charles功能丰富,能满足需要抓包的大多数场景. 之所以专门讲一下Android抓包,一个原因是笔者从事Android开发,经常用:另外,就是网上关于 ...

  5. Charles 4.2.1 HTTPS抓包

    Charles 4.2.1 HTTPS抓包 Charles iPhone抓包 Mac必须与iPhone连接同一WiFi Proxy -> SSL Proxying Settings ->  ...

  6. https抓包_浅谈HTTPS抓包原理,为什么Charles能够抓取HTTPS报文?

    Charles作用其实相当于拦截器,当客户端和服务器通信时,Charles其实会先接收到服务器的证书,但是它会自己生成一个证书发送给客户端(不管是Web端或App应用),也就是说它不仅仅是拦截,甚至还 ...

  7. Https/Tcp抓包工具Charles、fiddler,ping (网络诊断工具),Android平台HTTPS抓包解决方案及问题分析HttpCanary

    市面上已经有一些弱网络模拟工具,比如微软的Network Emulator for Windows Toolkit(NEWT),Facebook的Augmented Traffic Control(A ...

  8. fiddler教程:抓包带锁的怎么办?HTTPS抓包介绍。

    点击上方↑↑↑蓝字[协议分析与还原]关注我们 " 介绍Fiddler的HTTPS抓包功能." 这里首先回答下标题中的疑问,fiddler抓包带锁的原因是HTTPS流量抓包功能开启, ...

  9. IOS https抓包及10.3.3版本证书不生效问题解决

    Charles安装 HTTP抓包 HTTPS抓包 1. Charles安装 官网下载安装Charles: https://www.charlesproxy.com/download/ 2. HTTP抓 ...

  10. mac下HTTP与HTTPS抓包

    mac下HTTP与HTTPS抓包 HTTP抓包流程 1. 在mac 电脑 上下载代理软件,charlse或者fiddler均可以: 下载方法:http://www.charlesproxy.com/可 ...

最新文章

  1. redux middleware 源码分析
  2. python 基础知识点整理 和详细应用
  3. 它来了!无人车穿梭在深圳的“宇宙最强街道”
  4. UOJ#449. 【集训队作业2018】喂鸽子
  5. python爬虫---requests库的用法
  6. 语言的顺序表的合拼_2020语文中考专题五:语言运用和综合性学习。掌握基础题五种题型...
  7. java.lang.ClassNotFoundException: com.fasterxml.jackson.databind.exc.InvalidDefinitionException
  8. 【Java单例模式】Java单例模式之懒汉模式线程安全
  9. 通过高速计算机网络和多媒体,计算机网络作业及答案.doc
  10. LeetCode 1000. 合并石头的最低成本(区间DP)
  11. 第15篇: Flowable-BPMN操作流程之排他网关
  12. Python每日小知识(2):字符串和编码
  13. z-index属性简介
  14. JavaScript从入门到放弃-JavaScript历史介绍
  15. 乐视跳过服务器验证,pandwonload不能登录?试试跳过启动验证
  16. JavaScript中String的replace函数
  17. python中pygame学习——碰碰球(简单版)
  18. 关于智能运维(AIOps)的学与思
  19. 手把手教你如何用python制作自动翻译程序
  20. 02325计算机系统结构201810,2018年10月自考02325计算机系统结构真题及答案

热门文章

  1. 厦门IT公司名单及联系方式
  2. 基于ArcGIS 的GPS数据地图匹配
  3. 计算机财务模型管理实验内容,财务分析模型实验报告
  4. 一款可以由电脑投屏到手机的软件deskreen[粉丝少于1000的电脑直播]
  5. PCIe简介及引脚定义
  6. C#批量转换Word文档为Pdf
  7. wso2 mysql,WSO2 DAS +具有MySQL的集群APIM
  8. PSCC2014前端切图小方法(不断补充)
  9. 认识直动、先导式电磁阀
  10. laydate定位修改