我工作的公司是在镇上建立免费的无线热点。要连接到互联网,客户首先必须同意条款和条件,一个带有条款和接受按钮的简单表格。在他们接受之前,他们不会被授予完全的互联网访问权限。
问题我们有一些Android设备,当你自动连接到wifi时,他们不再用这个“登录”表单提示你。相反,左上角会显示一个小指示图标,表示在访问互联网之前需要执行额外的注册步骤。与此同时,客户正在使用互联网相信他们正在使用wifi,但实际上他们正在使用3G和移动数据,这会花费客户的钱。
我们提出的建议修复是假冒互联网访问,通过Android设备正在使用的流量槽来确定他们是否有互联网。通过这样做,手机不会使用客户端3G网络。相反,流量将被我们阻止,直到他们发现他们需要接受手机中的这个小图标所指示的条款。它不是最好的解决方案,但它将帮助客户在月底收到意外的巨额账单:))
我的问题是我们需要允许这种流量的流量?它只是一个IP,世界上每个Android手机每次都需要使用它来看看他们是否可以通过wifi访问互联网(听起来不太可能),或者它是如何工作的?
答案 0 :(得分:7)
这个问题有点陈旧但我希望在实施自己的解决方案时分享我对此主题的了解。
您想要做的基本上是强制网络门户。 Android设备会检测请求特定网址的强制网络门户网站,该网址目前为 http://connectivitycheck.gstatic.com/generate_204 。如果他们收到204响应,那么就有连接。如果他们收到30倍的响应,那么就会有一个强制门户网站。在这种情况下,系统会提示用户从门户网站登录页面,他可以接受条款或提供其他信息。
每次设备连接到网络时都会发生这种情况。一旦连接,它会不断检查以确保网络仍然具有可用的连接(我不知道说检查的间隔,但是只需几分钟)。
为了更好地进行调试,您应该记录客户端请求并查看他们登录网络时尝试访问的内容。这是因为强制门户的概念很常见,每个客户/平台都会请求自己的URL。
此外,您可以使用强制门户解决方案(如果尚未使用)。有很多可以实现你想要的东西。举几个例子,看看 Nodosplash , CoovaChilli 和 WiFiDog 。
答案 1 :(得分:0)
如果我理解正确,用户每次连接时都会被要求确认。如果是这样,解决方案将是使用诸如电话的MAC之类的东西来识别用户并将其保存在数据库中,该数据库在用户试图访问网络时被检查。 这确实留下了(非常轻微的)重复MAC的可能性。在这种情况下,永远不会询问第一个(对于给定的MAC)之后的新用户。 由于我不是一个Android程序员,我不知道提取每个新用户的MAC是多么容易。不要指望这很困难。