在Linux + Apache2中实现强制门户时绕过iOS CNA

时间:2014-02-10 13:40:15

标签: apache ios7 apache2 lighttpd captivenetwork

我正在尝试使用Apache2的Linux机器实现强制门户。 在这种情况下,大多数操作系统使用强制网络助手(CNA)技术来“检测”他们是否正在访问强制网络门户(Android,Windows,OSX,iOS,...)。

嗯,对于Android和Windows设备来说,一切都很好“(尽管他们可能会提醒你一些消息,比如”你可能需要额外的网络信息......“等等)。问题出在Apple设备上。看起来像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获取强制门户网站,我会非常有兴趣阅读该过程的简要说明,并自行重现。

提前致谢。

1 个答案:

答案 0 :(得分:0)

我的样本:

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