Charles 手机抓包
请求抓包对于程序员调试代码必不可少,Charles是一个用于抓包的好工具(也可以使用Fiddler),Charles抓包是通过中间人代理实现,在客户端和服务端通信时,Charles会截取客户端发送给服务端的请求,然后伪装成客户端与服务端进行通信,服务端返回数据时,Charles会截取数据伪装成服务端将数据发送给客户端。
Charles的安装比较简单,根据应用安装过程的提示,安装即可,不再赘述。主要讲一下Charles手机抓包的配置。
Proxy-Proxy Settings
,设置端口,Charles会占用该端口启动一个服务。勾选Support HTTP/2
ipconfig
命令查询。
Help-SSL Proxying-Install Charles Root Certificate
具体安装过程可参考Charles根证书安装http://chls.pro/ssl
下载charles证书。一般按照上述小节配置就可以实现对HTTPS请求的抓包和数据解密。但是Android 7版本及以上的系统,不再信任用户级的证书,只信任系统级的证书。即便是按照上述操作安装了Charles的根证书,发现HTTPS请求也无法正常解析,会有Unknown
报错,Charles的Note会提示You may need to configure your browser or application to trust the Ch
.
此类场景,需要给Android7及以上的手机安装系统级证书,来实现HTTPS的抓包。
http://chls.pro/ssl
下载的证书(一般后缀为.pem
)上传到安装有openssl
的机器上。openssl
命令重命名证书名称
openssl x509 -inform PEM -subject_hash -in xxx.pem # 此处xxx替换为具体的名称
该命令会输出一个签名,找到其中的hash值进行复制。如下文中的2598f6a3
。
2598f6a3 -----BEGIN CERTIFICATE----- MIIFRjCCBC6gAwIBAgIGAX2jljHLMA0GCSqGSIb3DQEBCwUAMIGnMTgwNgYDVQQD DC9DaGFybGVzIFByb3h5IENBICgxMCBEZWMgMjAyMSwgTEFQVE9QLU1CNFIyUTJF KTElMCMGA1UECwwcaHR0cHM6Ly9jaGFybGVzcHJveHkuY29tL3NzbDERMA8GA1UE CgwIWEs3MiBMdGQxETAPBgNVBAcMCEF1Y2tsYW5kMREwDwYDVQQIDAhBdWNrbGFu ZDELMAkGA1UEBhMCTlowHhcNMjExMjA5MDkwNDI5WhcNMjIxMjA5MDkwNDI5WjCB pzE4MDYGA1UEAwwvQ2hhcmxlcyBQcm94eSBDQSAoMTAgRGVjIDIwMjEsIExBUFRP UC1NQjRSMlEyRSkxJTAjBgNVBAsMHGh0dHBzOi8vY2hhcmxlc3Byb3h5LmNvbS9z c2wxETAPBgNVBAoMCFhLNzIgTHRkMREwDwYDVQQHDAhBdWNrbGFuZDERMA8GA1UE CAwIQXVja2xhbmQxCzAJBgNVBAYTAk5aMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A MIIBCgKCAQEArcxNxm3EhvWl7Jk8H5otzU/ElTJivzMfALft45ghGam6Ds0utF0S AgRvfmC7/KtxWnTzokc9ewA440CBe23QvfmJcRVqaJBjvS40MT3y2fWS8BNNgZlS QE4bnUexIdfVWzYXoo80P/mKDSxfTbc+3PPYfUDXDR99GDZKLcZfgMeRkAAEReaj qzjjeDDGj/DEVRZZQeXfESTs/tGaruupzqIENqToLMSQSwTDpIaApEz76Lf5qAP3 XAUnpTnz5E+5n1WRV9oRxBKYVILDrTyejzwh9Koh25gij31knDCGioHqXVbwfg81 3cSlVj79BMjcuGRPwo5rpfzyYV9w5YVaEQIDAQABo4IBdDCCAXAwDwYDVR0TAQH/ BAUwAwEB/zCCASwGCWCGSAGG+EIBDQSCAR0TggEZVGhpcyBSb290IGNlcnRpZmlj YXRlIHdhcyBnZW5lcmF0ZWQgYnkgQ2hhcmxlcyBQcm94eSBmb3IgU1NMIFByb3h5 aW5nLiBJZiB0aGlzIGNlcnRpZmljYXRlIGlzIHBhcnQgb2YgYSBjZXJ0aWZpY2F0 ZSBjaGFpbiwgdGhpcyBtZWFucyB0aGF0IHlvdSdyZSBicm93c2luZyB0aHJvdWdo IENoYXJsZXMgUHJveHkgd2l0aCBTU0wgUHJveHlpbmcgZW5hYmxlZCBmb3IgdGhp cyB3ZWJzaXRlLiBQbGVhc2Ugc2VlIGh0dHA6Ly9jaGFybGVzcHJveHkuY29tL3Nz bCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4wDgYDVR0PAQH/BAQDAgIEMB0GA1UdDgQW BBQa42h5Cgu4cdr8ij3pnqk8RuHt7DANBgkqhkiG9w0BAQsFAAOCAQEAEvocaQrm ZxTnSGueTjmsMlDppnfi84pOma9+IY0cKALJOtSCG01WvEzoxd6rXDrMNGRVG6Zd SrkpJTnKp/9L3NAcwX/S1Gt5a18gI0wMCMGfoFYcAA2xvIbOF0UTCi17tTPK4ltQ Bb0IPDUmLzP7yvHspCT+UEE/2B2wgmFiB4RIA01O8eQpSMAlzEfLdpwJwGfFIaWn GpcVotgQRvmOJRBV/fN3AfjOI5sGjSx2/ExW+vbUu98u6PHs1HleVslNDY1o+rE+ qxkQCLIhIoCD1rp8AE1L7OS8iGTju9oT99F/YV21QvtKWJ9YpsgWM14qzv9MzLQ6 N+oMxISSpEr47Q== -----END CERTIFICATE-----
重命名证书文件。
mv xxx.pem 2598f6a3.0 # 2598f6a3为上步中的hash值/system/etc/security/cacerts/
目录下。
通过数据线将手机连接到电脑上,并打开开发者调试。
将上述后缀为0的证书文件放在adb
工具的安装目录下,打开windows终端(windows+R 输入 cmd)
执行
# 将证书上传到手机上 adb push 2598f6a3.0 /sdcard/Download adb shell su # 将证书复制到/system/etc/security/cacerts/ cp /sdcard/Download/2598f6a3.0 /system/etc/security/cacerts/ # 修改证书权限 chmod 644 /system/etc/security/cacerts/2598f6a3.0
如果执行cp
命令时出现Read-only file system
错误,需要将system
挂载为可读写。执行命令:
mount -o rw,remount /system
如果执行该命令报错mount -o rw,remount /system /system’ not in /proc/mounts
,执行下一条命令,简单粗暴解决。
mount -o rw,remount / chmod 777 /system mount -o rw,remount /system
然后继续执行cp
命令本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。