一个简单的校园网登录程序 || 爬虫+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()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章