Python實現(xiàn)校園網(wǎng)自動登錄的腳本分享
背景
我在的學(xué)校校園網(wǎng)登錄是web式的,即隨便打開一個網(wǎng)頁就會自動跳轉(zhuǎn)到登錄頁面,然后輸入用戶名密碼,點(diǎn)登錄,便可以上網(wǎng)了。
但這種登錄方式有個缺點(diǎn):登錄狀態(tài)不會一直保持下去。即過一段時間就會掉線,然后你需要重新登陸才行。這個時間大概是一天。
這就蛋疼了,想讓實驗室的電腦隨時保持聯(lián)網(wǎng)狀態(tài)怎么辦呢?(有時候我需要遠(yuǎn)程我的電腦)
這個時候可以用python腳本解決這個問題!
思路
寫一個死循環(huán)一直 ping 8.8.8.8,如果 ping 通說明正連著網(wǎng),進(jìn)入下一次循環(huán);如果 ping 不通,說明斷網(wǎng)了,嘗試登陸校園網(wǎng),然后進(jìn)入下一次循環(huán)。即:
ping 8.8.8.8 ---> 如果已聯(lián)網(wǎng) ---> 繼續(xù) ping 8.8.8.8 ---> …… ---> 如果斷網(wǎng) ---> 嘗試登陸 ---> 登陸成功 ---> ping 8.8.8.8 ……
腳本寫好后放到 windows 的計劃任務(wù)里設(shè)置開機(jī)啟動。
或者在linux中設(shè)置 crontab,一樣的道理。
技術(shù)點(diǎn)
- 利用 python 進(jìn)行 post 請求
- base64加密解密
- 利用 subprocess 創(chuàng)建子進(jìn)程
碎碎念
腳本在后臺運(yùn)行cpu占用大概為 1~2%,內(nèi)存占用大概為 4M 左右,完全可以接受。
當(dāng)然如果你有條件的話,運(yùn)行在內(nèi)網(wǎng)服務(wù)器上也是極好的,順便可以連個路由器出來,這樣實驗室的小伙伴能用不斷網(wǎng)的wifi了……
如果沒有服務(wù)器,樹莓派+路由器的組合也是一種解決方案~
當(dāng)然最省錢的就是我這種把腳本直接跑在自己機(jī)器上的……
代碼
#coding=utf8
import urllib,urllib2
import base64
import os , subprocess
username = '你的base64加密過的校園網(wǎng)用戶名'
password ?= '你的base64加密過的校園網(wǎng)密碼'
url = 'https://login.xxxx.edu.cn/auth_action.php' ? # 校園網(wǎng)登陸驗證地址
def isConnecting():
? ?# Judge network connect status
? ?res = subprocess.call('ping 8.8.8.8 -n 1',shell=True)
? ?return False if res else True
def Signon():
? ?# Sign on
? ?data = {
? ? ? ?'action' : 'login',
? ? ? ?'username' : base64.decodestring(username),
? ? ? ?'password' : base64.decodestring(password),
? ? ? ?'ac_id' : 1,
? ? ? ?'save_me' : 0,
? ? ? ?'ajax' : 1,
? ?}
? ?data = urllib.urlencode(data)
? ?response = urllib2.urlopen(url,data=data)
? ?response = response.read().decode('utf8')
? ?print response
def main():
? ?while True:
? ? ? ?if not isConnecting():
? ? ? ? ? ?# no-connect status, attempt sign on
? ? ? ? ? ?Signon()
if __name__=="__main__":
? ?try:
? ? ? ?main()
? ?except Exception,e:
? ? ? ?print '[ERROR]:',
? ? ? ?print e這個小腳本很簡單,主要為大家提供一個思路~
編程語言可以方便我們的生活,我想這就是它存在的價值。
到此這篇關(guān)于Python實現(xiàn)校園網(wǎng)自動登錄的腳本分享的文章就介紹到這了,更多相關(guān)Python校園網(wǎng)自動登錄內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python實現(xiàn)監(jiān)控屏幕界面內(nèi)容變化并發(fā)送通知
這篇文章主要為大家詳細(xì)介紹了如何利用Python實現(xiàn)實時監(jiān)控屏幕上的信息是否發(fā)生變化并發(fā)送通知,文中的示例代碼講解詳細(xì),感興趣的可以了解一下2023-04-04
詳解python實現(xiàn)讀取郵件數(shù)據(jù)并下載附件的實例
這篇文章主要介紹了詳解python讀取郵件數(shù)據(jù)并下載附件的實例的相關(guān)資料,這里提供實現(xiàn)實例,幫助大家學(xué)習(xí)理解這部分內(nèi)容,需要的朋友可以參考下2017-08-08
Pycharm編輯器功能之代碼折疊效果的實現(xiàn)代碼
這篇文章主要介紹了Pycharm編輯器功能之代碼折疊效果的實現(xiàn)代碼,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-10-10
Pandas 重塑(stack)和軸向旋轉(zhuǎn)(pivot)的實現(xiàn)
這篇文章主要介紹了Pandas 重塑(stack)和軸向旋轉(zhuǎn)(pivot)的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07
Python開發(fā)時報TypeError:?‘int‘?object?is?not?iterable錯誤的解決方
Python寫循環(huán)程序的時候遇到TypeError:'int'object is not iterable,所以下面這篇文章主要給大家介紹了關(guān)于Python開發(fā)時報TypeError:'int'?object?is?not?iterable錯誤的解決方式,需要的朋友可以參考下2022-06-06

