Fiddler 抓取 Android 上的 HTTPS

   日期:2024-12-26    作者:dgjiushun 移动:http://ljhr2012.riyuangf.com/mobile/quote/48802.html

线上的产品出现BUG无法通过代码注入或者获取日志的方式定位问题,或者要抓取第三方应用程序的接口。这时候就需要用到抓包了,它通过一种网络层的方式来获取所有的网络请求。

Fiddler 抓取 Android 上的 HTTPS

目前 Windows 上主流的抓包软件有两类

  1. 监听网卡(Wireshark
  2. 监听端口(Fiddler

Wireshark 通过 libpcap/WinPcap 从底层抓取网络数据包,并通过不同类型的网络接口(包括以太网、令牌环网、ATM网等)获取数据包。

Fiddler 抓包的原理主要是开启一个 HTTP 网络代理服务,监听并拦截本机某端口的 HTTP 请求,再将其转发到目标服务器。

  1. Fiddler 仅作为监听 HTTP/HTTPS/FTP 的专用软件,简单好用,界面直观。
  2. Wireshark 是全能软件,除了 HTTP/HTTPS,TCP,ICMP 之类的包也不在话下,但是功能就比较复杂了,操作略显繁琐

https://www.telerik.com/download/fiddler/fiddler4

  1. 删除之前的所有记录
  2. 浏览器打开百度,搜索一个关键词,我这里搜索 “数码宝贝”
  3. 右侧的选项卡切换到 “WebForms”,即可查看到所有请求参数了。该表格中的值字段会将 URLEncode 之后的字符进行解码,从而展现一个原始的字符串,方便查看。
  1. 首先,将手机与PC连到同一个局域网(同一个WIFI
  2. 工具栏 Tools —> Options,打开 Options 对话框。
  3. 在 Connections 选项卡中,勾选 Allow remote computers to connect,允许远程计算机连接
  4. 切换到 HTTPS 选项卡,点击 Actions 按钮,Export Root Certificate to Desktop,将 FiddlerRoot.cer 证数导出到桌面。
  5. 将 FiddlerRoot.cer 下载到手机中

我用的是乐檬3S,andorid 6.0

如果直接点击证数文件,会提示 “无法安装该证数,因为无法读取证数文件”。

解决办法
设置 —> 安全 —> 凭据存储 —> 从内部存储设备安装。然后打开证数,随便起一个名字,凭证用途选则 “VPN和应用”,点击确定。证数就被安装进去了。

设置 —> 安全 —> 凭据存储 —> 信任的凭据,可以看到,刚刚安装的 Fiddler 证数,被安装到用户证数,这一栏里了,还自动添加了一个前缀 DO_NOT_TRUST

但不影响,至此,证数安装成功

添加证数后,有的手机需要重启一下才能生效,否则很多信息捕获不到

抓取酷狗音乐歌曲链接

手机打开酷狗APP,搜索 “年少有为” 这首歌,点击播放。这时候 Content-Type = audio/mpeg 的就是歌曲链接了。

Android 7.0 及后面的版本,即便是导入了 Fiddler 根证数,应用的 URLConnection、OkHttp、Retrofit、WebView,也仍然不会信任它。

原因在 Android 的官网上有说 https://developer.android.google.cn/training/articles/security-config.html

网络安全配置

 
配置文件格式

res/xml/network_security_config.xml 文件的格式如下

 

标签含义

  • base-config 配置可信赖的域名和CA(应用范围的自定义
  • domain-config 配置可信赖的域名和CA(网域范围的自定义
  • domain 信赖的域名
  • trust-auchors 信任其他CA
  • debug-overrides 配置用于调试的CA
  • pin-set 固定证数集合,可设置其有效时间
  • pin 公钥的哈希值(X.509证书的 SubjectPublicKeyInfo
  • cleartextTrafficPermitted 允许明文的HTTP
自定义可信CA

应用可能需要信任自定义的 CA 集,而不是平台默认值。出现此情况的最常见原因包括

  • 连接到具有自定义证书授权机构(如自签名或在公司内部签发的CA)的主机
  • 仅限您信任的CA(而不是每个预装CA
  • 信任未包含在系统中的其他CA

默认情况下,来自所有应用的安全连接(使用 TLS 和 HTTPS 之类的协议)均信任预装的系统CA,而面向 Android 6.0(API 级别 23)及更低版本的应用默认情况下还会信任用户添加的 CA 存储区。 应用可以使用 base-config(应用范围的自定义)或 domain-config(网域范围的自定义)自定义自己的连接。

因此,在 Android 7.0及以上的版本中,Fiddler 的证书会被安装到 “用户区”。但这个用户区又是默认不被信任的。因此,我们只需要添加上述配置,让应用程序信任用户区的 CA 即可

 

第三方程序,绕过限制

下面结论(暂未验证)摘自:https://blog.csdn.net/qq_15156393/article/details/90520825?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task

Android7.0及以上系统,默认只信任系统自带的CA

解决方案


特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


举报收藏 0评论 0
0相关评论
相关最新动态
推荐最新动态
点击排行
{
网站首页  |  关于我们  |  联系方式  |  使用协议  |  隐私政策  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号