proxy - 使用 Mitmproxy 后,Android 中没有互联网连接
问题描述
我已将安卓手机(三星 Galaxy S8)配置为使用代理。我可以连接到 mitm.it。我还可以看到 Mitmproxy 捕获的一些请求。
但是,当我尝试在 Google 中搜索任何内容时,我没有互联网连接。
关于发生了什么以及如何解决它的任何提示?
解决方案
Android 7.1 及更高版本不再允许使用用户手动添加的自定义证书,但如果您的手机具有超级用户访问权限,则可以通过 ADB 使其工作。
Android 将其系统证书存储在/system/etc/security/cacerts/
. 如果您查看您的设备,您会看到证书具有散列名称,例如。“a1234b0d.0”。要拦截应用程序流量,您需要找出证书的哈希值
openssl x509 -inform PEM -subject_hash_old -in mitmproxy-ca-cert.pem | head -1
然后相应地重命名您的证书
mv mitmproxy-ca-cert.pem <your_hash_value_in_here_without_carets>.0
最后将其移动到您设备的系统证书所在的位置。但是,为此,您需要先重新挂载系统目录才能获得写入权限
adb shell su -c "mount -o rw,remount,rw /system"
adb push your_certificate /sdcard/your_certificate
adb shell su -c "mv /sdcard/your_certificate /system/etc/security/cacerts/your_certificate"
adb shell su -c "chmod 644 /system/etc/security/cacerts/your_certificate"
adb reboot
如果这不起作用,我记得(虽然不是来源)阅读有关 Android Nougat 的信息也没有关于 2 年以上过期的证书。mitmproxy 创建的证书应该没问题。不过,Burpsuite 或 Fiddler 对我不起作用。
推荐阅读
- matlab - 数字图像处理中的通道
- tinymce - TinyMCE 5 自定义按钮图标
- linux - 查找解密文件的-k值(openssl)
- c++ - 如何通过 C++ 将一个数组重新制作成两个更小的数组?
- arrays - 将列末尾的元素与下一行开头的元素相加
- ffmpeg - 在使用 ffmpeg 转换视频文件时,如何实现良好的压缩和时间比率?
- sql - 循环遍历 PLSQL 12.1 中的 JSON 数组
- php - 通过 cron 作业发送 HTTP 请求
- firebase - 根据通知数据打开 Flutter 应用?
- css - Bootstrap 5 单选按钮更改 NET Core 中的背景颜色