在Android设备上运行的本地代理服务器

时间:2013-09-29 19:16:20

标签: android http-proxy

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

到目前为止我的代码编译正常,它基于此处的代码:http://www.jtmelton.com/2007/11/27/a-simple-multi-threaded-java-http-proxy-server/

问题是对实际服务器的http请求会阻塞而永不返回。

在没有设备生根的情况下,是否有更好的方法来编写此类服务?

3 个答案:

答案 0 :(得分:4)

您应该查看SandroProxy。 如果使用os代理设置,则可以在非root设备上捕获流量,或者在root用户设置上使用iptables规则。 流量存储在本地sqlite数据库中。也可以通过chrome devtools检查捕获的数据。要捕获应用中的流量,您应该检查插件的源代码。它具有iptables重定向和正确设置的所有代码。

查看google源代码中的wiki链接HowToInterceptTrafficOnMyOwn

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

btw:通过sandroproxy支持发送:)

答案 1 :(得分:0)

我一直在使用一个名为proxydroid的软件将我的设备用作代理服务器,而且它是我发现的唯一一个不需要root服务器的软件。我不确定它对您是否有任何帮助,但它是一个开源项目,代码可以在这里找到:

https://github.com/madeye/proxydroid

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

答案 2 :(得分:0)

忘记设置代理,使用Facebook Stetho库(http://facebook.github.io/stetho/)查看来自模拟器/设备的所有http请求和响应

enter image description here