如何监控我的应用程序在android中发出的HTTP(获取,发布等)请求

时间:2015-10-03 09:19:58

标签: android http remote-debugging

在我自己的应用程序中,我使用各种第三方SDK以某种形式或其他形式进行网络调用(HTTP请求)。如果不编辑此代码,我可以在应用程序中单独编写代码来拦截我的应用程序正在进行的所有GET和POST请求吗?

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

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

有办法吗?

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

8 个答案:

答案 0 :(得分:7)

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

答案 1 :(得分:3)

查尔斯代理是一个好方法。

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

答案 2 :(得分:2)

如果您专门寻找能够记录HTTP呼叫的应用程序。 Android Snooper库可以是您正在寻找的解决方案。

答案 3 :(得分:2)

你考虑过Stetho吗?

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

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

答案 4 :(得分:1)

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

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

https://github.com/facebook/stetho

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

答案 5 :(得分:0)

如果你设备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

答案 6 :(得分:0)

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

enter image description here

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

答案 7 :(得分:0)

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