前言
最近刷b站,看到一位up主利用python制作了一個校園網自動連接的程式,看完很是心動,想著自己也學過python,準備嘗試一下,前前后后摸索了兩天,這里分享一下實作程序,
獲取程式可直接跳轉exe與xml獲取方式
一、前期準備
匯入需要的庫
import requests #請求鏈接
import base64 #密碼加密
import os #檢查檔案路徑
import tkinter as tk
import tkinter.messagebox as msg #設定彈窗界面
requests庫安裝步驟
不知道為啥我的好像python自帶了需要的庫(也可能是我以前用過),如果運行時有缺少的庫,可以按照下述步驟安裝,這里以requests庫為例,
- 第一步:
win+R鍵打開運行視窗 - 第二布:輸入
cmd(如下圖所示)

- 第三步:輸入
pip install requests
當顯示Successfully installed requests-2.27.1則說明安裝完成,
二、檢查網路連接
在發送登錄請求之前,我們要確保電腦已經連上校園網,并且能夠正常訪問登陸界面,python代碼如下:
#檢查網路連接
def check():
url = 'http://211.69.143.97/include/auth_action.php'
try:
code = requests.get(url,timeout=5).status_code
if code == 200:
return 1
else:
return 0
except:
return 0
當函式回傳值為1時說明連接正常,否則網路連接錯誤,(可能沒有連接到校園網)
三、建立登陸賬戶
為了實作每次連接校園網時都不用重復輸入賬號密碼,我用python寫了一個建立登陸賬戶的函式,代碼如下:
#建立登陸賬戶
def account():
#生成賬戶檔案夾
if os.path.exists("D:/hzauwireless")==0:
os.makedirs("D:/hzauwireless")
#獲取賬號密碼
if os.path.isfile("D:/hzauwireless/account.txt")==0: #初始化賬戶
username = input("username:")
password = input("password:")
username = str(username)
password = base64.b64encode(password.encode('utf-8')) #base64轉碼
password = "{B}"+str(password)[2:-1]
line = [username,password]
f = open("D:/hzauwireless/account.txt","w")
f.write(username+'\n'+password)
else:
f = open("D:/hzauwireless/account.txt","r") #讀取賬戶資料
line = f.readlines()
return line
這里需要注意的是,在向網頁發送請求時,密碼經過了base64編碼,因此這里要借助base64庫將密碼進行轉碼,
建立賬戶會在D盤生成一個名為hzauwireless的檔案夾,賬號密碼資訊均儲存在檔案夾的account.txt中,
如果你的電腦沒有D盤或者不想將賬戶檔案存在D盤,可以自行修改代碼中的路徑,
四、發送請求
這是代碼的核心部分,能否成功連接校園網全靠這一部分的代碼,python代碼如下:
#發送請求
def login(username,password):
post_address = 'http://211.69.143.97/include/auth_action.php'
post_headers = {
'Connection': 'keep-alive',
'Accept': '*/*',
'User-Agent':
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.67 Safari/537.36',
'Accept-Encoding': 'gzip, deflate',
'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8',
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
}
post_data = https://www.cnblogs.com/Easterlin/archive/2022/05/29/{'action': 'login',
'username': username,
'password': password,
'ac_id': '5',
'save_me': '1',
'ajax': '1',
}
#發送登錄請求
z = requests.post(url=post_address, data=https://www.cnblogs.com/Easterlin/archive/2022/05/29/post_data, headers=post_headers)
#判斷請求結果
if"login_ok" in z.text:
show("登陸成功!")
return 1
elif "User not found" in z.text:
show("用戶名錯誤")
return 0
elif "Password is error" in z.text:
show("密碼錯誤")
return 0
elif "E2616" in z.text:
show("已欠費")
return 1 #欠費后不再重復發送請求
else:
#show("未知錯誤,報錯如下:"+"\n"+z.text)
return 0
以上就是實作校園網自動需要的三個基本部分,但為了優化界面,我還寫了一個show()函式,替換了所有的print()函式,
五、彈窗界面
這里選擇使用tkinter庫制作訊息彈窗,python代碼如下:
#定義彈窗函式
def show(str):
tk.Tk().withdraw() #洗掉多余的tk視窗
msg.showinfo(message=str)
六、撰寫主程式
這一部分就比較簡單,首先判斷網路連接,然后發送請求,
為了防止一次請求可能發生意外,我設定的發送兩次請求,
對于賬號密碼輸入錯誤的情況,我設定了三次錯誤上限,連續輸入錯誤則自動退出程式,
python代碼如下:
#主程式
if check() == 1:
i = 0 #控制回圈次數
while login(account()[0],account()[1]) == 0:
i = i+1
if i>3:
show("錯誤次數過多") #連續三次錯誤退出回圈
break
elif i == 1: #防止單次請求可能發生錯誤
continue
else:
show("請重新輸入")
os.unlink("D:/hzauwireless/account.txt")
else:
show("網路連接錯誤,請檢查網路連接")
完整python代碼
import requests
import base64
import os
import tkinter as tk
import tkinter.messagebox as msg
#定義彈窗函式
def show(str):
tk.Tk().withdraw()
msg.showinfo(message=str)
#檢查網路連接
def check():
url = 'http://211.69.143.97/include/auth_action.php'
try:
code = requests.get(url,timeout=5).status_code
if code == 200:
return 1
else:
return 0
except:
return 0
#建立登陸賬戶
def account():
#生成賬戶檔案夾
if os.path.exists("D:/hzauwireless")==0:
os.makedirs("D:/hzauwireless")
#獲取賬號密碼
if os.path.isfile("D:/hzauwireless/account.txt")==0: #初始化賬戶
username = input("username:")
password = input("password:")
username = str(username)
password = base64.b64encode(password.encode('utf-8')) #base64編碼
password = "{B}"+str(password)[2:-1]
line = [username,password]
f = open("D:/hzauwireless/account.txt","w")
f.write(username+'\n'+password)
else:
f = open("D:/hzauwireless/account.txt","r") #讀取賬戶資料
line = f.readlines()
return line
#發送請求
def login(username,password):
post_address = 'http://211.69.143.97/include/auth_action.php'
post_headers = {
'Connection': 'keep-alive',
'Accept': '*/*',
'User-Agent':
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.67 Safari/537.36',
'Accept-Encoding': 'gzip, deflate',
'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8',
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
}
post_data = https://www.cnblogs.com/Easterlin/archive/2022/05/29/{'action': 'login',
'username': username,
'password': password,
'ac_id': '5',
'save_me': '1',
'ajax': '1',
}
z = requests.post(url=post_address, data=https://www.cnblogs.com/Easterlin/archive/2022/05/29/post_data, headers=post_headers)
if"login_ok" in z.text:
show("登陸成功!")
return 1
elif "User not found" in z.text:
show("用戶名錯誤")
return 0
elif "Password is error" in z.text:
show("密碼錯誤")
return 0
elif "E2616" in z.text:
show("已欠費")
return 1 #欠費后不再重復發送請求
else:
#show("未知錯誤,報錯如下:"+"\n"+z.text)
return 0
#主程式
if check() == 1:
i = 0 #控制回圈次數
while login(account()[0],account()[1]) == 0:
i = i+1
if i>3:
show("錯誤次數過多") #連續三次錯誤退出回圈
break
elif i == 1: #防止單次請求可能發生錯誤
continue
else:
show("請重新輸入")
os.unlink("D:/hzauwireless/account.txt")
else:
show("網路連接錯誤,請檢查網路連接")
將.py檔案轉為.exe
為了后面便于聯網啟動,我們需要先將.py檔案封裝為.exe檔案,步驟如下:
- 第一步:打開cmd
- 第二步:輸入
pip install pyinstaller,安裝pyinstaller - 第三步:轉到.py檔案所在路徑
- 第四步:輸入
pyinstaller -F main.py
運行完成后可以在main.py目錄下找到一個dist檔案夾,雙擊打開后會出現一個main.exe
連接校園網后自動運行
為了使每次連接HZAU-wireless時都能正常運行exe程式,我們需要添加一些任務計劃,步驟如下:
- 第一步:
win+R打開運行,輸入compmgmt.msc打開計算機管理 - 第二步:
任務計劃程式->任務計劃程式庫->匯入任務

- 第三步:將
wifi自連.xml檔案匯入
xml制作程序
exe與xml獲取方式
點擊下載 密碼: 5gbd
tip:由于檔案型別限制,下載wifi自連.txt后需要修改一下檔案后綴,
此外,main.exe路徑默認為D:\hzauwireless,可以在wifi自連.txt進行修改,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/482146.html
標籤:其他
