最近学习爬虫时按照《python3 网络爬虫开发实战》步骤使用mitmproxy时,发现https请求无法抓取,部分app甚至一条请求都看不到。百度一手解决办法寥寥无几,实测并没有卵用。几天探索,发现问题还是出在证书上。
问题出现的原因:尽管可能你已经把证书导入手机,但是这始终是第三方证书,属于用户凭据。许多app都只信任系统证书,更有甚者只信任自带的证书。
解决办法:我们直接将第三方mitmproxy证书转为系统证书导入(需要ROOT权限)。
step1:安装openssl 并将openssl目录bin文件夹加入Path中 安装包地址:
Win32/Win64 OpenSSL Installer for Windows - Shining Light Productions (slproweb.com)
step2:在.mitmproxy目录下运行cmd输入
openssl x509 -subject_hash_old -in mitmproxy-ca.pem
首行为哈希值复制下来,将mitmproxy-ca.pem复制并重命名为 c8750f0d.0
step3:将此证书发给模拟器,在c8750f0d.0目录下打开cmd输入:
adb push c8750f0d.0 /system/etc/security/cacerts/
参考文章:安卓证书安装为系统证书(模拟器版) - 知乎 (zhihu.com)



