在Linux+Apache2中实现捕获门户时绕过iOS CNA



我正在尝试使用Apache2的Linux机器实现一个捕获门户。在这种情况下,大多数操作系统使用Captive Network Assistant(CNA)技术来"检测"他们是否正在访问Captive门户(Android、Windows、OSX、iOS…)

好吧,对于Android和Windows设备来说,一切都"很好"(尽管它们可能会提醒你一些消息,比如"你可能需要额外的网络信息…"之类的)。问题出在苹果设备上。CNA的iOS实现似乎有点困难,因为它打开了一个登录弹出窗口,等待凭据介绍。。。通过这种方式,我无法在Safari的主窗口中浏览我的内容,但在"临时"Safari窗口中。。。

我已经广泛研究了一些"绕过"这个iOS CNA实现的方法,只要在方便的时候提供一个"success.html"文件,我发现有人已经成功地使用了LightTPD web服务器,比如:

dir-listing.hide-dotfiles   = "enable"
# Fix for iOS7
#   It ask especially different domains without a specific URL.
#   It want to get a "success" message, to allow full system/internet access
$HTTP["useragent"] =~ "CaptiveNetworkSupport" {
server.document-root =  "/opt/piratebox/www/library/test/"
index-file.names        = ( "success.html" )
dir-listing.activate    = "disable"
server.error-handler-404 = "/success.html"
}

我想知道是否有人可以将前面的LightTPD指令"翻译"成Apache2中的等效指令,可能需要一些RewriteCond+RewriteRule指令。。。

否则,如果有人使用Apache2绕过iOS CNA建立了一个专属门户,我会非常有兴趣阅读该过程的简短描述,并自行复制。

提前谢谢。

我的示例:

RewriteEngine  on
RewriteCond %{HTTP_USER_AGENT}  ^CaptiveNetworkSupport(.*)$
RewriteCond %{REQUEST_URI}  !^/tools/apple(.*) [NC]
RewriteRule ^(.*)$  http://yourdomain/pub/apple/success.html [L,R=302]

最新更新