Captive Portal - 連接WiFi自動彈出認證頁面


摘要

解釋Captive Portal是什麼、爲什麼連上WiFi後會自動彈出認證頁面。同時,說明主流操作系統的支持情況。

Captive Portal

中文通常譯作“強制主頁”或“強制登錄門戶”。是一個登錄Web頁面,通常由網絡運營商或網關在用戶能夠正常訪問互聯網之前攔截用戶的請求並將一個強制登錄或認證主頁呈現(通常是通過瀏覽器)給用戶。該頁面可能要求用戶輸入認證信息、支付、接受某些條款或者其他用戶授權等,隨後用戶才能被授權訪問互聯網。該技術廣泛用於移動和個人寬帶服務,包括有線電視、商業WiFi、家庭熱點等,也可用於訪問企業和住宅區有線網絡。

實現策略

實現Captive Portal的方法有很多,常見的幾種方式有:

  • DNS攔截:攔截所有DNS請求且返回認證主機IP地址(設置了強制主頁),這樣用戶訪問任何網站都會看到同一個強制主頁。
  • HTTP重定向:利用HTTP重定向功能將所有的HTTP請求重定向到認證主機,如此一來,用戶的發出的任何HTTP請求都會得到重定向後的強制主頁。當用戶通過認證後,便不再重定向用戶請求。
  • IP跳轉:把所有IP包裏的目標地址改爲認證主機地址,在認證主機上進行404跳轉,當然是跳轉到強制主頁了。
  • 內核層劫持:當網關收到一個訪問外網地址(80端口)的TCP SYN請求包後,立即僞造一個來自外網地址的TCP ACK包。客戶端收到此僞造的響應後會誤認爲外網主機可以連接便再次發送ACK,此時TCP握手成功。客戶端發起請求,網關再次劫持後迴應ACK+PUSH包,其中就包含強制主頁。

連接WiFi後自動彈出認證頁面

單單網關實現了Captive Portal還不夠,還不能自動彈出認證頁面。需要操作系統支持才能實現在網絡連接後主動彈出認證頁面的功能。本人對iOS、Android、macOS以及Windows的測試結果如下:

  1. iOS從3.0開始支持,主動彈出窗口顯示認證頁面(非瀏覽器窗口)。
  2. Android從4.0以上開始支持,主動彈出窗口顯示認證頁面(非瀏覽器窗口)。
  3. macOS(OS X EI Capitan)支持,主動彈出窗口顯示認證頁面(非瀏覽器窗口)。
  4. Windows 7也支持。但並不是主動彈出認證頁面,而是在網絡圖標上顯示消息,提示打開瀏覽器。然後你需要隨便訪問一個頁面(例如:http://www.163.com)即可在瀏覽器上顯示認證頁面。

一種簡單的基於HTTP重定向的Captive Portal實現

當網關收到來自客戶端的HTTP請求,例如:

GET http://www.example.com/

網關可以返回如下內容給客戶端:

<meta HTTP-EQUIV='REFRESH' content='0; url=http://<your auth server ip>/login'>

瀏覽器或操作系統會重新加載url頁面內容(就是認證頁面)。

相關開源項目


閱讀原文 | 作者官網 | 公衆號 | Feed | 訂閱 | 發私信

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章