關於Apple的Captive Network Assistant 強制網絡門戶

轉自:http://blog.csdn.net/winterth/article/details/8485072html

 

在WIFI的應用場景中,有個很典型的應用,叫作Captive Portal強制網絡門戶,也叫Captive Web Portal(CWP)。網絡

大體流程是:app

 

  1. 用戶的移動設備(例如手機)接入WIFI。ide

  2. 打開任意網頁。測試

  3. 獲得一個相似Login的頁面,須要用戶填寫一些信息,而後提交。spa

  4. 認證經過後,容許自由訪問網絡,不然沒法上網。.net

 

電信、移動等運營商常常會推出一些市區裏的WIFI,不少用的就是這種方式。還有像機場等地。有個典型的應用,就是杭州的ihangzhouhtm

iOS,還有Mac OS,都有個功能,當接入無線網絡後,會自動檢測網絡是否通。若是不通,則會自動彈出一個頁面,讓用戶去登陸。blog

Apple把這種功能叫作Captive Network Assistant(CNA)。get

其原理以下:

 

  1. 發送一個HTTP/1.0的請求到 http://www.apple.com/library/test/success.html 

  2. 接收一個迴應,若是迴應跟它預計的結果一致,那麼認爲網絡是通的,就不會自動彈出頁面。同時,狀態欄的WIFI圖標出現。流程結束。不然,進入下一步。

  3. 若是收到的迴應不是它想要的那個,它就認爲有CWP存在。

  4. 若是有CWP存在,iOS就會自動打開一個頁面,在這個頁面中再請求一次http://www.apple.com/library/test/success.html,這一次,使用的是HTTP/1.1。

  5. 而後就能夠打開Login頁面了。

在第2步中,若是有CWP存在,收到的迴應一般是一個Login頁面,這個和第5步收到的結果應該是同樣的。

若是網絡能,則能夠收到下面的迴應。

 

 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN"><HTML><HEAD><TITLE>Success</TITLE></HEAD><BODY>Success</BODY></HTML>

 

只是第2步中,iOS是如何判斷的,不得而知。不過只要保證收到上面的響應,則必定能通。

那麼,第2步中若是沒有收到響應,或是收到了非HTTP 200的響應又會如何呢?

根據個人測試,若是沒收到響應,依然會彈出一個窗口。不過,這不是一種正常的CWP狀態。

非HTTP 200的狀況,我只試了HTTP 302重定向。在這種狀況下,iOS不會自動彈出Login頁面。

在上面的5步中,獲得了一個Login頁面,而後又會發生什麼呢?

用戶拿到Login頁面後,應該填寫一些信息,而且提交。iOS會在用戶提交後,當即發一邊第1步中的請求,再次檢測網絡。若是此時網絡仍是不通,iOS會自動斷開當前的SSID。不過這個行爲好像有點不穩定,具體就不細說了。

網絡通了後,在iOS上基本有2個現象。一是右上角的「取消」按鈕變成」完成「,或是自動關閉這個窗口,行爲彷佛不太一致。最關鍵的是頂端狀態欄WIFI圖標的出現。

從現象上看,只要WIFI圖標不出來,iOS就不容許有流外出(部分特殊的除外)。

********** 反作用 **********

iOS的這種行爲,其實沒給用戶多少方便,卻會帶來很多麻煩。我記得在iOS 4時,還能夠選擇是否啓用auto-login。不過iOS 6已經沒有這個選項了。

理論上講,這個功能最麻煩的就是要保證你所在的網絡能夠訪問http://www.apple.com/library/test/success.html。若是僅僅是在公司內部網絡,不容許訪問外網,那麼iOS就沒法鏈接了。

 

【題外話】在iOS 5之前,只有open的SSID纔會發test請求。(open的SSID指的是沒有802.1X或PSK認證的)。而從iOS 6開始,連上非open的網絡也會發這個test了。

因此,在這種內網的狀況下,須要防火牆開放www.apple.com的訪問,或是WIFI AP能夠支持避開CNA的檢測。

我一直沒在網上找到關於CNA的判斷標準,不知道Apple搞這麼個東西幹嘛。

********** 測試結果 **********

寫完此文,內心一直癢癢的,想知道第2步到底是怎麼判斷的。因而當即動手測試。

我發現,只要響應頁面中,<TITLE>的值是Success,大小寫敏感,就能夠欺騙iOS了。

測了iOS 6.0和Mac OS 10.7,結果都同樣。這下我內心釋懷了。不知道新版本會不會有變化。該死的蘋果。

相關文章
相關標籤/搜索