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 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
| import requests, re
def Time(): import time t = time.time() return int(round(t*1000))
class CUMT():
def __init__(self, user, password, company): self.user = user self.password = password self.company = company
if not self.check_status(): self.login()
def check_status(self): ''' 判断是否在线 简单模拟http://10.2.5.251/a41.js?version=1592541085614 中的checkStatus函数 ''' self.check_time = Time() check_url = 'http://10.2.5.251/drcom/chkstatus?callback=dr{}'.format(self.check_time) print('检测登录状态的网址为:', check_url) check_html = requests.get(check_url) status = re.search(r'"result":(\d),', check_html.text).group(1) if status == '1': print('!!!目前已在线!!!') return True else: print('!!!目前未在线!!!') return False
def login(self):
test_url = 'http://baidu.com' test_html = requests.get(test_url) login_page_url = re.search(r"<script>top\.self\.location\.href='(.+?)'</script>", test_html.text).group(1) print('登录页网址为:', login_page_url)
wlan_user_ip = re.search(r'wlanuserip=(.+?)&', login_page_url).group(1) wlan_user_mac = re.search(r'mac=(.+?)&', login_page_url).group(1) wlan_ac_name = re.search(r'wlanacname=(.+?)&', login_page_url).group(1) login_time = Time()
login_url = 'http://10.2.5.251:801/eportal/?c=Portal&a=login&callback=dr{}&login_method=1&user_account={}%40{}&user_password={}&wlan_user_ip={}&wlan_user_mac={}&wlan_ac_ip=&wlan_ac_name={}&jsVersion=3.0&_={}'.format(self.check_time, self.user, self.company, self.password, wlan_user_ip, wlan_user_mac, wlan_ac_name, login_time) print('登录请求为:', login_url) res = requests.get(login_url) print('响应包为:', res.content.decode('utf-8'))
user = '学号' password = '密码' company = 'unicom'
c = CUMT(user, password, company)
|