将安卓手机用作WiFi Web服务器

6
我有一个疯狂的想法,我不知道它是否可行...我想做的是将我的手机设置为WiFi接入点,然后允许人们连接到它,但自己处理所有传入的http流量。
因此:
- 手机以接入点模式连接WiFi;开放WiFi网络(这个小技巧有效 - 是的,我知道它没有得到官方支持,但我没有打算在公开市场上分发或使用这个应用程序,它在我的手机上运行得很好,这对我来说已经足够了)。 - 客户端可以连接到手机(例如我的笔记本电脑:这也可以工作)。 - 当客户端尝试打开到任意随机服务器的http连接时,这必须被我的应用截获并由本地Web服务器处理。这是我卡住的地方。 Web服务器部分不应该太难; 有(开源的)Web服务器可用。但让流量到达那个Web服务器,那就是问题所在。
我想要的行为有点类似于连接到一些开放的热点(如酒店热点),然后重定向您到登录页面。这种截获连接请求(我怀疑我必须查看DNS请求?)就是我想要的。
我见过一个应用程序正在做这件事,但他们要求手机被root。我希望找到一种不需要root手机的方法来实现它。
3个回答

4

Wifi热点通常使用IPTables将80/443端口的流量重定向到本地Web服务器。

我以前在Linux机器上运行过端口3128上的Squid,然后将所有80/443端口的流量发送到Squid。然后,我使用Squid将任何我没有明确允许的URL重定向到本地Web服务器。

只有经过Root的Android设备才能访问IPTables。

而且我怀疑Android上可用的代理服务器不多,所以您需要通过网络连接将HTTP流量发送到代理服务器。


1
我已经害怕了...虽然这不是一个技术上的解决方案,但我会将此问题标记为已回答。 - Wouter
如果这个解决方案仍然正确,那么同样适用于iOS吗?(您是否需要安装类似的IPTables程序?) - Andrew Gallasch
我不是iOS开发者,但从其他人(和常识)所听到的来看,iOS在应用程序可以做什么方面受到更多限制。因此,即使Android也不允许这样做,你可以肯定iOS会嘲笑让你重新路由网络流量的想法。 - Squirrelkiller

2
您不需要使用代理,只需要在您的设备上拥有完整的 LAMP 栈和 IPtables,您可以标记所有未经身份验证的数据包以转发到您的本地页面,然后使用 PHP 更改该 IP 地址的规则,一旦地址通过身份验证,您也可以对 MAC 地址执行相同的操作,然后还需要一个守护进程定期重置每个异常。

2
正如所说,您需要IPTables,但还需要一个代理服务器,例如Squid
请搜索“使用Squid设置透明代理”,或者查看这里:
Linux:三步设置透明代理

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接