背景

工作以后,团队需要,抓包工具用的特别多。Charles功能丰富,能满足需要抓包的大多数场景。
之所以专门讲一下Android抓包,一个原因是笔者从事Android开发,经常用;另外,就是网上关于Charles实现Android抓包的配置说明鱼龙混杂,不仅浪费时间还让人抓狂。

工具

(1)最新的charles工具,下载地址:https://www.charlesproxy.com/download/

(2)charles本身收费,如果不想掏钱,必须破解。破解的步骤只需要一步,参见http://charles.iiilab.com

Http

(1)配置代理端口号;
Proxy -》 Proxy Settings -》 Port,port可以随便指定,我这里取的8888;


(2)配置代理的ip;
Android手机的网络代理一般在设置页面,点击当前连着的wifi,手动修改代理配置,然后将你的电脑ip和第一步中配置的端口号填写到手机上即可。如下图:

有了上面两步,理论上已经能够实现http的抓包。至于如何抓,以及断点、map、rewrite等功能不是本文的重点,网上一大筐,请自行搜索。

Https

这个真的是,让人很无语。
在看了网上一大堆似曾相识的说明之后,笔者按照那些配置,不是乱码,就是一直处于这样⬆️吊死的请求状态。还有各种证书指导安装说的模棱两可,让人摸不着头脑。

在经过了半天的折腾后,笔者将亲身实践的经历总结如下,力图用最简洁的步骤,帮你实现https抓包。
(1)在上面两步的基础上,你需要为charles添加SSL Proxiyng。具体的步骤是:Proxy -》 SSL Proxiyng Settings -》勾选“Enable SSL Proxying”,并点击下方的Add,你可以这样配置:



host是你要抓的域名或者ip(这里用通配符*,表示抓去所有的https请求),port为443。

(2)下载手机的SSL证书。这一步很关键,你需要点击help -》SSL Proxying-》Save Charles Root Certificate,然后选择目录,保存一个类似于这样的“charles-ssl-proxying-certificate.pem”文件(笔者的环境是mac下,windows有可能文件后缀不一样);

(3)给手机安装证书。这一步很坑,因为不同的手机可能会有不同的表现

  • 首先命令行切换到(2)的文件夹下,可用adb将(2)中的文件推入手机中,具体的命令参考:“adb push charles-ssl-proxying-certificate.pem sdcard/charles.pem”,表示将charles-ssl-proxying-certificate.pem推入sdcard中,并重命名为charles.pem,注意后缀一般必须是pem。
  • 打开手机的文件管理器,找到charles.pem,点击安装。如果安装成功,那么恭喜你,理论上,现在手机的https访问数据,已经能被charles获取。不过,如果你的手机出现了类似下图的说明,请继续执行下一步。
  • 打开手机设置 -》更多设置 -》系统安全 -》从存储设备安装 -》选择charles.pem,点击安装。如果安装成功,那么恭喜你,理论上已经能抓包https的数据了。

    如果你是小米的用户,而且出现了问你要“凭据存储的密码”的弹窗,请继续往下看。
  • 小米手机对sdcard文件的存取,做了安全限制。如果你没有设置屏幕锁,或者没有开启屏幕锁,操作sdcard文件时会出现上面的提示(具体可参见http://www.miui.com/thread-3244178-1-1.html)。这时,你需要设置一下屏幕锁,再重新安装一下就行了。

要补充的是,在小米机器上,如果经过上述操作,.pem还是无法正常安装,请尝试把文件重命名为.crt,再重复上述操作

到这里,已经完成charles对https抓包的全部配置。正常的情况,你的charles会显示https的数据,并且没有乱码。如果按照上面的步骤,仍然无法抓https包,笔者建议你可以考虑重新装一个版本的charles了。

总而言之

(1)https抓包确实需要安装证书,不过电脑端可以不装,要抓包的手机必须装,而不是像许多博客指出的那样,电脑和手机都必须装证书;
(2)部分版本的破解可能导致charles出现异常,对的配置却仍然无法正常抓https包,可能受破解的影响,可以考虑重装软件了。
(3)https从头到尾,电脑只需要配置一下SSL Proxiyng Settings,手机只需要安装一个证书即可。并不需要乌七八糟的乱撞一通证书。


Mac下用Charles实现Android http和https抓包相关推荐

  1. Charles证书过期 iOS iPhone手机Charles证书过期 证书显示为红色https抓包显示unknown

    charles过期处理: 1.从网上找一个 注册码 记录下 名称和注册码信息 Registered Name: https://zhile.io License Key: 48891cf209c6d3 ...

  2. burpsuite小米手机抓包_使用burpsuite实现Android APP的HTTPS抓包

    0x00 序 在对app做安全测试时,通常会需要对app的网络通信进行抓包,但是面对app使用了https包时,由于手机没有burp的证书,因此可能会导致该次通信失败,所以下面的文章主要讲述如何通过b ...

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

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

  4. mac下HTTP与HTTPS抓包

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

  5. Android中利用手机抓包的方法,经典篇

    在移动逆向分析以及 App 开发的时候,总会需要对其网络行为进行监控测试,本文总结一些抓包思路,并对其使用方法进行实践 笔者认为在抓包界,Wireshark 应该算是综合排名第一的工具(其实 Wire ...

  6. 如何在 Android 手机上实现抓包?

    如何在 Android 手机上实现抓包? http://www.zhihu.com/question/20467503 我想知道某个应用究竟在数据提交到哪里,提交了什么. 网上的教程太复杂,不想麻烦. ...

  7. Charles的https抓包及使用

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

  8. 一招破解抓包工具Charles,并进行移动APP抓包分析

    一.简介 Charles是目前最强大最流行的http抓包调试工具,Mac.Unix.Windows各个平台都支持.特别是做APP开发,调试与服务端的通信,Charles是必备工具. 目前Charles ...

  9. 小米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 ...

最新文章

  1. mongodb数据库淘汰_MongoDB 等 NoSQL 与关系型数据库相比,有什么优缺点及适用场景?...
  2. RoundRobinAssignor(轮询分区)
  3. sqlserver 多表更新
  4. NUXT内存泄漏引发问题
  5. pytorch5:pytorch常用激活函数图像绘制
  6. 手机APP夏季促销UI设计PSD模板|糖果色彩,抓住眼球
  7. java数据实时更新_Java连载137更新数据和删除数据
  8. 转载:C#7.0新特性(VS2017可用)
  9. asp.net 页面跳转的方法
  10. 什么是医疗健康管理系统?
  11. 三类主流影音播放器对比
  12. 二分法求函数零点:(递归方法和非递归方法)
  13. 二项分布的特征函数及期望与方差 - 随机过程
  14. NVIDIA 460.79版显卡驱动发布:全力优化《赛博朋克2077》
  15. POJ2586-Y2K Accounting Bug
  16. 多可文档管理软件权限说明(4)——权限累加规则
  17. WPF 程序的编译过程
  18. 计算语言学之语法理论
  19. w3c关于Html的标准
  20. c语言做土壤湿度传感器程序,单片机土壤湿度传感器设计 程序编译错误

热门文章

  1. numpy中的ndarray与array的区别、不同
  2. phpspider框架的使用
  3. 2019我的Java面试跳槽经历
  4. MFC+Halcon 真正实现图像缩放、平移
  5. 将ACII码转为浮点数
  6. 分布式系统的CAP原理及其应用
  7. 使用数字陷波器滤除工频信号
  8. 【Linux】用户和用户组|将用户添加到root组中
  9. error: ‘uint8_t’,‘uint16_t’ ,‘uint32_t’ does not name a type
  10. 单例模式破坏单例模式