Charles https抓包 — Android

一、写在前面
二、Https抓包的实现
  (一)首先,电脑得装个证书
  (二)然后,移动设备上安装证书
       * 安装证书的疑难杂症
  (三)最后,Charles添加SSL Proxying


写在前面

开发时,面对各种接口数据,绝大多数时间都会用Charles抓包进行数据分析,但也总会有那么些情况让人抓狂:

  • Bugfix,线下环境(非https)数据少,满足不了bug出现的情况,无法一边抓包一边改bug
  • 线上环境(https)有接口数据,线下环境无接口数据的bug,这个时候抓包突然显得很苍白无力,Charles抓不了https包╯ ︵╰(‵□′╰

很自然地想要Charles能抓https包,于是去搜各种教程,结果发现依然抓狂:

  • 首先得电脑上装证书,ok,进入Charles-》Help-》SSL Proxying-》Install Charles Root Certificate,然而现实是残酷的 — ”无法找到证书“

  • 抓Android真机或者模拟器上的https包,还是得先给Android真机或模拟器装证书,照着教程折腾:
    (a) 下载Charles证书 下载地址: http://www.charlesproxy.com/assets/legacy-ssl/charles.crt
    (b) 安装Charles证书 将下载完成的charles.crt证书push到Android设备(adb push charles.crt /sdcard/),从手机存储卡中找到安装证书charles.crt点击安装,教程说安装上就可以抓包了,结果又掉泪(网上找了好多教程,还发现好多都是针对ios的)—— 无法安装该证书,因为无法读取证书文件

折腾了一两次发现无果,于是只有迁就着安于无法抓https包的现状了,但后来发现“抓狂的情况”出现越来越频繁了,不能安于现状了 (¬_¬)

Https抓包的实现

(一)首先,电脑得装个证书

(1)先去官网下载证书,不然会报“无法找到证书”错误(官网注明说该证书在v3.10上会失效,我安装能正常工作...)
官网地址:https://www.charlesproxy.com/documentation/additional/legacy-ssl-proxying/

(2)进入Charles-》Help-》SSL Proxying-》Install Charles Root Certificate ,会打开证书,安装进去

(3)当安装后,可能你看不到在哪里,在右上角的搜索中 输入 charles 则会显示出来,你看到上面是 此根证书不被信任

(4)在证书上右键 - 显示详情 ,展开信任 选择 始终信任,然后点击左上角的关闭,系统会弹出授权提示框,授权同意修改,回到列表,稍等,证书就刷新了

(二)然后,移动设备上安装证书

这里不以ios为例,以Android模拟器为例~~首先确保模拟器/手机将电脑的IP地址设置为代理,端口号为8888(具体教程点这里)。然后打开模拟器浏览器,在浏览器中输入http://charlesproxy.com/getssl,会弹出一个框,让输入证书名字,直接输入charle就ok啦,安装成功后会提示证书安装成功,并且成功抓到https的包。

安装证书的疑难杂症
(1)若遇到 在模拟器/手机的浏览器中输入http://charlesproxy.com/getssl不是弹一个框,而是出现了以下界面,可能是因为模拟器/手机没有将电脑的IP地址设置为代理(端口号为8888):**


(2)特殊情况 — 小米手机证书安装

  • 问题
    方式1:浏览器中输入http://charlesproxy.com/getssl后,会提示下载的证书提示非法路径
    方式2:Charles->help->SSL Proxying->Save...导出的pem证书放进手机根目录后,通过安全安装提示没有可安装证书
  • 解决方法
    步骤1:打开Charles的HELP->SSL Proxying -> Export Charles Root Certification and Private Key,随便输入什么密码,记住

步骤2:导出后,用微信或者其他传到安卓手机里,在WLAN设置,安装证书里打开这个文件,输入刚才的密码就搞定了(比如通过微信方式的路径为 WLAN->高级设置->安装证书->Tencent文件夹->MicroMsg文件夹->Download文件夹)

(三)最后,Charles添加SSL Proxying

(1)进入Proxy-》SSL Proxying Settings

(2)勾选“Enable SSL Proxying”,并点击下方的Add

(3)在弹出的“Edit Location”中,输入Host和Port都为“*”(看提示这样配置可以抓到所有https的包),然后进行添加

(4)同样,确保模拟器/手机将电脑的IP地址设置为代理,端口号为8888:
这下就可以愉快的抓https包,https拦截里不再是unknown了~~

附:神器传送门 - Android平台HTTPS抓包解决方案及问题分析

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在Mac上抓Android手机的Https包 Charles注册码 Registered Name:https:/...
    wIsper阅读 14,622评论 1 50
  • https抓包的实现(一)首先,电脑得装个证书(1)先去官网下载证书,不然会报“无法找到证书”错误(官网注明说该证...
    ZPengs阅读 2,853评论 0 3
  • 抓包分析数据在移动开发中十分重要,可以帮助我们更快的了解数据构成,提高开发效率。但是在苹果要求上线的App必须使用...
    梧雨北辰阅读 14,829评论 21 35
  • 你可以有与众不同的历史,那是对人好奇的,对自己,你从来都是小太阳——这句话是这一年内我的感悟,结合身边所发生的太多...
    雪芳斋阅读 785评论 0 6
  • 我也对你不会有任何怨言。 但我不会再靠近你了, 如果有天你有求于为, 我依旧会尽力而为之。 但是从今往后,我会把我...
    易昼颜阅读 154评论 0 0