本文背景

公司新项目要求抓取目前市面上一些热门App的数据,经过研究发现很多App的网络请求都使用https进行数据传输,这样问题就来了,http使用明文传输所有请求都能拦截到,而https请求无法拦截。
所以这里我们要使用Charles来抓取https,但是笔者看了网上很多使用iOS设备进行抓取https的文章,经测试iOS8/10/11均无法进行正常抓取,即使信任证书也不行。
经过笔者的不断尝试,终于在Android5.0上成功抓取了https。研究后发现,在Android7.0以下可以正常使用Charles抓取。Android7.0以上应该是默认屏蔽了此种方法。

Charles安装

Charles配置

配置电脑端的根证书

  1. 打开Charles,我这里使用的是v4.2.5版本:

  2. 安装根证书

  3. Mac需要设置信任证书
    1. 安装后会弹出钥匙串访问界面,如图:

    2. 双击证书,弹出证书详细界面,点击『信任』选项,然后将所有设置为始终信任,如图:

在手机端配置根证书

  1. 在电脑端选择安装移动端的证书:

  2. 选择后会显示IP与端口号,用于手机设置http代理:

  3. 手机的网络上设置成电脑的http代理:
    此时必须保证手机和电脑在同一网络,并且手机可以访问电脑的ip与端口

  4. 设置完成后访问网络时,服务端会弹出提示,点击Allow(同意连接):

  5. 手机浏览器(笔者使用Chrome)访问chls.pro/ssl,下载证书并安装(证书名任意):

配置电脑端的抓取规则

  1. 进入Charles的SSL代理设置:

2.勾上启动SSL代理,并添加一个抓取规则,比如这里加上一个抓取所有https(443端口)的请求:

3.此时手机上打开https请求的应用,应该就可以正常看到https请求的数据了:如图:

常见问题

1. 配置好后无法打开APP

在我们抓取时碰到个别APP在配置代理后无法打开,这个主要是因为该APP做了防止抓取处理,比如校验https的证书是否合法等,这种解决方法可以通过反编译APP,查看源码解决,难度较大。

2. 抓取到的内容为乱码

有的APP为了防止抓取,在返回的内容上做了层加密,所以从Charles上看到的内容是乱码。这种情况下也只能反编译APP,研究其加密解密算法进行解密。

使用Charles对Android App的https请求进行抓包的更多相关文章

  1. Fiddler抓取https请求 & Fiddler抓包工具常用功能详解

    Fiddler抓取https请求 & Fiddler抓包工具常用功能详解   先来看一个小故事: 小T在测试APP时,打开某个页面展示异常,于是就跑到客户端开发小A那里说:“你这个页面做的有问 ...

  2. 使用Charles对Https请求进行抓包

    昨天对某个APP做分析的时候发现其请求是Https的,抓包工具不能正常的显示请求的内容及返回的情况.通过搜索发现Charles是支持针对Https抓包的.具体的操作如下: 1.电脑端安装SSL证书 2 ...

  3. 支持https请求以及https请求的抓包

    iOS9推出的时候,苹果希望大家使用https协议,来提高数据传输之间的安全性.下面我就从最简单的代码介绍,如何在工程中设置,来支持https的请求. 一.证书准备篇 1.证书转换 在服务器人员,给你 ...

  4. Window下使用Charles对手机的Https请求进行抓包

    https://blog.csdn.net/zhaoerduo/article/details/52128607

  5. 使用Charles对iPhone进行Http(s)请求拦截(抓包)

    首先准备工具 1> Charles (下载对应操作系统的安装包进行安装,本文使用 macOS 进行演示) 2> iPhone (本文使用SE,系统版本:iOS 10) 开始 首先,对Cha ...

  6. Fiddler无法抓取某些APP的HTTPS请求,无解!!!

    遇到有些APP的HTTPS请求无法抓取!错误提示: !SecureClientPipeDirect failed: System.Security.Authentication.Authenticat ...

  7. 使用Charles抓取APP之HTTPS请求

    Charles是一款非常好用的抓包工具,通常使用它来进行APP开发抓包调试,尤其是HTTPS请求. 一.安装Charles 去官网(https://www.charlesproxy.com/)下载软件 ...

  8. charles 抓取app端 https 请求

    测试需要抓取app的https请求链接,百度了一下教程,能设置的都设置成功了,但就是抓取不成功,显示如下图 无奈之下还是用谷歌搜索了下(网速极慢),但是庆幸的找到了问题的答案,原因还是手机设置的问 打 ...

  9. android http 和https请求

    private static final int CONNECTION_TIMEOUT = 10000; public static String doHttpGet(String serverURL ...

随机推荐

  1. 利用PHP脚本辅助MySQL数据库管理5-检查异常数据

    <?php $dbi = new DbMysql; $dbi->dbh = 'mysql://root:mysql@127.0.0.1/coffeetest'; $map = array( ...

  2. UDDI

    什么是 UDDI? UDDI 是一个独立于平台的框架,用于通过使用 Internet 来描述服务,发现企业,并对企业服务进行集成. UDDI 指的是通用描述.发现与集成服务 UDDI 是一种用于存储有 ...

  3. vue.js实现购物车功能

    购物车是电商必备的功能,可以让用户一次性购买多个商品,常见的购物车实现方式有如下几种: 1. 用户更新购物车里的商品后,页面自动刷新. 2. 使用局部刷新功能,服务器端返回整个购物车的页面html 3 ...

  4. MySQL基准测试--innodb_buffer_pool_instances

    http://blog.chinaunix.net/uid-26896862-id-3345441.html 目的 根据现有硬件环境下,测试MySQL单实例下,在数据量小于innodb_buffer_ ...

  5. MySQL正则表达式 REGEXP详解

    在开始这个话题之前我们首先来做一个小实验,比较一下REGEXP和Like他们两个哪个效率高,如果效率太低,我们就没有必要做过多的研究了,实验的代码如下:<?phpRequire("co ...

  6. 1.2OpenCV如何扫描图像,利用查找表和计时

    查找表 颜色缩减法:如果矩阵元素存储的是单通道像素,使用C或C++的无符号字符类型,那么像素可有256个不同值. 但若是三通道图像,这种存储格式的颜色数就太多了(确切地说,有一千六百多万种).用如此之 ...

  7. 关于redis,学会这9点就够了

    一.redis是什么 redis是一种支持Key-Value等多种数据结构的存储系统.可用于缓存.事件发布或订阅.高速队列等场景.该数据库使用ANSI C语言编写,支持网络,提供字符串.哈希.列表.队 ...

  8. JAVA遇上HTML-----JSP 篇基本概念

    Java Web简介 1.什么是WEB应用程序: Web应用程序是一种可以通过Web访问的应用程序.Web应用程序的一个最大好处是用户很容易访问应用程序.用户只需要有浏览器即可,不需要再安装其他软件. ...

  9. Le Chapitre IX

    Je crois qu'il profita, pour son évasion[evazjɔ̃]逃跑, d'une migration d'oiseaux sauvages[sovaʒ]未驯化的. ...

  10. bootstrap-glyph-customization

    http://www.runoob.com/try/demo_source/bootstrap-glyph-customization.htm http://fontawesome.io/icons/