6

我有一个疯狂的想法,我不知道是否可能......我想做的是将我的手机设置为 wifi 接入点,然后允许人们连接到它,但我自己处理所有传入的 http 流量。

所以:

  • 接入点模式下的手机wifi;开放 wifi 网络(这个花絮有效 - 是的,我知道它没有得到官方支持,但我无意将这个应用程序发布到公开市场上,它可以在我的手机上运行,​​这对我来说已经足够了)。

  • 客户端可以连接到电话(例如我的笔记本电脑:这也可以)。

  • 当客户端尝试打开到任何随机服务器的 http 连接时,这必须被我的应用程序拦截并由本地 Web 服务器处理。这就是我坚持的一点。

Web 服务器部分不应该太难;有(开源)网络服务器可用。但是获取到该 Web 服务器的流量,就出现了问题。

我所追求的行为有点类似于您在连接到一些开放热点(如酒店热点)时所获得的行为,然后将您重定向到登录页面。这种连接请求的拦截(我怀疑我必须查看 DNS 请求?)是我所追求的。

我见过一个应用程序正在这样做,但他们需要手机被植根。我希望找到一种方法来做到这一点,而无需植根手机。

4

3 回答 3

4

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

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

IPTables 只能在有根的 android 设备上访问。

而且我怀疑 android 上有很多可用的代理服务器,因此您必须通过网络连接将 HTTP 流量发送到代理服务器。

于 2011-04-06T08:35:43.360 回答
2

就像已经说过的那样,您将需要 IPTables,但您还需要一个代理服务器,例如Squid

谷歌“使用 squid 的透明代理”,或在此处查看:
Linux:通过三个简单的步骤使用 Squid 设置透明代理

于 2012-02-02T15:25:06.317 回答
2

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

于 2012-06-15T05:05:08.937 回答