概要
一关电脑,校园网就给你断了,对这种不太聪明(极其s~b)的操作很无语(he~tui~)忍不了了,趁着最近刚学完爬虫,搞了自动登陆小程序,我是菜鸟,大佬轻喷。
整体架构流程
获取请求头--->提交数据--->打包成软件--->任务计划程序。
技术流程
现在请打开你们的浏览器进入到登陆页面(先不要提交,不要提交,不要提交),提交了的给我退出登陆重来,并打开调试窗口(F12,或者Fn+F12),长得不一样不重要,大致是这个样子,我用的谷歌浏览器,然后两步走,中文的话第一步点《网络》就行
然后就来到了这个样子,咋们找到框框里面绿条最长的那个(一般来说)点进去,如果下一步没有你想要的信息那可能不是这个,一个一个试一下。
首先找到Request Headers字段,请记住这个字段,把他完整的复制下来,有些网站可能不叫这个名字,不过无所谓,认准Headers就行了
然后找到Form Data字段,同样保存下来,找不到就往下翻翻,总会找到的嘿嘿。
找到Request字段,这是待会代码中要用的网址,记住他!!
代码
请认真看代码,没有的库自己安装一下
import subprocess
import requests
import socket
import time
#获取本机ip
def get_host_ip():
try:
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(('10.255.255.255', 1))
ip = s.getsockname()[0]
finally:
s.close()
return ip
user_ip = get_host_ip()
# 校园网地址,最好不要用浏览器里的url,还是建议抓包获取
post_addr = "这是上面让你记住的网址,填进来"
# 下面两个大括号里面都是复制自己学校校园网登录网站中的,冒号两边都要加上双引号,字段可能有些不一
#样不过无所谓,有些字段啥也没有,但是你也要打个双引号
post_header = {
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
'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': 'max-age=0',
'Connection': 'keep-alive',
'Content-Length': '391',
'Content-Type': 'application/x-www-form-urlencoded',
'Cookie': 'JSESSIONID-BOSS-2=386C527188F5E01ADA0B6E11C752AFAB; remeberMeCookie=b53fd714e8b5eeddafc11c04225b3da5c9499e45673b2159882231430db45b5b0ac2414e5db35a60f93603296a85107a; portal_token=b53fd714e8b5eeddc38359f1fc663dc6ac90e96ae9f4227d2dda92239b378c456db5d0aa4895ba28',
'Host': '172.16.253.55',
'Origin': 'http://172.16.253.55',
'Referer': 'http://172.16.253.55/portal.do?wlanacname=000000021.210.00&wlanuserip=172.20.149.161&wlanparameter=38.68.93.87.96.dc&usermac=38:68:93:87:96:dc',
'Upgrade-Insecure-Requests': '1',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36 Edg/106.0.1370.42',
}
post_data = {
'hostIp': 'http://127.0.0.1:8082/',
'loginType':'',
'auth_type': '0',
'isBindMac1': '1',
'pageid': '1',
'templatetype': '1',
'listbindmac': '1',
'recordmac': '0',
'isRemind': '1',
'loginTimes':'' ,
'groupId': '',
'distoken': '',
'echostr': '',
'url': '',
'isautoauth': '',
'notice_pic_loop1': '/portal/uploads/pc/demo3/images/logo.jpg',
'notice_pic_loop2': '/portal/uploads/pc/demo3/images/rrs_bg.jpg',
'userId': '我的账号(手动屏蔽)',
'passwd': '我的密码(滑稽)',
'twiceauth': '1',
'remInfo': 'on',
} # 负载中的表单数据
#提交数据
z = requests.post(post_addr, data=post_data, headers=post_header)# 提交http请求报文
#PING一下百度看看有没有连接成功
backinfo = subprocess.call('ping www.baidu.com -n 1', shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
if backinfo:
print('网络未连接')
else:
print("登录校园网成功,当前IP地址为:"+str(user_ip))
代码就是这个,咋们运行一下,不出意外的话肯定成功了
废话不多说,直接下一步,(copy一段话)
Pyinstaller是一个十分有用的Python第三方库,它能够在windows、Linux、MacOS X 等操作系下将Python源文件(即.py文件)打包,变成直接可运行的可执行文件。通过对源文件打包,Python程序可以在没有安装Python的环境中运行,也可以作为一个独立文件方便传递和管理。Pyinstaller需要在命令行下用pip工具安装,安装如下:如何使用点我,题主懒哈哈哈
pip install PyInstaller
OK,兄弟们,默认你们已经打包好了哈哈哈。接下来到最后一步,找到你电脑上的任务计划程序,我这是win11的,win10的好像也是一样的,俺直接搜的,打开它
任务计划程序库---创建任务---名称,把我图中勾选的都整起。
然后点触发器,编辑一下,搞成我这样的条件
点击操作新建一下,位置你是的校园网程序的位置
完了之后在任务计划程序库里面看得见,到这就结束啦。以后每次打开笔记本都会自动连接校园网,烦人的弹窗再也不见了,美滋滋。
小结
代码还可以优化一下,假如出门在外随时需要连接的脑的话,也可以让它定时执行程序啥的,把触发条件改改就行了。ok,别忘了点个赞,兄弟们。