如何用Python優(yōu)雅的登錄校園網(wǎng)?
回復(fù)“書籍”即可獲贈Python從入門到進(jìn)階共10本電子書
前言
今天這篇文章的思路來源于校園網(wǎng),很多的校園網(wǎng)在每次連接時都需要進(jìn)入一個網(wǎng)址進(jìn)行登錄,這個步驟真的是非常非常的麻煩(大學(xué)生都懂~)。所以這次來教大家如何實現(xiàn)一鍵登錄校園網(wǎng)。
一鍵登錄校園網(wǎng)
首先我們來看下整個的流程。首先需要進(jìn)行網(wǎng)絡(luò)連接,連接之后會跳轉(zhuǎn)到一個網(wǎng)址,也就是校園網(wǎng)登錄的網(wǎng)址。

然后輸入賬號密碼登錄。
我們需要做到的效果就是點擊一個可執(zhí)行文件然后實現(xiàn)校園網(wǎng)的自動登錄。(這里的可執(zhí)行文件在mac中為excu文件、win中為exe)
我們首先解決如何通過Python進(jìn)行登錄,然后再解決打包的問題。
其實對于Python的登錄,會爬蟲的朋友應(yīng)該很快就知道直接通過requests進(jìn)行表單提交即可。
首先,我們抓包獲取校園網(wǎng)登錄提交表單的地址:

同時,我們也拿到需要提交的表單格式,有些學(xué)校的校園網(wǎng)可能需要通過驗證碼驗證,一般不會有很復(fù)雜的驗證方式,如果需要驗證,那么需要去破解一下驗證碼,https://github.com/hellokuls/cnnyzm。這里給出我之前寫的驗證碼破解案例。

拿到了之后就好辦了,直接post模擬提交就行了,這里我給出我所寫的代碼,基本的邏輯都是差不多,大家只需要改成自己學(xué)校的相關(guān)信息就可以了。
#?encoding:?utf-8
import?requests
#?檢查是否連接入校園網(wǎng)
def?checkinternet():
????url?=?'xxxxxxxxxxxxxxxxxxxxxx'??#校園網(wǎng)登錄的地址,用來測試是否連接校園網(wǎng)?
????try:
????????code?=?requests.get(url,?timeout=5).status_code
????????if?code?!=?200:
????????????print('沒有網(wǎng)絡(luò)哦~')
????????????return?0
????????elif?code?==?200:
????????????return?1
????????else:
????????????return?2
????except:
????????return?2
def?login(username,?password):
????url?=?'xxxxxxxxxxxxxxxxxx'?#?校園網(wǎng)表單提交url
????postdata={
????????'action':?'login',
????????'ac_id':?1,
????????'user_ip':'',
????????'nas_ip':'',
????????'user_mac':'',
????????'username':?username,
????????'password':?password,
????????'save_me':?'0',
????????'ajax':?1
????}
????res?=?requests.post(url,?data=postdata)
????res.encoding?=?res.apparent_encoding
????res?=?res.text
????if?'login?ok'?in?res:??#?如果存在該字段
????????res?=?"登錄成功!"
????????return?res
????if?'5分鐘'?in?res:??#?多次錯誤提交可能會導(dǎo)致賬戶鎖定5分鐘
????????print("登錄失?。?)
????????return?res
????if?'E2620'?in?res:???#?此處是賬號已經(jīng)在別的設(shè)備登錄的情況,先注銷然后再次登錄
????????logout(url,?username,?password)
????????return?login(username,?password)
????return?res
#?退出當(dāng)前賬號的登錄
def?logout(url,?username,?password):
????logout_data?=?{
????????'action':?'logout',
????????'username':?username,
????????'password':?password,
????????'ajax':?1
????}
????res1?=?requests.post(url,?data=logout_data)
????res1.encoding?=?res1.apparent_encoding
????res1?=?res1.text
????print("賬戶已退出!")
if?__name__?==?'__main__':
????status?=?checkinternet()
????if?status?==?0:
????????txt?=?login(xxxxx,?xxxxxxxx)?#?輸入賬號密碼
????????print(txt)
????elif?status?==?1:
????????print("有網(wǎng)絡(luò)!")
????????txt?=?login(xxxxxxx,?xxxxxxx)
????????print(txt)
????else:
????????print("未知結(jié)果!")
講解完了代碼部分,我們該如何將它打包成一個可執(zhí)行文件直接通過點擊就可以進(jìn)行聯(lián)網(wǎng)呢?
這里推薦一個庫---pyinstaller
pip?install?pyinstaller
這個庫能夠?qū)y文件直接打包成可執(zhí)行文件,支持win/mac/linux平臺。
當(dāng)我們寫完文件后執(zhí)行下面命令:
pyinstaller?-F?文件名.py
執(zhí)行完后,我們可以看到生成了幾個文件夾,而可執(zhí)行文件就在dist文件夾中。

放在桌面上,每次連接直接點擊一下就可以連接校園網(wǎng)了~
-------------------?End?-------------------
往期精彩文章推薦:
如何利用Scrapy爬蟲框架抓取網(wǎng)頁全部文章信息(中篇)
如何利用Scrapy爬蟲框架抓取網(wǎng)頁全部文章信息(上篇)
關(guān)于Scrapy爬蟲框架中meta參數(shù)的使用示例演示(上)
關(guān)于Scrapy爬蟲框架中meta參數(shù)的使用示例演示(下)

歡迎大家點贊,留言,轉(zhuǎn)發(fā),轉(zhuǎn)載,感謝大家的相伴與支持
想加入Python學(xué)習(xí)群請在后臺回復(fù)【入群】
萬水千山總是情,點個【在看】行不行
/今日留言主題/
你一般是怎么登錄校園網(wǎng)的呢?
