18

看起来在 ios7 中,设备发送请求以检查连接到 wifi 后是否有互联网连接的 URL 已更改(更糟!)。

在 ios6 及更早版本中,请求是:

GET /library/test/success.html HTTP/1.0
Host: www.apple.com
User-Agent: CaptiveNetworkSupport/1.0 wispr
Connection: close

来源

但现在在 ios7 中,它可以访问“最多 200 个”(根据cisco)。

我自己对此进行了测试,我可以确认请求随机转到 appleiphonecell.com、captive.apple.com、airport.us、ibook.info 等。

所以我的问题是:有没有人有这些 URL 的完整列表(也许它只是 Apple 拥有的每个域)?我们在我们的 wifi 上运行一个强制门户,但只是为了让用户知道他们需要在连接到 wifi 后连接到 VPN。在强制门户登录页面上单击“取消”有时会显示“在没有互联网的情况下使用”选项,这将允许用户连接到 VPN,但有时,单击“取消”不会提供此选项,只会断开连接wifi连接直接,这意味着用户无法连接到VPN。

在我们可以伪造对特定 URL (library/test/success.html) 的响应之前,这将使 wifi 保持连接。如果我们有一个它可以访问的站点列表,我们可以再次这样做,否则我们可能不得不使用我们的强制门户返回绘图板!(或者等待一个 ios7 更新,它修复了 'use without internet' 选项,这不是每次都出现)。如果可能的话,认为我们现在会考虑基于用户代理。

Edit-wee 更新,看起来 UA 至少与“CaptiveNetworkSupport”保持一致,因此我们将暂时更改为 UA 检查。

4

5 回答 5

7

很有趣,www.appleiphonecell.com目前captive.apple.com两者都解析为 Akamai 地址。

~/ > host captive.apple.com
captive.apple.com is an alias for captive.apple.com.edgekey.net.
captive.apple.com.edgekey.net is an alias for e7279.e9.akamaiedge.net.
e7279.e9.akamaiedge.net has address 23.212.87.91

但是airport.us和朋友们直接解决到苹果的A类网络

~/ > host airport.us
airport.us has address 17.149.160.87
airport.us has address 17.172.224.81

从这些 IP 地址中,您可以找到更多具有相同 PTR 记录的主机名。添加路径/library/test/success.html通常会导致直接响应或重定向到www.apple.com主机名上的同一页面。

