如何使用Charles Proxy分析来自Android 6模拟器的https流量

时间:2016-07-21 13:19:39

标签: android macos https avd charles-proxy

我想分析我为Android开发的应用的https流量 Charles Web Debugging Proxy是我想要使用的工具。我有以下系统配置:

  • Mac OS X El Capitan版本10.11.5
  • Android Studio 2.1.2
    • Build#AI-143.2915827,建于2016年5月26日
    • Android SDK工具25.2.0 rc1
    • 平台版本:API 24:Android 6.X(N)修订版2
  • Charles Web Debugging Proxy v 3.11.5 30天试用版

我已经在StackOverflow上阅读过几篇文章,例如

但我仍未实现目标。我走过了所有重要的步骤:

  • Charles Root证书已安装并添加到Max OS X Keychain并受到信任
    • 开放代理设置:代理 - >代理设置,代理选项卡,选中“启用透明HTTP代理”
    • 打开SSL代理设置:代理 - > SSL代理设置,SSL代理选项卡,选中“启用SSL代理”
  • Android模拟器由~/Library/Android/sdk/tools/emulator -netdelay none -netspeed full -http-proxy <IP_FROM_DEVICE_WITH_CHARLES_PROXY_INSTALLED>:8888 -avd Nexus_5_API_23
  • 从Android Studio Terminal启动
  • http://charlesproxy.com/getssl
  • 安装的证书
  • 或由Charles Proxy保存的证书,由openssl转换为.crt并安装在模拟设备上

我可以毫无问题地阅读Charles Proxy中的所有http流量。我也可以阅读https流量 Charles仅列出IP地址。有像

这样的条目
https://173.194.65.188:5228

所以ip地址没有解决。如何获得真正的https网址?我是否必须在某处为https激活DNS?

2 个答案:

答案 0 :(得分:3)

我也发现这是一个问题。当我想通过Charles Proxy调试网络流量时,我的解决方案是切换到Genymotion模拟器。 Genymotion模拟器将为您提供Charles中的url(s)与ip(s)。

在Genymotion模拟器中,您将Wifi代理主机名配置为'10 .0.3.2',代理端口输入'8888'(*假设端口8888是您在Charles Proxy中配置的侦听端口)。

答案 1 :(得分:1)

有一些说明可以让Android模拟器在这里与Charles合作:

https://stackoverflow.com/a/35577864/2832027

这是非常不可靠的。如果模拟器工作正常,则需要将模拟器放入和退出飞行模式,然后停止工作。

以下是上述帖子中的步骤:

  1. 使用/{path to your android sdk directory}/tools/emulator -avd Nexus_5X_API_23 -http-proxy http://192.168.2.38:8888从终端启动模拟器,其中-avd值是您的名称 模拟器和-http-proxy值是Charles的IP地址: 帮助&gt; SSL代理&gt;在移动设备上安装Charles Root证书 设备或远程浏览器。

  2. 在Charles中,应设置以下内容: 代理&gt;代理8888 Enable transparent proxying应该是 检查;代理&gt;应检查macOS代理

  3. 在模拟器中, `设置&gt;更多(无线&gt;蜂窝网络&gt;接入点&gt; T-Mobile US(或其他任何网络)将代理设置为 10.0.2.2和端口到8888

  4. 在模拟器中,Settings > Developer Options > Use legacy DHCP客户端应该打开。

  5. 在模拟器中,打开和关闭飞行模式

  6. 另外,如果您在使用Charles 7(API 24)及更高版本时遇到问题,请参阅此内容。 https://android.jlelse.eu/android-nougat-charlesing-ssl-network-efa0951e66de