2011-03-18 108 views
5

我得到了這個瘋狂的想法,我不知道是可能的或不是...我想要做的是將我的手機設置爲WiFi接入點,然後讓人們連接到它,但我自己處理所有傳入的http流量。使用Android手機作爲無線網絡服務器

所以:

  • 接入點模式的手機無線網絡;開放的無線網絡(這個小貼士的工作原理 - 是的,我知道這不是官方的支持,但我無意將這個應用程序發佈到公開市場,所以它適用於我的手機,這對我來說已經足夠了)。

  • 客戶端可以連接到手機(例如我的筆記本電腦:這也可以)。

  • 當客戶端嘗試打開任何隨機服務器的http連接時,必須由我的應用攔截並由本地Web服務器處理。這是我堅持的觀點。

Web服務器部分不應該太難;有(開源)Web服務器可用。但是將流量傳輸到該Web服務器,則存在問題。

我之後的行爲有點類似於當連接到一些開放的熱點,如酒店熱點,然後將您重定向到登錄頁面時所獲得的行爲。這個連接請求的截獲(我懷疑我必須查看DNS請求?)是我所追求的。

我看到一個應用程序正在這樣做,但他們需要手機根植。我希望找到一種方法來做到這一點,而不需要根植電話。

回答

4

無線熱點通常會使用IPTables將端口80/443的流量重定向到本地Web服務器。

我在linux上的機器上運行過squid,端口是3128,然後發送所有端口80/443的流量給squid。然後我使用魷魚重定向任何我沒有明確允許本地Web服務器的網址。

IPTables只能在rooted android設備上訪問。

我懷疑在android上有很多可用的代理服務器,因此您必須通過網絡連接向代理服務器發送HTTP流量。

+1

我已經害怕......即使它在技術上不是解決方案,我會標記這個問題如答覆。 – Wouter 2011-04-11 16:57:02

+0

如果這個解決方案仍然是正確的,那麼同樣適用於iOS? (你是否需要爲IPTables安裝一個類似的程序?) – Andy 2015-08-30 06:11:27

+0

我不是一個iOS開發人員,但是從我聽到的其他人(和常識)來看,iOS在應用程序可能做的事情方面受到的限制更多。所以如果即使Android不允許,你也可以打賭你的屁股iOS會嘲笑讓你重新路由webtraffic的想法。 – Squirrelkiller 2016-09-07 09:05:49

2

你不需要有一個代理,你只需要您的設備和iptables在一個完整LAMP堆棧,你可以標記的所有數據包還沒有通過身份驗證轉發到您的本地頁面,然後使用php更改該地址的身份驗證後的IP地址的規則,如果您希望可以對mac地址執行相同的操作,則還需要一個守護程序,該守護程序會定期重置每個異常