安卓设备问题 - Charles代理 - 网络连接

16

我正在尝试从 Android 设备获取 Charles 日志,但是无法成功。设置了代理的 WiFi 后,Android 设备的浏览器无法连接到互联网。

我已经列出了我在计算机上设置 Charles Proxy 并配置 Android 设备使用 Charles Proxy 的步骤。

非常感谢任何帮助,但我想指出几件事:

* 我已经在 Android 设备代理设置中正确添加了 WiFi 网络和 IP 地址(请参见下面的第18步)。

* 据我所知,我没有在 Android 设备上使用 VPN 或防火墙。如何双重检查这一点?

* 我已经尝试了两个版本的 Charles Proxy(如下所示)并逐个卸载和重新安装了程序。

charles Proxy: 4.2.7
charles Proxy: 3.12.3

* 在设置代理后,Android 设备上的 Chrome 和 Firefox 无法连接到互联网。

请参见以下步骤列表。非常感谢!!!


系统信息: MacOS 10.10.5 Android:6.0.1

  1. 菜单:代理:选中 Mac OS 代理
  2. 菜单:帮助 > SSL 代理 > 安装证书
  3. 在钥匙串中找到证书,然后单击始终信任(输入密码)
  4. 在 Charles Proxy 中,单击代理菜单
  5. 菜单 > 代理 > SSL 代理设置
  6. 选中启用 SSL 代理
  7. 单击添加
  8. 主机名 * 端口 443。
  9. 菜单:代理 > 代理设置
  10. 单击代理选项卡:Http 代理端口:8888
  • 选中:启用透明的HTTP代理
  • 点击MacOSX选项卡
  • 选中:启用Mac OS代理、使用HTTP代理、启动时启用MacOS代理
  • 点击Mozilla Firefox选项卡:启用Mozilla Firefox代理、使用HTTP代理、启动时启用Mozilla Firefox代理
  • 菜单:代理 > 访问控制设置
  • 点击添加,设置IP范围为0.0.0.0/0
  • 选中:提示允许未经授权的连接
  • 菜单 > 帮助 > 本地IP地址 - 把此IP地址写下来,并用此数字设置Android设备
  • 在Android设备上:

    1. 使用USB电缆把Android设备连接到Mac。端口为USB 2.0
    2. 设置 > 网络和互联网 > Wi-Fi
    3. 长按活动的Wi-Fi连接,选择:修改网络
    4. 展开高级选项,在代理下方点None,并选择手动
    5. 在代理主机名字段中输入第18步中的IP地址。
    6. 在代理端口字段中输入8888
    7. 点击保存
    8. 打开Chrome
    9. 输入http://charlesproxy.com/getssl/或简短版本chls.pro/ssl
    10. 收到错误消息:“err_proxy_connection_failed”或“err_connection_timed_out” 请注意:Mac上的Charles Proxy没有关于Android设备的对话框出现。
    11. 据我所知,我不使用VPN,也不在Android设备上使用防火墙。我该如何检查这个?
    手动将安全证书添加到Android设备: 30:在Mac桌面上-Charles Proxy>菜单帮助> SSL代理>保存证书 31. 将证书保存到桌面。 32. 通过USB电缆将证书复制到Android设备/下载文件夹(而不是SD卡)。
    在Android设备上: 33. 找到Charles代理证书文件,长按。
    34. 在对话框中:将证书重命名为“Charles Proxy Certificate” 35. 点击VPN和应用程序 36. 点击保存。 注意:此处不要求重新输入设备PIN码。
    37. 打开Chrome应用程序。出现错误消息“err_proxy_connection_failed”或“err_connection_timed_out”。 38. Android设备通知可能有第三方正在观看。
    我还使用了具有.crt和.pem后缀的证书完成了步骤30到38。
    我尝试了以下变化: *在没有连接到Mac的情况下在Android设备上设置代理 *在通过USB连接到mac的情况下在Android设备上设置代理 *在打开Charles Proxy之前和之后在Android设备上设置代理。
    我不知道接下来该怎么做!希望您可以帮助,谢谢阅读到这里。 :)

    1
    你应该接受一个答案。 - d4c0d312
    @Ana,我面临相同的问题。你能解决这个问题吗? - AbuMaaiz
    我有同样的问题。所有推荐的步骤都已完成。然而,来自Android设备的流量并没有通过Charles代理。我想知道这是否是因为我的Android设备通过转接器连接到Mac Pro? - wawka
    6个回答

    5

    我甚至购买了Charles,但是也遇到了同样的问题。我尝试了不同的设备和两个不同的Wifi,但仍然无法解决。出现了与Ana相同的错误。同时,我已经设置了network-security-config。


    4
    我正在使用Charles Proxy与我的Windows机器。我已经按照这篇博客的详细步骤进行了操作。
    步骤如下:
    • 下载并安装Mac/Windows笔记本电脑的Charles代理
    • 使移动设备和笔记本电脑连接到同一网络
    • 在Charles中启用开始记录
    • 在移动设备所连接的选定WiFi网络中启用代理,该网络也连接着笔记本电脑
    • 在Laptop Charles Help选项中提供给出的IP详细信息 > SSL代理 > 在移动设备或远程浏览器上安装Charles证书
    • 确保提供相同的IP和8888端口号
    • 打开移动浏览器并浏览http://chls.pro/ssl
    • 这应该会在移动设备中下载并安装Charles证书
    • 在笔记本电脑上,您可以看到设备尝试连接的通知。也要允许这个
    • 现在您可以在Charles中看到您的移动设备的所有网络日志
    • OS 7+设备需要包括一个额外的配置文件,如下所示

    network_security_config.xml content should be as follows
    
    <?xml version="1.0" encoding="utf-8"?>
    <network-security-config>
        <base-config cleartextTrafficPermitted="true">
            <trust-anchors>
                <certificates src="system" />
                <certificates src="user" />
            </trust-anchors>
        </base-config>
    </network-security-config>
    

    4
    从Android 10开始,为了拦截Android设备的HTTPS流量,需要额外的配置。
    请添加到res/xml/network_security_config.xml
    <network-security-config>
    <debug-overrides>
        <trust-anchors>
            <!-- Trust user added CAs while debuggable only -->
            <certificates src="user" />
            <certificates src="system" />
        </trust-anchors>
    </debug-overrides>
    
    <base-config cleartextTrafficPermitted="true">
        <trust-anchors>
            <certificates src="system" />
        </trust-anchors>
    </base-config>
    
    <domain-config>
        <!-- Make sure your URL Server here -->
        <domain includeSubdomains="true">your_test_url</domain>
        <trust-anchors>
            <certificates src="user"/>
            <certificates src="system"/>
        </trust-anchors>
    </domain-config>
    

    添加到AndroidManifest.xml文件中。
    <manifest>
        <application android:networkSecurityConfig="@xml/network_security_config">
        </application>
    </manifest>
    

    如果您仍然遇到困难,请查看完整文档和示例项目,网址为:https://docs.proxyman.io/debug-devices/android-device#sample-android-project

    3
    如果您在 Android N 及以上版本中运行 Charles 代理,请确保已将以下内容添加到您的 Android-Manifest 中。
    自 Android N 开始,您需要在应用程序中添加配置,以使其信任由 Charles SSL 代理生成的 SSL 证书。这意味着您只能在控制的应用程序中使用 SSL 代理。
    为了配置您的应用程序信任 Charles,您需要向应用程序添加网络安全配置文件。该文件可以覆盖系统默认设置,使您的应用程序信任用户安装的 CA 证书(例如 Charles 根证书)。您可以指定仅在应用程序的调试构建中应用此设置,以便生产构建使用默认的信任配置文件。
    请将文件 res/xml/network_security_config.xml 添加到您的应用程序中。
    <network-security-config> 
      <debug-overrides> 
        <trust-anchors> 
          <!-- Trust user added CAs while debuggable only -->
          <certificates src="user" /> 
        </trust-anchors> 
      </debug-overrides> 
    </network-security-config>
    

    然后在你的应用程序清单文件中添加对此文件的引用,如下所示:

    <?xml version="1.0" encoding="utf-8"?>
    <manifest ... >
        <application android:networkSecurityConfig="@xml/network_security_config" ... >
            ...
        </application>
    </manifest>
    

    0
    如果 network_security_config 无法解决问题,您可以双重检查是否有正在运行的 VPN/代理/Cloudfare
    我关闭它们就解决了。

    0
    在我的情况下,是Windows Defender防火墙导致的问题。禁用后,一切都正常工作了。Charles看到了我的手机连接并代理了所有请求。
    如果我关闭Charles,互联网连接仍然会丢失,但这是因为WIFI中设置了代理。我的路由器有2个WiFi点,2.4和5 gz。因此,我在2.4上设置了Charles代理,并使用5g进行日常浏览。

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接