一個簡單的校園網登錄程序 || 爬蟲+tkinter

僅用於登錄中國礦業大學校園網
可以自動記錄用戶名和密碼,省去二次填寫的麻煩

  • 效果


  • 代碼

import tkinter as tk
import requests
import re
import tkinter.messagebox
import os
# 創建一個實例
window = tk.Tk()
# 檢查記錄文件
path = '存放記錄文件的地址'
temp1 = ''
temp2 = ''
flag = False # 用來標記是否有記錄文件
if(os.path.isfile(path)):
    f=open(path,'r',encoding='utf8')
    temp1 = f.readline().strip('\n')
    temp2 = f.readline().strip('\n')
    flag = True
    f.close()
# 定義用戶名和密碼
var_username = tk.StringVar(value=temp1)
var_password = tk.StringVar(value=temp2)
username = ''
password = ''
# 點擊登錄按鈕時的命令
def login():
    try:
        # 獲取wlan_user_ip
        r = requests.get("http://123.123.123.123/",timeout=1)
        r.encoding = r.apparent_encoding
        ip_list = []
        result = re.findall(r'\D(?:\d{1,3}\.){3}(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)\D', r.text)
        for rs in result:
            ret = re.search(r'((25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)\.){3}(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)', rs)
            if ret:
                ip_list.append(ret.group())
        # 獲取用戶輸入的用戶名和密碼
        username = var_username.get()
        password = var_password.get()
        # 登錄請求
        r = requests.get(
            "http://10.2.5.251:801/eportal/?login_method=1&user_account=" + username + "%40unicom&user_password=" + password + "&wlan_user_ip=" +
            ip_list[1] + "&c=Portal&a=login",timeout=1)
        # 如果沒有記錄文件,則新建一個用來存放用戶名密碼的記錄文件
        if (not flag):
            f = open(path, 'w', encoding='utf8')
            f.write(username + '\n' + password + '\n')
            f.close()
        # 檢測是否登錄成功
        r.encoding = r.apparent_encoding
        find_result = r.text.find('認證成功')
        if(find_result==-1):
            # 用戶名或者密碼錯誤
            tkinter.messagebox.askokcancel(title='提示', message='登錄失敗\n1.您可能已經聯網\n2.請檢查一下您的用戶名或密碼')
        else:
            tkinter.messagebox.askokcancel(title='恭喜!', message='連接成功!')
    except:
        # 如果已經登錄校園網,則可能會拋出超時異常
        tkinter.messagebox.askokcancel(title='提示', message='登錄失敗\n1.您可能已經聯網\n2.請檢查一下您的用戶名或密碼')
# 建立窗口
window.title("校園網登錄-CCATOM")
window.geometry('300x100')
# 創建各個控件
frame = tk.Frame(window)
t1 = tk.Label(frame,text="用戶名").grid(row=0,column=0,sticky='w',padx=5,pady=5) # 用戶名標籤
e1 = tk.Entry(frame, show=None,textvariable=var_username).grid(row=0, column=1, sticky='w',padx=10) # 用戶名輸入框
t2 = tk.Label(frame,text="密碼").grid(row=1, column=0,padx=5,pady=5) # 密碼標籤
e2 = tk.Entry(frame, show='*',textvariable=var_password).grid(row=1, column=1, sticky='w',padx=10) # 密碼輸入框
b = tk.Button(window,width = 10,text="登錄",command=login) # 登錄按鈕
frame.pack()
b.pack(anchor='center')
window.mainloop()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章