import os import pickle import requests import re import base64 DOMAIN = 'http://192.168.1.1/' USERNAME = 'yourusername' PASSWORD = 'yourpassword' HEADERS = { 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.60 Safari/537.36', 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9', 'Accept-Encoding': 'gzip, deflate' } # get random def get_random(session): cnt = session.get(url=DOMAIN+'asp/GetRandCount.asp').content.decode('utf-8-sig') return cnt # get login cookie def get_cookie(session, cnt): payload = {'UserName': USERNAME, 'PassWord': base64.b64encode(str.encode(PASSWORD)),'Language': 'chinese', 'x.X_HW_Token' : cnt} save_cookies(session.post(url=DOMAIN+'login.cgi', data=payload).cookies,'cookie.txt') # get ont temperature def get_opticinfo(session): x = session.get(url=DOMAIN+'html/amp/opticinfo/opticinfo.asp', cookies=load_cookies('cookie.txt')).content.decode('utf-8-sig') opticinfos = re.findall('var opticInfos = new Array\(new stOpticInfo\("InternetGatewayDevice.X_HW_DEBUG.AMP.Optic","(.*)","(.*)","(.*)","(.*)","(.*)","(.*)","(.*)","(.*)","(.*)","(.*)","(.*)","(.*)","(.*)","(.*)","(.*)"\),null\);',x) return opticinfos def save_cookies(cookiejar, filename): with open(filename, 'wb') as f: pickle.dump(cookiejar, f) def load_cookies(filename): with open(filename, 'rb') as f: return pickle.load(f) session = requests.Session() session.headers = HEADERS if not os.path.isfile('cookie.txt'): get_cookie(session, get_random(session)) opticinfo = get_opticinfo(session) if not opticinfo: get_cookie(session, get_random(session)) opticinfo_tmp = get_opticinfo(session) print(opticinfo_tmp[0][4]) else: print(opticinfo[0][4])