如何用Python socket寫登陸學校WIFI的認證程序?

問題背景是這樣子的:

我們學校上WIFI的時候,需要打開瀏覽器輸入 (學號,密碼) 登錄上網。

現在需要用python寫一個模擬登錄的程序(只用socket 模塊),就是連上WIFI後不需要再打開瀏覽器輸入密碼,直接運行程序就行。我們學校的登錄網頁是這樣子的。

我這幾天的摸索是這樣想的:

1.先用GET獲取一個header(應該是一些登錄信息)

2.在這個header後面加上自己的 學號,用戶名,還有login

3.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-WPF

https://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表?
怎麼看待霧計算?

TAG:Python | 計算機 | 計算機網路 | 網路編程 |