自己查了一下校园网点击链接后调出浏览器认证页面的机制叫 potral 具体介绍:https://blog.csdn.net/xianweijian/article/details/49450703
反正太复杂我是看不懂,那就简单暴力点:1,把跳出的浏览器进程kill掉 2,用爬虫实现自动登陆。
首先用cmd命令选择校园网:
netsh wlan connect name=i-NUIST
注意:如果这时候直接用爬虫登陆,还来不及连上网络,所以先暂停一秒再运行,同理 先运行杀死程序时可能edge还未跳出,总之具体顺序是:打开wifi——等待一秒——自动登陆——跳出浏览器——杀死浏览器
打开网络监听器fiddler
再获得请求表单,这里密码是已经加密过的,我一开始以为是全校通用密码123321,结果没反应。。
用requests库post方法登陆。
这时potral会跳出浏览器界面让你认证,直接killtask(这里会跳出默认浏览器 我把edge设成默认以为chrome可能有别的页面以免被杀)
TASKKILL /F /IM MicrosoftEdge.exe #/F指要杀死的程序 #IM 指程序名
然后就ok了~run it 一键登陆完成
源码
1 import requests 2 import os 3 import time 4 5 def openwifi(): 6 os.system('netsh wlan connect name=i-NUIST') 7 time.sleep(1) 8 9 def killtask(): 10 os.system('TASKKILL /F /IM MicrosoftEdge.exe ') 11 12 def login(): 13 thedata={'domain':'CMCC', 14 'enablemacauth':'0', 15 'password':'xxxx', 16 'username':'batt1ebear' 17 } 18 theheader={ 19 'Host': 'a.nuist.edu.cn', 20 'User-Agent':'Mozilla/5.0 (X11; Linux x86_64; rv:55.0) Gecko/20100101 Firefox/55.0', 21 'Accept': 'application/json, text/javascript, */*; q=0.01', 22 'Accept-Language':'zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3', 23 'Accept-Encoding': 'gzip, deflate', 24 'Content-Type': 'application/x-www-form-urlencoded', 25 'X-Requested-With':'XMLHttpRequest', 26 'Referer':'http://a.nuist.edu.cn/index.php?url=aHR0cDovL2RldGVjdHBvcnRhbC5maXJlZm94LmNvbS9zdWNjZXNzLnR4dA==', 27 'Content-Length': '67', 28 29 'Cookie':'_gscu_1147341576=059821653286gq10; sunriseUsername=123441534;\ 30 sunriseDomain=NUIST;sunriseRememberPassword=true; sunrisePassword=123456;\ 31 PHPSESSID=hb0o9bkct2f6ge164oj3vj0me5;think_language=zh-CN', 32 'Connection':'keep-alive', 33 } 34 35 url="http://a.nuist.edu.cn/index.php/index/login" 36 p=requests.post(url,data=thedata,headers=theheader) 37 38 39 def main(): 40 openwifi() 41 login() 42 killtask()
os.exit(0) 43 44 main()