iPhone / Android不会解雇用DNS实现的wifi登陆页面

我正试图在我现有的公共WiFinetworking上实现一个启动页面/ wifi登陆页面,使用维基中提到的DNS方法 ,在这里我托pipe一个自定义的DNS服务器,将所有的DNS查询redirect到一个本地地址,托pipe给所有用户,然后点击同意。

用户点击同意后,我的自定义DNS服务器开始返回正确的IP查找,从而,用户将能够上网。

注意:我们完全明白,这绝对不能保证我们的networking,甚至使我们的networking处于危险之中。 但是,这里的目标是将登陆页面popup到用户面前。

这种方法实际上在Windows Phone(我testing过的Windows 8)上起作用,甚至在我试图打开一个随机网站的计算机上时,它会将我redirect到我的页面,并且在我同意后,我可以访问Internet 。

当我尝试在iPhone / Android上尝试时,一旦我连接到热点,splash页面/ wifi着陆页就会如预期般出现(因为设备试图通过转到页面来validation互联网访问)。 但是 ,点击同意后,并允许上网,iPhone和Android的启animation面都不会消失。 我必须强迫iPhone“使用这个无线networking”退出。

我不知道是否有一个特殊的(JavaScript?)方法,我可以在页面中调用,或者我需要发送到设备的一些包? 我注意到在iOS上,如果我点击一个链接到App Store,这个启动页面就会离开networking,所以我想我在这里丢失了一些东西。

例如,单击iOS设备上的iOS StackOverflow应用程序的链接可能是一种解决方法。

现在已经search了一个星期,似乎没有任何东西出现。

顺便说一下,我正在构build我的自定义dns服务器节点js,与模块dnsd。

= – = – =

= – = – = – = – = edit = – = – = – = – – – =

我还在GitHub上上传了我的代码演示: https : //github.com/kylelam/dnsd_wifi

要testing它,请在本地networking(sudo node demo.js)中运行它。 然后,将您的手机的dns更改为您的计算机的IP。 断开你的手机从wifi连接到它。 (在iOS上,您可能需要详细介绍,并启用自动login和自动join,或者如果您不能,只需重新启动。)

* note1:服务器将需要在端口53和80上运行,所以它需要sudo。

*注2:请不要嘲笑我的代码,我对此很陌生。 但请指出。

* note3:您需要安装这些软件包:os,express,dns,dnsd

ttl设置为0可能是问题的原因,请尝试一个不同的值,如5。