更新后的校园网老断,用python写了个自动联网的脚本。
更新
- 2022-1-7 09:27:49 学校的联网入口改了,故而改成最新的了。
问题简述
本问题的实质是利用python的requests模块模拟发出联网的请求。
准备工作
需要
Chrome
浏览器python
3.6及以上版本- python的
requests
模块
抓包
在这里以某大学校园网为例
- 用
Chrome
打开校园网登陆页面,并按F12
进入开发者模式
- 进入
network
选项卡,并勾选Preserve log
选项
- 登陆校园网,可以看到下面出来很多东西,这些其实是我们登陆过程中发送和接受到的所有请求
- 找到含
login
的请求,点击查看,打开header选项卡,找到Request Headers
和Query String Parameters
两部分
准备
安装requests
模块
pip install requests
程序
将Request Headers
和Query String Parameters
里面的内容填入下面的代码里
# -*- coding:utf-8 -*-
__author__ = 'joe_zhouman'
import os
import time
import requests
class Login:
# 初始化
def __init__(self):
# 检测间隔时间,单位为秒
self.every = 60
# 模拟登录
def login(self):
print(self.getCurrentTime(), u"拼命连网中...")
url = "http://10.0.1.5/drcom/login"
# 消息头
headers = {
'Accept': "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript, */*; q=0.01",
'Accept-Encoding': "gzip, deflate",
'Accept-Language': "zh-CN,zh;q=0.9",
'Connection': "keep-alive",
'Cookie': "PHPSESSID=p743j2ds11nc93vn0vg8f5vs46",
'Host': "10.0.1.5",
'Referer': "http://10.0.1.5/a79.htm?isReback=1",
'User-Agent': "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.80 Safari/537.36",
'X-Requested-With': "XMLHttpRequest"
}
# key value
kv = {
'callback': "dr1356976306480",
'DDDDD': "",##改成自己的账号
'upass': "",##改成自己的密码
'0MKKey': "123456",
'R1': "0",
'R3': "0",
'R6': "0",
'para': "00",
'v6ip': "",
'_': "1356976296832"
}
try:
requests.get(url, params=kv, headers=headers)
print(self.getCurrentTime(), u'连上了...现在开始看连接是否正常')
except:
print("error")
# 判断当前是否可以连网
def CanConnect(self):
try:
exit_code = os.system('ping www.baidu.com')
if not exit_code:
return True
else:
return False
except:
print('error')
# 获取当前时间
def getCurrentTime(self):
return time.strftime('[%Y-%m-%d %H:%M:%S]', time.localtime(time.time()))
# 主函数
def main(self):
print(self.getCurrentTime(), u"Hi,欢迎使用自动登陆系统")
can_connect = self.CanConnect()
while not can_connect:
print(self.getCurrentTime(), u"未能连接网络,请重试...")
self.login()
can_connect = self.CanConnect()
time.sleep(self.every)
print(self.getCurrentTime(), u"联网成功...")
login = Login()
login.main()
运行程序,大功告成。
开机启动
建立一个.bat
文件,在里面写上
python "{PyFilePath}"
如我的
在windows的
任务计划程序
中新建一个定时启动的任务,按下图设置:
)
这里的
启动程序
就是你之前建立的.bat
文件.
其余的按默认设置即可.
说明
本程序针对校园网的登陆请求为get
,一般还有很多使用post
请求的。请求类型同样可以在上面的header里查看。
如果有需要的话,可以再写个程序。
问题
Q: python
,pip
命令无效?
A: 把python
,pip
路径加入环境变量path
中,pip
一般在python
安装路径下面的Scripts
文件夹中
本文由 joe_zhouman 创作,采用 知识共享署名4.0
国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
最后编辑时间为:2021-01-13 10:15:16