2013-09-29 92 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

相關問題