一、打开网页,但是先不登录
二、F12打开开发者工具,点击网络,勾选保留日志(防止日志丢失)
三、登录账号,观察连接后日志的变化
根据user_account及password的值可知,这是我们登录的账号密码。并且采用的是GET方法来进行连接,复制包含账号密码的URL
由于每次分配的wlan_user_ip地址是不同的,所以需要通过psutil库来动态获取
四、安装requests、pyinstaller、psutil库
win+R 打开cmd (输入下列命令安装对应的库
pip3 install requests
pip3 install pyinstaller
pip3 install psutil
五、打开Pycharm(或其他py编译器
由于每次连接分配的ipv4地址会变,所以要通过psutil库来获取
import psutil
info = psutil.net_if_addrs()
wlan=info['WLAN'] # 获取wlan对应的ipv4地址
输出如下图:
观察到红线处就是我们需要的地址,且网络前缀是不会变化的,可以很容易的提取出地址(赋给ip
最后只需把复制的url中wlan_user_ip的值修改为ip的值
url = f"......刚刚复制的url......wlan_user_id={ip}......."
断网重连:
连接成功时,网页的title是注销页,所以只需判断title是否等于‘注销页’就可在断网时自动重新连接
(可以用time.sleep()来控制多久检测一次
完整代码:
import time
import requests
import psutil
import re # 正则表达式,用于匹配字符
info = psutil.net_if_addrs()
wlan=info['WLAN'] # 获取wlan对应的ipv4地址
for i in wlan:
for j in i:
if '10.21' in str(j):
ip = j
url = f"......刚刚复制的url......wlan_user_id={ip}......."
while True:
response = requests.get(url)
# 正则表达式,匹配<title>标签中的内容
pattern = re.compile('<title>(.*?)</title>', re.S)
title = re.findall(pattern, response.text)
if title == '注销页': # title为注销页说明已登录
time.sleep(60)
else:
requests.get(url)
六、测试
运行代码,注销登录,刷新页面查看是否自动连接
七、打包代码
1、打包为bat文件
找到刚刚运行的代码所在的目录
新建文本文件,把文本文件的后缀改为bat
然后右键编辑,输入(如下图)
!!!注意:要输入完整路径,这样才可以在任何地方都能运行,才能完成之后的开机自启动
python 你的py文件完整路径
保存
2、设置为后台运行(如果要设置自动重连的话,建议设置为后台运行文件
新建文本文件,把文本文件的后缀改为vbs
右键编辑(第二行对应的bat文件名要改为上一步创建的bat文件)
Set ws = CreateObject("Wscript.Shell")
ws.run "cmd /c D:\Python_code\auto_connection\start.bat",0
八、设置开机自启动
win + R 输入 shell:startup
跳转到开机启动文件夹,把刚刚创建的vbs文件拖到此文件夹中就好了
九、参考
自动登录校园网脚本(Python实现) - Cosmica的文章 - 知乎
https://zhuanlan.zhihu.com/p/370801224