绕过SSL证书固定导致WebView报错问题求助
不少人遇到过这个问题,核心原因是WebView有独立的证书验证逻辑,没被你当前用的SSL unpinning模块覆盖,分享几个可行的排查和解决方向:
确认模块覆盖范围:你用的unpinning模块大概率只hook了App自带的网络库(比如OkHttp、Retrofit),但WebView的证书校验流程是独立的。检查模块是否支持WebView相关hook,有没有针对
WebViewClient的onReceivedSslError或者系统WebView底层验证逻辑做处理。适配WebView版本:高版本的Android System WebView(基于Chrome 100+内核)对证书安全校验做了强化,部分旧unpinning模块适配性差。可以尝试降级WebView到稳定旧版本,或者换用专门适配新WebView的unpinning工具。
hook修改WebView安全设置:通过LSPosed给目标App加个自定义模块,强制跳过WebView的SSL错误:
// 在WebView初始化阶段注入以下代码 WebSettings webSettings = webView.getSettings(); webSettings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW); webView.setWebViewClient(new WebViewClient() { @Override public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) { handler.proceed(); // 直接忽略SSL错误,避免触发错误回调 } });检查代理配置一致性:如果用了Burp等代理工具,部分App会给WebView单独设置代理,导致代理证书无法被识别。需要确保WebView和App主体使用同一代理配置,或者通过hook强制WebView继承全局代理。
更换unpinning模块:当前模块对WebView场景支持不足的话,可以换用专门优化过WebView的SSL绕过模块,这类模块会针对性处理WebView的证书验证流程,稳定性更好。
补充:卡顿是因为WebView反复触发错误回调导致的,解决证书验证问题后,卡顿现象会自然消失。
内容的提问来源于stack exchange,提问作者Palm

