【问题标题】:How to monitor HTTP (get, post etc) requests that my app is making in android如何监控我的应用在 android 中发出的 HTTP(获取、发布等)请求
【发布时间】:2015-12-31 11:24:55
【问题描述】:

在我自己的应用程序中,我使用了各种以某种形式进行网络调用(HTTP 请求)的第 3 方 SDK。在不编辑此代码的情况下,我可以在应用程序中单独编写代码来拦截我的应用程序发出的所有 GET 和 POST 请求吗?

我想在我的应用中记录这些 HTTP 调用

我知道使用 FiddlerCharles proxy tools,但这在应用程序之外,但这不起作用,因为我无法在我的应用程序中记录这些 HTTP 调用。

有办法吗?

编辑:我在我的代码中使用 Google Analytics SDK 和 Facebook SDK。我想监控这些 SDK 从我的应用中进行的所有网络调用

【问题讨论】:

  • 你想拦截请求或响应?
  • 发布您当前测试代码的一些详细信息或您尝试过的示例。另外,请解释为什么您需要使用 3rd 方 SDK 而不是内置方法。
  • @Tigger - 我在我的代码中使用 Google Analytics SDK 和 Facebook SDK。我想监控这些 SDK 从我的应用程序发出的所有网络调用,并且可能能够记录/编辑请求/响应。
  • @PedroLobito - 请求和响应。
  • 通过代理强制相应的第 3 方库作为步骤 1

标签: android http remote-debugging


【解决方案1】:

在非 root 手机上,您可以使用 android OS 代理和重定向流量。但是有些应用程序不尊重它。建立直接联系。可以做一些调整。使用 Drony 和 VPN 模式将所有流量重定向到 SandroProxy。这是视频如何使用 SandroProxy SandroProxy with Chrome devtools SandroProxy 捕获然后流量也可以捕获 pcapfiles。也可以在 pcap 流上制作 ssl mitm。来自 SandroProxy 支持

【讨论】:

  • 手机需要root吗?
【解决方案2】:

Charles 代理是个好办法。

其他包括如果应用程序正在使用单例网络类(理想情况下应该这样做),则为获取创建一个函数,为发布创建一个函数。从您的类中调用这些函数并使用 log.d 在控制台上输出数据。您可以跟踪请求响应或所用时间。

【讨论】:

  • 就像我说的,我不能使用 Charles 代理,因为我需要从应用程序中制作它。此外,不能有单例类,因为这些调用将由各自的 SDK 进行
  • Charles 代理可配置为应用
  • 我同意,但我需要的是一些版本的 Charles 代理(可能是一些 sdk?),我可以将其放入我的应用程序并发布。可能吗?
【解决方案3】:

如果您特别希望您的应用能够记录 HTTP 调用。 Android Snooper library 可以是您正在寻找的解决方案。

【讨论】:

    【解决方案4】:

    您考虑过 Stetho 吗?

    http://facebook.github.io/stetho/

    您可以监控和修改所有传入和传出的请求等。

    【讨论】:

      【解决方案5】:

      https://github.com/jgilfelt/chuck/

      它添加了一个新应用程序,每次发出网络请求时都会发送通知,您可以查看请求的详细信息。

      https://github.com/facebook/stetho

      它允许您使用 chrome 开发工具来监控您从 android 应用程序创建的请求。 (以及其他很酷的功能)

      【讨论】:

        【解决方案6】:

        如果您 root 设备或通过调试 (adb) 运行,那么这可能会有所帮助: http://code.tutsplus.com/tutorials/analyzing-android-network-traffic--mobile-10663

        否则我认为不可能做你想做的事。但您可以监控一般网络内容,例如:

        有关所有流量统计信息,请参阅:
        https://developer.android.com/reference/android/net/TrafficStats.html(只需传入您的应用用户 ID)

        监控网络状态:
        https://developer.android.com/reference/android/net/ConnectivityManager.html

        【讨论】:

          【解决方案7】:

          试试HTTP Toolkit - 这是我一直在构建的一个开源工具,可以做到这一点。它可以自动拦截来自 Android 设备的流量,无需手动设置,然后允许您检查和重写来自计算机的所有 HTTP 流量,如下所示:

          要拦截来自您的应用程序的 HTTPS 流量,您只需 a) 在应用程序的网络安全配置中信任“用户”证书(请参阅https://stackoverflow.com/a/38770284/68051)或 b) 使用模拟器或 root 设备(在这种情况下是 HTTP Toolkit可以注入“系统”证书,您的应用会自动信任该证书)。

          【讨论】:

            【解决方案8】:

            您可以将此作为更好的选择。请记住向下滚动应用程序并检查网络拦截是否已打开。 链接在这里https://appetize.io/upload

            【讨论】:

            • 请在答案正文中提供更多详细信息,而不是依赖可能会过时的外部链接。
            猜你喜欢
            • 1970-01-01
            • 2018-08-24
            • 2012-07-06
            • 1970-01-01
            • 1970-01-01
            • 2018-11-04
            • 1970-01-01
            • 1970-01-01
            • 2015-10-09
            相关资源
            最近更新 更多