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

