2013-09-29 66 views
5

我正在尝试编写一个可以在设备本身上运行的http代理服务器。实际上,需要找到一种方法来捕获设备生成的出站http流量。在Android设备上运行的本地代理服务器

我迄今被确定编译的代码,它是基于这里找到代码:http://www.jtmelton.com/2007/11/27/a-simple-multi-threaded-java-http-proxy-server/

的问题是,HTTP请求到实际的服务器会阻止,再也不回来。

有没有更好的方式来编写这样的服务,而不需要root设备?

回答

4

您应该检查SandroProxy。 如果使用os代理服务器设置,或者使用iptables规则在根目录设备上,则可以标记非根设备上的流量。 流量存储在本地sqlite数据库中。捕获的数据也可以通过chrome devtools进行检查。要在您的应用中捕获流量,您应该检查插件的源代码。它具有iptables重定向和适当设置的所有代码。

检查出谷歌的源代码维基链接HowToInterceptTrafficOnMyOwn

http://code.google.com/p/sandrop/wiki/HowToInterceptTrafficOnMyOwn

BTW:由sandroproxy支持:)

+0

嗨SandroProxy的支持!谢谢你的帮助,我会给它一个去和发布结果在这里 – fran6

+0

嗨,请你能协助吗?我面临一个System.loadLibrary(“socketdest”)的问题;我使用的是AndroidStudio,不知道如何构建jni库 – fran6

+1

您可以使用这个,以便您可以跳过构建它。http://code.google.com/p /sandrop/downloads/detail?name=libsocketdest.so –

0

我一直在使用一款名为proxydroid的软件来将我的设备用作代理服务器,它是我找到的唯一不需要root的设备。我不知道这是否是给您的任何帮助,但它的一个开源项目,代码可以在这里找到:

https://github.com/madeye/proxydroid

我注意到,应用程序将一段时间后冻结,或如果一次发送大量请求,但我没有机会找出发生这种情况的原因。

+0

嗨肯尼弗!这是非常好的,我会试验。性能限制不是一个大问题,因为我现在只是想做一个PoC。 – fran6

+0

嗨Kennifer,我发现proxydroid没有为我做这项工作,因为我只想捕捉和拦截流量。使用代理droid我需要有一个代理服务器连接到:-( – fran6

相关问题