如何监控我的应用在 android 中发出的 HTTP(获取、发布等)请求
Posted
技术标签:
【中文标题】如何监控我的应用在 android 中发出的 HTTP(获取、发布等)请求【英文标题】:How to monitor HTTP (get, post etc) requests that my app is making in android 【发布时间】:2015-12-31 11:24:55 【问题描述】:在我自己的应用程序中,我使用了各种以某种形式进行网络调用(HTTP 请求)的第 3 方 SDK。在不编辑此代码的情况下,我可以在应用程序中单独编写代码来拦截我的应用程序发出的所有 GET 和 POST 请求吗?
我想在我的应用中记录这些 HTTP 调用
我知道使用 Fiddler 和 Charles proxy tools,但这在应用程序之外,但这不起作用,因为我无法在我的应用程序中记录这些 HTTP 调用。
有办法吗?
编辑:我在我的代码中使用 Google Analytics SDK 和 Facebook SDK。我想监控这些 SDK 从我的应用中进行的所有网络调用
【问题讨论】:
你想拦截请求或响应? 发布您当前测试代码的一些详细信息或您尝试过的示例。另外,请解释为什么您需要使用 3rd 方 SDK 而不是内置方法。 @Tigger - 我在我的代码中使用 Google Analytics SDK 和 Facebook SDK。我想监控这些 SDK 从我的应用程序发出的所有网络调用,并且可能能够记录/编辑请求/响应。 @PedroLobito - 请求和响应。 通过代理强制相应的第 3 方库作为步骤 1 【参考方案1】:在非 root 手机上,您可以使用 android OS 代理和重定向流量。但是有些应用程序不尊重它。建立直接联系。可以做一些调整。使用 Drony 和 *** 模式将所有流量重定向到 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://***.com/a/38770284/68051)或 b) 使用模拟器或 root 设备(在这种情况下是 HTTP Toolkit可以注入“系统”证书,您的应用会自动信任该证书)。
【讨论】:
【参考方案8】:您可以将此作为更好的选择。请记住向下滚动应用程序并检查网络拦截是否已打开。 链接在这里https://appetize.io/upload
【讨论】:
请在答案正文中提供更多详细信息,而不是依赖可能会过时的外部链接。以上是关于如何监控我的应用在 android 中发出的 HTTP(获取、发布等)请求的主要内容,如果未能解决你的问题,请参考以下文章
如何监控 http 请求以便在我的 ios 应用程序中查看我的标头请求,内置反应本机