添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

从 Android 11 或更高版本开始,有新的配置可以使 Charles Proxy 正常工作:

  1. 验证您是否安装并信任 Charles 代理证书。您可以在“设置”应用程序 ->“安全”->“加密和凭据”->“受信任的凭据”->“用户选项卡”=>“确保 Charles 代理”已加载中进行验证。

  2. 您只能 从您自己的应用程序 拦截 SSL 代理,而不能从其他应用程序拦截。

  3. 在源代码中,添加 res/xml/network_security_config.xml

<span style="background-color:var(--highlight-bg)"><span style="color:var(--highlight-color)"><code class="language-xml"><<span style="color:var(--highlight-namespace)">network-security-config</span>>
    <<span style="color:var(--highlight-namespace)">debug-overrides</span>>
        <<span style="color:var(--highlight-namespace)">trust-anchors</span>>
            <span style="color:var(--highlight-comment)"><!-- Trust user added CAs while debuggable only --></span>
            <<span style="color:var(--highlight-namespace)">certificates</span> <span style="color:var(--highlight-attribute)">src</span>=<span style="color:var(--highlight-variable)">"user"</span> />
            <<span style="color:var(--highlight-namespace)">certificates</span> <span style="color:var(--highlight-attribute)">src</span>=<span style="color:var(--highlight-variable)">"system"</span> />
        </<span style="color:var(--highlight-namespace)">trust-anchors</span>>
    </<span style="color:var(--highlight-namespace)">debug-overrides</span>>
    <<span style="color:var(--highlight-namespace)">base-config</span> <span style="color:var(--highlight-attribute)">cleartextTrafficPermitted</span>=<span style="color:var(--highlight-variable)">"true"</span>>
        <<span style="color:var(--highlight-namespace)">trust-anchors</span>>
            <<span style="color:var(--highlight-namespace)">certificates</span> <span style="color:var(--highlight-attribute)">src</span>=<span style="color:var(--highlight-variable)">"system"</span> />
        </<span style="color:var(--highlight-namespace)">trust-anchors</span>>
    </<span style="color:var(--highlight-namespace)">base-config</span>>
    <<span style="color:var(--highlight-namespace)">domain-config</span>>
        <span style="color:var(--highlight-comment)"><!-- Make sure your URL Server here --></span>
        <<span style="color:var(--highlight-namespace)">domain</span> <span style="color:var(--highlight-attribute)">includeSubdomains</span>=<span style="color:var(--highlight-variable)">"true"</span>>your_production_domain</<span style="color:var(--highlight-namespace)">domain</span>>
        <<span style="color:var(--highlight-namespace)">trust-anchors</span>>
            <<span style="color:var(--highlight-namespace)">certificates</span> <span style="color:var(--highlight-attribute)">src</span>=<span style="color:var(--highlight-variable)">"user"</span>/>
            <<span style="color:var(--highlight-namespace)">certificates</span> <span style="color:var(--highlight-attribute)">src</span>=<span style="color:var(--highlight-variable)">"system"</span>/>
        </<span style="color:var(--highlight-namespace)">trust-anchors</span>>
    </<span style="color:var(--highlight-namespace)">domain-config</span>>
</<span style="color:var(--highlight-namespace)">network-security-config</span>>
</code></span></span>

=> 将 your_product_domain 替换为您的工作域。

4.  添加到AndroidManifest.xml

<span style="background-color:var(--highlight-bg)"><span style="color:var(--highlight-color)"><code class="language-xml"><<span style="color:var(--highlight-namespace)">manifest</span>>
    <<span style="color:var(--highlight-namespace)">application</span> <span style="color:var(--highlight-attribute)">android:networkSecurityConfig</span>=<span style="color:var(--highlight-variable)">"@xml/network_security_config"</span>>
    </<span style="color:var(--highlight-namespace)">application</span>>
</<span style="color:var(--highlight-namespace)">manifest</span>>
</code></span></span>

证书安装时

手机进入设置 --> 进入Wifi设置 --> 选择Wifi网络设置(不同的机型可能需要长按进入)–>找到代理栏修改为手动 -->输入主机名(查看上面第三步) --> 端口号(及上面第二步提到的)保存后。完成上面的步骤后,你可能会看到很多网络请求都报unknown,如何只是要抓取http请求则可以忽略这些错误,如果要抓取的https请求还需要配置证书,下面及开始配置。 抓包 工具支持http和https代理,另外还支持流量控制如弱网测试,接口并发测试,重发网络请求测试,网络请求截获并动态修改等功能。 警告协议(Alert Protocol)是 SSL /TLS协议栈的一部分,它用于在两个通信对等实体之间传输关于连接状态、错误或其他重要条件的通知。当加密会话中发生异常或错误时,一方可以通过发送一个警告消息来通知另一方。 如果你也遇到这个问题,就看看我的内容哦 Client SSL handshake failed: An unknown issue occurred processing the certificate (certificate_unknown) 客户端 SSL 握手 失败 :处理证书时出现未知问题(证书\未知) You may need to configure your browser or a... 对比 握手 成功和 握手 失败 的协议报文,发现 握手 失败 报文 main, WRITE: TLSv1 Handshake, length = 163 main, READ: TLSv1.2 Alert, length = 2 main, RECV TLSv1 ALERT: fatal, handshake_failure 发现了问题, 客户端 发起了一个TLSv1 握手 ,此时服务器端却发出了一个TLSv1.2Alert警告,拒绝 握手 连接。: 但是以上并没有解决我的问题,后来我是这样做的,可供参考。如有侵权,请联系删除。 请求服务端时使用的加密有差异,第二种加密方式无法正常 握手 成功,检查加密相关代码,发现未根据是否使用GM加密方式做判断导致的问题。由于同一份代码不同机器有的能调用成功,有的调用 失败 的前提下,网上给的解决方案无法解决(比如,配置环境等)。调用某功能云端接口请求,保存如下信息:Web服务通信期间 握手 期间远程主机关闭连接。