web auth portal

线环境中经常碰到苹果终端连接无线后wifi图标无法点亮导致终端无法上网、在起portal的网络中认证页面无法自动弹出影响使用体验;

  1. 终端关联到SSID后,终端发送一个HTTP 1.0请求到http://captive.apple.com,报文中的User-Agent是CaptiveNetworkSupport wisper。
  2. 如果收到的不是期望的Success页面,即http://www.apple.com/library/test/success.html,那么终端认为连接网络失败,就会调用浏览器再次发出HTTP 1.1请求到http://captive.apple.com,报文中的User-Agent是Mozilla/5.0 (iPhone; CPU iPhone OS 9_3_3 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Mobile/13G34(不同iOS终端或版本之间稍有差异)。
  3. 此时,终端自动弹出了Portal的认证页面,用户输入账号密码后即可连接无线网络。
上述即iOS终端的CNA(Captive Network Assistant)原理,能够自动推出Portal认证页面的关键在于第2步中通过浏览器来再次发出HTTP请求,如果不调用或是间隔较长时间调用浏览器,那么认证页面就会无法推出或是推出时间较长。整个过程如下图所示。

image

对第一次CaptiveNetworkSupport wisper探测重定向,后续的CaptiveNetworkSupport wisper探测回应Success,使得iOS终端可以自动弹出页面,并点亮WiFi信号。 

如果一直都是回复302则不会点亮wifi图标;此时如果是portal认证;只能在当前portal发起认证;如果portal 页面里面又进行302或者访问别的orgin url;此时wifi图标会被关闭 

image

 

image

image

 

image

 

 

https://gmd20.github.io/blog/iPhone%E8%BF%9E%E6%8E%A5wifi%E7%83%AD%E7%82%B9%E8%B7%B3%E8%BD%ACcaptive-portal%E9%A1%B5%E9%9D%A2%E5%8E%9F%E7%90%86%E4%BB%A5%E5%8F%8A%E9%A1%B5%E9%9D%A2%E8%B7%B3%E8%BD%AC%E6%85%A2%E5%8E%9F%E5%9B%A0%E5%88%86%E6%9E%90/

 

posted @ 2026-02-05 21:22  codestacklinuxer  阅读(1)  评论(0)    收藏  举报