3

我正在尝试使用带有 Apache2 的 Linux 机器来实现强制门户。在这种情况下,大多数操作系统使用强制网络助手 (CNA) 技术来“检测”它们是否正在访问强制门户(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 建立强制门户,我会非常有兴趣阅读该过程的简短描述,并自行重现它。

提前致谢。

4

1 回答 1

0

我的样本:

    RewriteEngine  on
    RewriteCond %{HTTP_USER_AGENT}  ^CaptiveNetworkSupport(.*)$
    RewriteCond %{REQUEST_URI}  !^/tools/apple(.*) [NC]
    RewriteRule ^(.*)$  http://yourdomain/pub/apple/success.html [L,R=302]
于 2014-05-24T10:32:43.590 回答