~/ > host 17.149.160.87
87.160.149.17.in-addr.arpa domain name pointer airport.us.
87.160.149.17.in-addr.arpa domain name pointer ibook.info.
87.160.149.17.in-addr.arpa domain name pointer macbookair.net.
87.160.149.17.in-addr.arpa domain name pointer macintosh.me.
87.160.149.17.in-addr.arpa domain name pointer applecare.info.
87.160.149.17.in-addr.arpa domain name pointer macintosh.info.
87.160.149.17.in-addr.arpa domain name pointer itunes.info.
87.160.149.17.in-addr.arpa domain name pointer itunes.us.
87.160.149.17.in-addr.arpa domain name pointer iphoto.us.
87.160.149.17.in-addr.arpa domain name pointer applecare.us.
87.160.149.17.in-addr.arpa domain name pointer macbook.us.
87.160.149.17.in-addr.arpa domain name pointer itunesmobile.com.
87.160.149.17.in-addr.arpa domain name pointer ipod.us.
87.160.149.17.in-addr.arpa domain name pointer itunestelevision.com.
87.160.149.17.in-addr.arpa domain name pointer macosxversions.com.
87.160.149.17.in-addr.arpa domain name pointer itunes.me.
87.160.149.17.in-addr.arpa domain name pointer itunesaircheck.com.
87.160.149.17.in-addr.arpa domain name pointer mac.us.
87.160.149.17.in-addr.arpa domain name pointer macbookair.us.
87.160.149.17.in-addr.arpa domain name pointer ipod.me.
87.160.149.17.in-addr.arpa domain name pointer applestore.info.
87.160.149.17.in-addr.arpa domain name pointer iphone.me.
87.160.149.17.in-addr.arpa domain name pointer osxlionlaunchpad.com.
87.160.149.17.in-addr.arpa domain name pointer macgestures.com.
87.160.149.17.in-addr.arpa domain name pointer macbookair.org.
87.160.149.17.in-addr.arpa domain name pointer mac.info.
87.160.149.17.in-addr.arpa domain name pointer macos.us.
87.160.149.17.in-addr.arpa domain name pointer myipod.net.
87.160.149.17.in-addr.arpa domain name pointer itunesu.net.
87.160.149.17.in-addr.arpa domain name pointer appleiphonecell.com.
87.160.149.17.in-addr.arpa domain name pointer firewire.us.
87.160.149.17.in-addr.arpa domain name pointer airport.info.
87.160.149.17.in-addr.arpa domain name pointer itunesparty.com.
87.160.149.17.in-addr.arpa domain name pointer applecomputer.info.
87.160.149.17.in-addr.arpa domain name pointer appletv.info.
87.160.149.17.in-addr.arpa domain name pointer applecomputers.us.
87.160.149.17.in-addr.arpa domain name pointer idvd.us.
87.160.149.17.in-addr.arpa domain name pointer osx.info.
87.160.149.17.in-addr.arpa domain name pointer macbookair.info.
87.160.149.17.in-addr.arpa domain name pointer itunesu.org.
87.160.149.17.in-addr.arpa domain name pointer itunesuniversity.com.
87.160.149.17.in-addr.arpa domain name pointer imovie.us.
87.160.149.17.in-addr.arpa domain name pointer theapplestore.org.
87.160.149.17.in-addr.arpa domain name pointer macbookpro.org.
87.160.149.17.in-addr.arpa domain name pointer apple.me.
87.160.149.17.in-addr.arpa domain name pointer itools.info.
87.160.149.17.in-addr.arpa domain name pointer thinkdifferent.us.
87.160.149.17.in-addr.arpa domain name pointer thinkdifferent.info.
87.160.149.17.in-addr.arpa domain name pointer macintosh.us.
87.160.149.17.in-addr.arpa domain name pointer ipod.info.
87.160.149.17.in-addr.arpa domain name pointer applescript.us.
87.160.149.17.in-addr.arpa domain name pointer quicktime.info.
87.160.149.17.in-addr.arpa domain name pointer macosxlionairdrop.com.
87.160.149.17.in-addr.arpa domain name pointer itunesshow.com.
87.160.149.17.in-addr.arpa domain name pointer airtunes.net.
87.160.149.17.in-addr.arpa domain name pointer ipod.net.
87.160.149.17.in-addr.arpa domain name pointer macos.info.
87.160.149.17.in-addr.arpa domain name pointer imac.info.
87.160.149.17.in-addr.arpa domain name pointer imac.us.
87.160.149.17.in-addr.arpa domain name pointer appleiosv.com.
87.160.149.17.in-addr.arpa domain name pointer ipodnano.me.
于 2014-03-09T03:11:51.783 回答
5

在我们的测试中,看起来 CNA 不仅触发了带有“CaptiveNetworkSupport”的请求,而且还触发了一个常见的 WebKit 用户代理标识符。您实际上是否成功地仅检查了CaptiveNetworkSupport的 User-Agent 标头?

这真是一团糟。

于 2013-09-24T14:00:56.247 回答
5

检查 Userv 代理“CaptiveNetworkSupport”。我在我的 nginx 网络服务器上对此进行了测试,并且可以在所有 iOS 设备上完美运行。

if ($http_user_agent ~* (CaptiveNetworkSupport)) {
            return 200;
        }
于 2013-11-01T18:27:32.663 回答
2

将它们添加到
/etc/lighttpd/lighttpd.conf

$HTTP["host"] =~ "^(appleiphonecell.com|captive.apple.com|www.itools.info|www.ibook.info|www.aiport.us|www.thinkdifferent.us|www.apple.com)" {
    server.document-root    = "/www/library/test/"
    index-file.names        = ( "success.html" )                                
    dir-listing.activate    = "disable"                                         
    server.error-handler-404 = "/success.html"
    #accesslog.filename = "/var/log/lighttpd/apple-access.log" 
    #server.errorlog = "/var/log/lighttpd/apple-error.log"
    url.rewrite = (
        "^/(.*/)" => "/success.html",
    )
}

在 iOS6 和 iOS7 上测试

于 2014-05-09T16:20:47.453 回答
0

已以 Lighttpd 服务器配置的形式发布了一种解决方法:

http://forum.daviddarts.com/read.php?9,8879

该解决方法基于 UA 检查 CaptiveNetworkSupport - 尽管 iOS 也将尝试使用 WebKit UA 从 Apple 网站加载相同的长随机 URL。

于 2013-09-29T11:59:53.577 回答