在学校里应为校园网需要在网页上进行认证登录,即使在挂着路由器的基础上也会在48小时自动注销,这对我的网站连通性有一定影响。秉持着能懒则懒的原则,我利用Python编写了一个自动认证程序。
此方法一般来说仅适用于网页POST方法认证,不适用于客户端软件认证!
此代码请配合我的相关教学视频使用:https://www.bilibili.com/video/BV1794y1C74Q
以下是相关代码:
PUT方法
防断网版本:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
| import requests import time
while True : #循环检测 try: status=requests.get('https://baidu.com/') #测试拉取首页是否成功,可以更换成其他网站 print(status.status_code) time.sleep(30) #如果成功,30S后再次检测网络是否通畅 except: #若网络不通,尝试网络注册 try: time.sleep(10) status=requests.get('https://bilibili.com/') #测试拉取首页是否成功,可以更换成其他网站 print(status.status_code) time.sleep(30) #如果成功,30S后再次检测网络是否通畅 except: try: time.sleep(10) status=requests.get('https://www.gov.cn/') #测试拉取首页是否成功,可以更换成其他网站 print(status.status_code) time.sleep(30) #如果成功,30S后再次检测网络是否通畅 except: try:#尝试认证 url = 'http://IP/###' #更改这里的URL到你的实际认证网址,POST表单传到什么网站就用这个 data={ "DDDDD":"123456789@ISP", "upass":"123456", "R1":"0", "R2":"", "R3":"0", "R6":"0", "para":"00", "0MKKey":"123456", "buttonClicked":"", "redirect_url":"", "err_flag":"", "username":"", "password":"", "user":"", "cmd":"", "Login":"", } #发送表单。请修改表单信息 #这里的表单信息是啥就传啥,基本上都是不一样的,不必担心 conn=requests.post(url=url,data=data) #发送请求 time.sleep(15) #15S秒后再次尝试拉取首页来测试网络,如果不通,继续认证并循环 except:#如果认证失败再次尝试检测网络并认证 print("timeout!") continue time.sleep(30) #以上sleep语句为了避免频繁请求,可适当更改
|
仅单次认证版本:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| import requests
url = 'http://IP/###' #更改这里的URL到你的实际认证网址,POST表单传到什么网站就用这个 data={ "DDDDD":"123456789@ISP", "upass":"123456", "R1":"0", "R2":"", "R3":"0", "R6":"0", "para":"00", "0MKKey":"123456", "buttonClicked":"", "redirect_url":"", "err_flag":"", "username":"", "password":"", "user":"", "cmd":"", "Login":"", } #发送表单。请修改表单信息 #这里的表单信息是啥就传啥,基本上都是不一样的,不必担心 conn=requests.post(url=url,data=data)
|
GET方法
防断网版本:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| import requests import time
while True: # 循环检测 try: status1 = requests.get('https://baidu.com/') # 测试拉取首页是否成功,可以更换成其他网站 print(status1.status_code) time.sleep(30) # 如果成功,30S后再次检测网络是否通畅 except: # 若网络不通,尝试网络注册 try: # 测试拉取首页是否成功,可以更换成其他网站 status2 = requests.get('https://bilibili.com/') print(status2.status_code) time.sleep(30) # 如果成功,30S后再次检测网络是否通畅 except: try: # 测试拉取首页是否成功,可以更换成其他网站 status = requests.get('https://www.gov.cn/') print(status.status_code) time.sleep(30) # 如果成功,30S后再次检测网络是否通畅 except: print("Fail!") try: urllogout = 'http://IP&URL'#这里写入注销GET地址 disconn = requests.get(url=urllogout) time.sleep(15) #防止认证服务器速率限制,等待15S urllogin = 'http://IP&URL'#这里写入认证GET地址 conn = requests.get(url=urllogin) print('Try to login the net successfully!') except: #如果认证失败再次重新检测并认证 continue time.sleep(30)
|
仅单次认证版本:
1 2 3 4 5 6 7 8 9 10 11 12
| import requests import time
urllogout = 'http://IP&URL' disconn = requests.get(url=urllogout) print(disconn.text) time.sleep(15) urllogin = 'IP&URL' conn = requests.get(url=urllogin) print(conn.text) print('Try to login the net successfully!')
|