安卓7.0以上设备网络抓包笔记

fiddler是位于客户端和服务器端之间的代理,也是目前最常用的抓包工具之一

fiddler下载地址: https://www.telerik.com/download/fiddler

常规https抓包

常规抓https包准备步骤:

  1. 下载抓包证书
  2. 手机Wifi设置代理
  3. 手机导入抓包证书

安卓7.0以后https抓包

证书抓包方式,安卓7.0以后证书分为系统证书和用户证书,

  1. 对于允许用户证书的应用,可以采用常规方式抓包
  2. 对于只允许系统证书的应用,需要如下操作

不允许用户证书的抓包

不允许用户证书的抓包一般会想到两种方式改成可抓包

修改APP用户证书许可

既然不允许用户证书,我们就修改APP,使APP允许用户证书, 一般来说修改安卓Manifest如下:

1
<application android:networkSecurityConfig="@xml/network_security_config"/>

修改network_security_config.xml修改如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true">
<trust-anchors>
<certificates
overridePins="true"
src="system" />
<!-- 允许用户证书-->
<certificates
overridePins="true"
src="user" />
</trust-anchors>
</base-config>
</network-security-config>

当然修改已存在的app,将涉及到反编译,回编,签名等步骤

Root用户添加系统证书

第二种方式是修改系统文件,把fiddler证书变成系统证书

  1. 下载抓包证书(常规抓包也需要这个)如:FiddlerRoot.cer
  2. 转换成pem格式:

    1
    openssl x509 -inform DER -in FiddlerRoot.cer -out cacert.pem
  3. 获取新的证书HASH值(命令输出第一行会显示文件hash,如:e5c3944b):

    1
    openssl x509 -inform PEM -subject_hash_old -in cacert.pem
  4. 把pem证书文件用hash命名如(e5c3944b.pem)

  5. 把新证书拷贝到系统证书目录(需root):/etc/security/cacerts/
  6. 文件权限改成664,重启手机即可

一般情况下经过这些修改,就可以正常进行https抓包了

当前网速较慢或者你使用的浏览器不支持博客特定功能,请尝试刷新或换用Chrome、Firefox等现代浏览器