#!/usr/bin/python # -*- coding: UTF-8 -*- '''################################## tp link / {"login":{"encrypt_type":1,"password":"h6m5ElVjhitXbzPz00jCoNLGAA4MkoPmt81ZMxPqT3DT%2F%2BsbF%2BLPEndrACsLpMuGyh30Y2uGyD59ZN%2BvdxEXiMvXb%2BvWwbW9SuG27Ej38edXBIHHh2fAHpqE4wpNnK%2BwGkoV%2FU1U624M3Mc4zg2dU%2BUWGHfe%2B0haMj31pSVnMQo%3D"},"method":"do"} 響應 {"stok":"c43f7f0011cc41ef76ac665fa63898cd","error_code":0} POST http://192.168.1.*/stok=3a431d10fe0dfe66627cb3b9bfd56b7d/ds /* Host: 192.168.1.* User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:73.0) Gecko/20100101 Firefox/73.0 Accept: application/json, text/javascript, */*; q=0.01 Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2 Accept-Encoding: gzip, deflate Content-Type: application/json; charset=UTF-8 X-Requested-With: XMLHttpRequest */ Content-Length: 40 /* Origin: http://192.168.1.* Connection: keep-alive Referer: http://192.168.1.*/ */ {"system":{"reboot":null},"method":"do"} 響應 {"wait_time":65,"error_code":0} ##################################''' ############ python3. ############# import os import time import urllib import urllib.request import json ###############################configs#################################### ip="192.168.1.*" limit_time=2 on=2 ###############################libs#################################### import subprocess def cmd(cmd,t=0): os.system(cmd) return 0 p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) if(t>0): time.sleep(t) stdout, stderr = p.communicate() exit_code = p.returncode def urllib_use(url,mode="get",data=""): print("urllib use") ''' data={ "abc":"XXXXX", "efg":"XXXXX" } ''' #headers = {} #headers = {'Content-Type': 'application/json'} # 設置請求頭 if(mode=="get"): request = urllib.request.Request(url=url, data=None, timeout=10) elif(mode=="post"): #request = urllib.request.Request(url=url, headers=headers, data=json.dumps(data).encode(encoding='UTF8')) # 須要經過encode設置編碼 要不會報錯 request = urllib.request.Request(url=url, data=json.dumps(data).encode(encoding='UTF8')) response = urllib.request.urlopen(request) # 發送請求 result = response.read().decode() # 讀取對象 將返回的二進制數據轉成string類型 print(result) def file_append(content,file_url='log.txt',encoding = 'utf-8'): fo = open(file_url,'a+',encoding = encoding) fo.write(content+"\n\r--------------------------------------------\n\r") fo.close() file_append(result) return result ##################################steps################################################ # cmd('netsh wlan connect name="******"') # time.sleep(10) post_data={ "login":{"encrypt_type":1,"password":"h6m5ElVjhitXbzPz00jCoNLGAA4MkoPmt81ZMxPqT3DT%2F%2BsbF%2BLPEndrACsLpMuGyh30Y2uGyD59ZN%2BvdxEXiMvXb%2BvWwbW9SuG27Ej38edXBIHHh2fAHpqE4wpNnK%2BwGkoV%2FU1U624M3Mc4zg2dU%2BUWGHfe%2B0haMj31pSVnMQo%3D"}, "method":"do" } result=urllib_use("http://"+ip,"post",post_data) result=json.loads(result) identity='stok' print(result[identity]) #http://192.168.1.*/stok=gqZStE%2B%2Bp1NOm3zmsa*xo%5BSsR%7C%5B7SuSk/ds url_set="http://"+ip+'/'+identity+"="+result[identity]+'/'+"ds" post_router_reboot={ "system":{"reboot":'null'}, "method":"do" } urllib_use(url_set,"post",post_router_reboot)