Android:如何以编程方式捕获App的网络流量?

时间:2018-08-16 01:08:43

标签: android android-networking firebase-performance

我当前正在使用一个库来启用质量检查或开发人员在其应用程序中调试网络流量,我们目前使用OKHttp,而且我知道如何创建拦截器并将所有请求数据分发到lib。这样开发人员或质量检查人员就可以查看此类数据(有效负载/ URL /大小/响应代码/持续时间等),但是我想创建一个更通用的解决方案,侦听HTTP流量甚至TCP流量,然后从那里获取数据,但是我找不到起点,我知道这是可能的,因为Firebase Performance正在这样做,但是我仍然找不到API或无论如何都无法监听此类流量。

我希望Google Firebase Performance Team的某人分享一些有关如何处理的信息,如果这不是商业秘密的话:)

我遇到了以下解决方案:https://github.com/cyruliu/Sensitive_API_Monitor/blob/master/app/src/main/java/com/android/reverse/apimonitor/NetWorkHook.java 但是,用反射看起来有点不好,我希望找到一种更好的方法。

1 个答案:

答案 0 :(得分:1)

简短的答案:没有代理整个设备是不可能的。

对于OkHttp3,我在这里专门写了一个库:https://github.com/shehabic/sherlock,它实现了一个拦截器,该拦截器每次打开您的应用并捕获网络请求时都会创建一个新会话,您也可以拥有多个会话,并添加一个浮动图标,帮助您访问会话和请求的历史记录以及某些导出功能,此外,它还添加了一个辅助启动器图标,可用于访问捕获请求而不会中断应用程序的过程。

关于Firebase性能,所有魔力实际上都在Firebase-Perf Gradle插件中。为简化起见,它会扫描项目的代码,并替换对OkHttpClient的直接调用,以通过自己的FirebaseOkHttpClient代理,然后从那里获得所有详细信息,甚至在成为http客户端时使用https请求。

我希望这可以在将来节省一些时间。

相关问题