Charles https抓包 — Android

来源:互联网 发布:项目管理平台软件 编辑:程序博客网 时间:2024/05/17 23:23

写在前面

开发时,面对各种接口数据,绝大多数时间都会用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)当安装后,可能你看不到在哪里,在右上角的搜索中 输入 cha 则会显示出来,你看到上面是 此根证书不被信任


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


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

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

亲测直接在模拟器浏览器打开网址可以安装成功证书。通过网址( http://www.charlesproxy.com/assets/legacy-ssl/charles.crt)下载,手动安装会报“无法安装证书”错误


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


(三)最后,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了~~


 


原创粉丝点击