WIFI Captive Portal登錄


開頭

關於 ANDROID 5.0-7.1.2 網絡圖標上的感嘆號及其解決辦法-狐狸的小小窩

HTTP狀態碼之204 No Content

 

原理

訪問generate_204地址,如果得到狀態碼是204則網絡暢通。 

           如果不是,則需要認為需要登錄

但是以下測試讓我有點懵逼

 

測試

請自行下載curl工具

在未登錄的情況下,我們訪問generate_204地址試試,如:
C:\WINDOWS\system32>curl http://edge.microsoft.com/captiveportal/generate_204
<html>
<head>
<meta http-equiv="Cache-Control" contect="no-cache">
<meta http-equiv="Pragma" contect="no-cache">
<meta http-equiv="Expires" contect="0">
<script type="text/javascript">
location.replace("http://這里是WIFI登錄地址");
</script></head><body>
</body></html>

C:\WINDOWS\system32>

 

發現可以直接得到跳轉的地址(即WIFI Portal登錄地址)

關於函數location.replace() 見: https://developer.mozilla.org/zh-CN/docs/Web/API/Location/replace

 

 

而登錄WIFI之后,再訪問204地址則是得到空內容


C:\WINDOWS\system32>curl http://edge.microsoft.com/captiveportal/generate_204

C:\WINDOWS\system32>

 

 

抓包結果

所以有沒有人告訴我為什么訪問204地址能得到登錄地址呢?以下是Fiddler抓包內容

 好像是直接返回帶有302的狀態碼的響應報文(Response)?

 

那么它的實現原理應該就是攔截了未登錄用戶的所有http請求並返回302(HTTP重定向)?

 試了一下未登錄時curl baidu.com也是返回302,但是curl https://baidu.com卻不返回,也就是說不能劫持https請求?

疑問:那204的https只是用來驗證網絡通暢性?http才能用來驗證網絡通暢性並登錄?不清楚,這個得拿到源碼才知道。

 

 

 

相關資料

可用的204地址有:

http://connect.rom.miui.com/generate_204

http://connectivitycheck.platform.hicloud.com/generate_204

http://edge.microsoft.com/captiveportal/generate_204

 

非204——檢測連通性地址

http://www.msftncsi.com/ncsi.txt

http://detectportal.firefox.com/success.txt

 

 可能有用的資料:

https://gmd20.github.io/blog/Wifi熱點強制登錄認證頁面captive portal相關資料
當您的計算機連接到公司網絡或公共網絡時,將打開 Internet Explorer 或 Edge 網頁-微軟

https://wenku.baidu.com/view/be00908884868762caaed57f.html

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

安卓O源碼之http://androidxref.com/8.0.0_r4/xref/frameworks/base/services/core/java/com/android/server/connectivity/NetworkMonitor.java?a=true&h=

 好像還有判斷portal登陸是否支持https的代碼,見

http://androidxref.com/8.0.0_r4/xref/frameworks/base/services/core/java/com/android/server/connectivity/NetworkMonitor.java#mUseHttps

 的914行附近


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM