江理校园网登录认证

我们学校用的是网页认证,首先打开浏览器进入认证页面,按F12打开控制台,登录然后抓包,找到需要的url,多试几次可以知道认证登录需要账号,密码和ip这三个东西,而在三个里面只有ip会一直变化,下面就可以写脚本了 。
首先是ip,每次连上校园网后ip都会变,因此每次连接后都需要获取一次本机ip,之后再把ip给到标签当中
import sockets = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)# 获取ips.connect(("8.8.8.8", 80))print("本机ip:", s.getsockname()[0])wlan_user_ip = s.getsockname()[0]
然后是账号和密码,发送账号和密码很简单,但是如果每次登陆都需要重复输入密码就很麻烦,一点都不便利,所以就要有一个可以保存输入的账号密码的机制,这里用write建立一个读取而且便于修改的机制(指在txt中改密码)

江理校园网登录认证

文章插图
import osimport linecache# 先检测有没有保存的账号密码在,如果没有就新建一个if os.path.exists("账号密码.txt") == True:filename = "账号密码.txt"text_1 = linecache.getline(filename, 1) # 分别逐行读取账号和密码text_2 = linecache.getline(filename, 2)print("登录信息:")print(text_1, text_2)else:with open("账号密码.txt", "w") as f:print("第一次使用需输入密码,需要修改账号信息请在同一文件夹下的“账号密码”内修改")name = input("请输入账号(一卡通号@telecom(电信) cmcc(移动) unicom(联通) 示例:123456@telecom ):")password = input("请输入密码:")user = name + '\n' + passwordf.write(user)f.close()filename = "账号密码.txt"text_1 = linecache.getline(filename, 1)text_2 = linecache.getline(filename, 2)print(text_1, text_2)passpass
把上述内容整合起来再用发送,就得到了一个最基础的认证脚本
import osimport linecacheimport requestsimport timeimport sockets = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)# 获取ips.connect(("8.8.8.8", 80))print("本机ip:", s.getsockname()[0])wlan_user_ip = s.getsockname()[0]if os.path.exists("账号密码.txt") == True:filename = "账号密码.txt"text_1 = linecache.getline(filename, 1)text_2 = linecache.getline(filename, 2)print("登录信息:")print(text_1, text_2)else:with open("账号密码.txt", "w") as f:print("第一次使用需输入密码,需要修改账号信息请在同一文件夹下的“账号密码”内修改")name = input("请输入账号(一卡通号@telecom(电信) cmcc(移动) unicom(联通) 示例:123456@telecom ):")password = input("请输入密码:")user = name + '\n' + passwordf.write(user)f.close()filename = "账号密码.txt"text_1 = linecache.getline(filename, 1)text_2 = linecache.getline(filename, 2)print(text_1, text_2)passpassurl = 'http://eportal.jxust.edu.cn:801/eportal/portal/login?callback=dr1003&login_method=1&user_account=%s&user_password=%s&wlan_user_ip=%s&wlan_user_ipv6=&wlan_user_mac=000000000000&wlan_ac_ip=&wlan_ac_name=&jsVersion=4.1.3&terminal_type=1&lang=zh-cn&v=3008&lang=zh' % (text_1, text_2, wlan_user_ip)headers = {"Accept": "*/*","Accept-Encoding": "gzip, deflate","Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6","Cache-Control": "no-cache","Connection": "keep-alive","Host": "eportal.jxust.edu.cn:801","Pragma": "no-cache","Referer": "http://eportal.jxust.edu.cn/","User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36",}rea = requests.get(url=url, headers=headers)print(rea.text)print("15秒后自动关闭")time.sleep(15)
本来到这里就结束了,但是很多时候电脑开机时并不会主动连接校园网,手动连接大概率会自动弹出认证页面来,再用脚本就显得很多余,所以这里再加上一个自动连接的功能