我正在尝试使用Wiki中提到的DNS方法在我现有的公共WiFi网络上实现Splash Page/wifi着陆页,在该网络中我托管了自定义DNS服务器,该方法将重定向所有DNS查找到托管Web服务器的本地地址,在所有用户单击同意之前。
。用户单击同意后,我的自定义DNS服务器开始为查找返回正确的IP,因此,用户将能够在线上。
注意:我们完全理解这绝不是确保我们的网络,甚至使我们的网络处于危险之中。但是,这里的目标是只是在我们的用户面前弹出登录页面。
这种方法实际上在Windows Phone(我测试过的Windows 8)上作为飞溅页面,甚至在我尝试打开随机网站时,它也将我重定向到我的页面,在我击中我的页面之后,我可以得到到互联网。
当我在iPhone/android上尝试它时,一旦我连接到热点,splash page/wifi着陆页就会按预期出现(因为设备正在尝试通过转到页面来验证互联网访问)>但是,,在我单击同意并允许访问互联网后,iPhone和Android Splash屏幕都不会消失。我必须强迫iPhone"使用无网络的此WiFi"才退出。
我想知道我是否可以在页面中调用特殊(JavaScript?)方法,或者我需要发送某些软件包?我在iOS上注意到,如果我单击"应用程序商店的链接",则启动页面消失而不会与网络断开连接,所以,我想我在这里缺少一些东西。
例如,单击iOS设备上iOS stackoverflow应用的链接可以是解决方法。
现在已经谷歌搜索了一个星期,似乎什么都没有出现。
顺便说一句,我正在使用模块DNSD构建自定义DNS服务器。
= - = - =
= - = - = - = - = - = edit = - = - = - = - = - = - =
我还在github上上传了我的代码演示:https://github.com/kylelam/dnsd_wifi
要测试它,请在您的本地网络(sudo node demo.js)中运行它。然后,将手机的DNS更改为机器的IP。断开手机与WiFi的连接,然后再次连接到它。(在iOS上,您可能需要详细介绍,并启用自动蛋白和自动加入,或者如果不能,请重新启动。)
*Note1:服务器需要在端口53和80上运行,因此需要Sudo。
*Note2:请不要笑我的代码,我对此非常新。但请指出。
*Note3:您需要NPM安装以下软件包:OS,Express,DNS,DNSD
ttl设置为0可能是问题的原因,尝试其他值,例如5。