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

摘要

解釋Captive Portal是什么、為什么連上WiFi后會自動彈出認證頁面。同時,說明主流操作系統(tǒng)的支持情況。

Captive Portal

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

實現(xiàn)策略

實現(xiàn)Captive Portal的方法有很多,常見的幾種方式有:

  • DNS攔截:攔截所有DNS請求且返回認證主機IP地址(設(shè)置了強制主頁),這樣用戶訪問任何網(wǎng)站都會看到同一個強制主頁。
  • HTTP重定向:利用HTTP重定向功能將所有的HTTP請求重定向到認證主機,如此一來,用戶的發(fā)出的任何HTTP請求都會得到重定向后的強制主頁。當用戶通過認證后,便不再重定向用戶請求。
  • IP跳轉(zhuǎn):把所有IP包里的目標地址改為認證主機地址,在認證主機上進行404跳轉(zhuǎn),當然是跳轉(zhuǎn)到強制主頁了。
  • 內(nèi)核層劫持:當網(wǎng)關(guān)收到一個訪問外網(wǎng)地址(80端口)的TCP SYN請求包后,立即偽造一個來自外網(wǎng)地址的TCP ACK包??蛻舳耸盏酱藗卧斓捻憫?yīng)后會誤認為外網(wǎng)主機可以連接便再次發(fā)送ACK,此時TCP握手成功。客戶端發(fā)起請求,網(wǎng)關(guān)再次劫持后回應(yīng)ACK+PUSH包,其中就包含強制主頁。

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

單單網(wǎng)關(guān)實現(xiàn)了Captive Portal還不夠,還不能自動彈出認證頁面。需要操作系統(tǒng)支持才能實現(xiàn)在網(wǎng)絡(luò)連接后主動彈出認證頁面的功能。本人對iOS、Android、macOS以及Windows的測試結(jié)果如下:

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

一種簡單的基于HTTP重定向的Captive Portal實現(xiàn)

當網(wǎng)關(guān)收到來自客戶端的HTTP請求,例如:

GET http://www.example.com/

網(wǎng)關(guān)可以返回如下內(nèi)容給客戶端:

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

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

相關(guān)開源項目


閱讀原文 | 作者官網(wǎng) | 公眾號 | Feed | 訂閱 | 發(fā)私信

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容