使用Charles对Android App的https请求进行抓包
本文背景
公司新项目要求抓取目前市面上一些热门App的数据,经过研究发现很多App的网络请求都使用https进行数据传输,这样问题就来了,http使用明文传输所有请求都能拦截到,而https请求无法拦截。
所以这里我们要使用Charles来抓取https,但是笔者看了网上很多使用iOS设备进行抓取https的文章,经测试iOS8/10/11均无法进行正常抓取,即使信任证书也不行。
经过笔者的不断尝试,终于在Android5.0上成功抓取了https。研究后发现,在Android7.0以下可以正常使用Charles抓取。Android7.0以上应该是默认屏蔽了此种方法。
Charles安装
Charles配置
配置电脑端的根证书
打开Charles,我这里使用的是v4.2.5版本:
安装根证书
-
Mac需要设置信任证书
安装后会弹出钥匙串访问界面,如图:
双击证书,弹出证书详细界面,点击『信任』选项,然后将所有设置为始终信任,如图:
在手机端配置根证书
在电脑端选择安装移动端的证书:
选择后会显示IP与端口号,用于手机设置http代理:
手机的网络上设置成电脑的http代理:
此时必须保证手机和电脑在同一网络,并且手机可以访问电脑的ip与端口设置完成后访问网络时,服务端会弹出提示,点击Allow(同意连接):
手机浏览器(笔者使用Chrome)访问chls.pro/ssl,下载证书并安装(证书名任意):
配置电脑端的抓取规则
- 进入Charles的SSL代理设置:
2.勾上启动SSL代理,并添加一个抓取规则,比如这里加上一个抓取所有https(443端口)的请求:
3.此时手机上打开https请求的应用,应该就可以正常看到https请求的数据了:如图:
常见问题
1. 配置好后无法打开APP
在我们抓取时碰到个别APP在配置代理后无法打开,这个主要是因为该APP做了防止抓取处理,比如校验https的证书是否合法等,这种解决方法可以通过反编译APP,查看源码解决,难度较大。
2. 抓取到的内容为乱码
有的APP为了防止抓取,在返回的内容上做了层加密,所以从Charles上看到的内容是乱码。这种情况下也只能反编译APP,研究其加密解密算法进行解密。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Http/Https抓包工具Charles最新版破解教程(Windows|Mac)
Charles介绍 Charles是一款强大的http/https抓包工具,可以抓取各种数据请求,查看请求的头信息,请求信息,返回信息等。本文主要介绍Charles的破解过程,包括Windows平台和Mac平台。 破解文件下载 点击这里下载 Windows平台 到官网下载最新版,然后安装到本机。官网下载地址 下载上面的破解文件。 打开Charles的安装文件夹进入到lib文件夹下面,将破解文件复制过来替换掉原文件。 Mac平台 到官网下载最新版,然后安装到本机。官网下载地址 下载上面的破解文件。 打开Finder,在应用程序中选择Charles并右键选择显示包内容: 显示包内容后在Content/Java目录下将破解文件复制过来替换掉原文件即可: 总结 至此,Charles破解完毕,在进行抓包的过程中,抓取http没有什么问题,但是抓取Https就不那么容易了,抓取Https可以参考这篇文章: 使用Charles对Android App的https请求进行抓包
- 下一篇
RecyclerView + SnapHelper实现炫酷ViewPager效果
目录 什么是SnapHelper SnapHelper是Google 在 Android 24.2.0 的support 包中添加的对RecyclerView的拓展,结合RecyclerView使用,能很方便的做出一些炫酷的效果。 SnapHelper的使用方法 SnapHelper是一个抽象类 Google 内置了两个默认实现类,LinearSnapHelper和PagerSnapHelper。 LinearSnapHelper:使当前Item居中显示,常用场景是横向的RecyclerView, 类似ViewPager效果,但是又可以快速滑动多个条目。 LinearLayoutManager manager = new LinearLayoutManager(getContext()); manager.setOrientation(LinearLayoutManager.VERTICAL); mRecyclerView.setLayoutManager(manager); LinearSnapHelper snapHelper = new LinearSnapHelper(); s...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS6,CentOS7官方镜像安装Oracle11G
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- MySQL8.0.19开启GTID主从同步CentOS8
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS7设置SWAP分区,小内存服务器的救世主
- CentOS6,7,8上安装Nginx,支持https2.0的开启