如何用Python socket寫登陸學校WIFI的認證程序?
01-15
問題背景是這樣子的:
我們學校上WIFI的時候,需要打開瀏覽器輸入 (學號,密碼) 登錄上網。現在需要用python寫一個模擬登錄的程序(只用socket 模塊),就是連上WIFI後不需要再打開瀏覽器輸入密碼,直接運行程序就行。我們學校的登錄網頁是這樣子的。我這幾天的摸索是這樣想的:1.先用GET獲取一個header(應該是一些登錄信息)2.在這個header後面加上自己的 學號,用戶名,還有login3.POST header 不知道這個對不對,如果對,求講解,我不會寫程序(基本的socket會一點,就是如果和HTTP聯繫起來,就暈了)。如果不對,求正確的步驟。最好有個程序代碼講解一下。謝謝了
-----------------------------------------------------分割線----------------------------------------------這個程序是學長讓俺寫的,跟學長扯了一下,稀里糊塗應該算過了,不知道寫這個程序的用意是什麼,可能是想測一下自己的自學能力吧。總之,這個問題就到這了,感謝每一位回答過問題的學長或同學,謝謝。
https://github.com/XGHeaven/i-hdu-wifi-login
請善於使用 最大的同性交友平台
====反對其他答案, HDU 這玩意驗證地址不是固定的…====上面代碼只能解決大多數情況…因為 HDU 坑爹的使用了不符合規範的驗證 ,導致部分情況下出現很奇怪的狀況(自己在教學區搭私人wifi 觸發奇怪現象幾率超高),正試圖繞開驗證中杭電?
很簡單,先用ping解析ip地址。根據ip用wireshark抓包,看下發出去的報文內容,自己構造就好了。用request庫就行。https的話另想轍。
我登自己學校的,整個腳本代碼一共50行不到,而且還加了好幾層函數調用。這種簡單問題不需要解析http,也不需要知道http原理。
先抓包看看你是怎麼到這個頁面的,然後post上傳了什麼信息,又返回了什麼信息,照葫蘆畫瓢用tcp socket固定發一些信息就可以,不管是get還是post命令都直接在代碼里寫死就行。這種方法當然不規範,可是簡單粗暴快速,在很多時候可以這麼搞這個簡單,只需要用fiddler或者Firefox的httpfox插件進行抓包就行,然後用Python的requests包(這個包比urllib2好用)進行post登陸
以前我嘗試過模擬登陸自己學校的網關...失敗了...提示是認證失敗....我成功模擬登陸過知乎和quora...不知道網關是不是和其它的網站登陸程序有差別,還是僅僅是我水平不夠....我用的是IE自帶的抓包插件,python的requests庫
做過類似的。
https://github.com/lalxyy/NEU-IPGW-Login-WPFhttps://github.com/lalxyy/NEU-IPGW-Login-iOS用fiddler抓包,用requests模擬http,如果抓到的結果發現瀏覽器大量用到了javascript導致不好模擬,就用casperjs
之前寫過類似的Python腳本,感覺用socket太底層了,推薦使用 python里的urllib和http庫來解決。主要方法還是 用 flidder或者wireshark 截包,看下http request和response裡面都有什麼內容,然後在代碼裡面構造就ok。
銳捷無線web認證好像挺複雜的。一直沒搞定。
附:後來用curl連接,把認證頁form里的參數都傳上去,終於連上了。用request session搜索例子
mechanize + Python 2 (mechanize 還沒port到Python 3)10幾行碼的事情吧
這個一定要用py做么,感覺你說的好麻煩
我們學校聯通的「寬頻」也是需要類似的網頁登錄。不能使用PPPoE連接。
我感覺就是一種計時收費的區域網。
正在想辦法實現「保持登錄」,省得每次開機登錄。發送post數據進行登錄,如果有定時檢測,那麼再增加一個定時器,與伺服器進行交互,這樣就可以在線了吧
抓個包。找個http的庫,把數據發過去
推薦閱讀:
※計算機學生學編程,覺得吃了夾生飯,雜亂不成系統,不知道應該學什麼、達到什麼水平,求指路?
※如何評論PlayStation Now本月末登陸PC?
※跟計算機有關的專業學什麼好?
※Linux動態鏈接為什麼要用PLT和GOT表?
※怎麼看待霧計算?