看起来在 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 检查。