首页 文章

避免俘虏门户

提问于
浏览
2

我正在尝试制作一个没有互联网连接的设备,将任何与wifi的连接重定向到一个独特的页面,像一个海盗盒 . 我使用NodeJS服务器和dnsmasq将所有连接重定向到服务器 . 这是完美的工作,但当我尝试连接Android或iOS智能手机时,它会将其检测为强制门户网站并显示页面,但在身份验证弹出窗口中 .

我看到设备尝试连接到某些IP,如果没有响应,则认为连接是通过强制网络门户进行的 .

有没有办法避免这种情况?

非常感谢!

编辑:我发现页面列表为“白名单”:

Android Captive Portal Detection:
Domain names to white list:
clients3.google.com

iOS for iPhone:
iPhone is more complicated, since it uses many different domain names, maybe for load balancing. It also changed its strategy using different domain names through different O.S. versions.
iOS 6:
Domain names to white list:
gsp1.apple.com
*.akamaitechnologies.com
www.apple.com
apple.com

iOS 7:
Domain names to white list:
www.appleiphonecell.com
*.apple.com
www.itools.info
www.ibook.info
www.airport.us
www.thinkdifferent.us
*.apple.com.edgekey.net
*.akamaiedge.net
*.akamaitechnologies.com


Windows Desktop O.S.
Domain names to white list:
ipv6.msftncsi.com
ipv6.msftncsi.com.edgesuite.net
www.msftncsi.com
www.msftncsi.com.edgesuite.net
teredo.ipv6.microsoft.com
teredo.ipv6.microsoft.com.nsatc.net

但由于我的设备没有真正连接到互联网,我该如何发送这些页面?

1 回答

  • 0

    它在弹出窗口中显示重定向的页面,因为设备发出的请求(http探测器)确定它是否在强制门户后面并不返回预期的成功消息 .

    另见:https://serverfault.com/questions/679393/captive-portal-popups-the-definitive-guide/

    如果你想避免使用弹出窗口,但不允许http探测通过,那么你必须返回http探测所期望的相同的成功消息 - 这将使它认为它不在强制门户之后 .

    如果你没有返回http探针试图获得的成功消息,它会认为它是一个强制门户网站的背后 . 有时成功消息只是'HTTP 200 OK' .

    因此,为了欺骗它,您需要记录来自所有设备的http探测器的URL . 将这些结果存储在执行重定向的路由器上 . 在封闭网络内,每当探测到其中一个URL时,返回预期的成功消息 . 设备将认为它具有完全的Internet访问权限,并且不会弹出强制门户登录窗口 .

    如果您希望强制门户登录页面出现在设备上的强制门户身份验证弹出窗口中,只需将所有HTTP请求重定向到登录页面即可 . 在设备登录后,来自http探测器的所有这些URL都需要返回预期的成功消息,否则它将继续假设设备未成功登录到强制门户,并将继续显示身份验证弹出起来 .

相关问题