使用mitproxy抓取Be real的JWT时遇客户端TLS握手失败问题求助
解决mitproxy抓取BeReal请求时的TLS证书信任问题
这个错误的核心原因很明确:mitproxy作为中间人代理,会用自身生成的CA证书重新签发BeReal服务器的证书,但你的手机(或模拟器)并未信任这个CA证书,导致TLS握手直接失败。按以下步骤操作即可解决:
1. 导出mitproxy的CA证书
启动mitproxy后,在与电脑同局域网的设备浏览器中打开http://mitm.it,页面会提供对应系统(iOS/Android)的证书下载按钮,直接下载即可。
2. 在设备上安装并信任证书
Android设备
- 下载完成后,进入系统设置→安全→加密与凭据→从存储安装,找到下载的证书文件。
- 给证书命名(比如「mitmproxy CA」),凭据用途选择「VPN和应用」。
- Android 7及以上系统需额外操作:进入开发者选项或安全设置,开启「信任用户安装的CA证书」(不同品牌路径有差异,比如小米在隐私保护→特殊权限中查找,华为在安全中心的证书管理里设置)。
iOS设备
- 下载证书后,进入设置→通用→VPN与设备管理,找到mitproxy的证书并点击安装。
- 安装完成后,返回设置→通用→关于本机→证书信任设置,打开对应mitproxy证书的信任开关。
3. 验证代理是否正常工作
将设备的代理设置为运行mitproxy的电脑局域网IP和端口(默认是8080),然后打开BeReal应用。此时mitproxy控制台应能正常捕获请求,不会再出现TLS握手错误。你要找的JWT通常在登录或初始化请求的Authorization请求头中,格式为Bearer <你的JWT令牌>。
额外情况:仍无法捕获请求的处理
部分应用会采用「证书钉扎(Certificate Pinning)」技术,仅信任预设的官方证书,直接拒绝mitproxy的证书。这种情况需要绕过证书校验:
- Android设备可使用Xposed框架搭配JustTrustMe模块;
- 或用Frida运行通用绕过脚本,命令示例:
frida -U -f com.bereal.app -l disable-pinning.js(disable-pinning.js为通用的证书校验禁用脚本,可自行获取)。
内容的提问来源于stack exchange,提问作者TIMcre
相关产品推荐
相关产品推荐

