1.讀取本地用戶文件狠怨,或者賬號名和密碼
2.使用md5對用戶密碼進(jìn)行加密
3.獲取session的臨時(shí)隨機(jī)串及sessionid
4.對隨機(jī)串及用戶密碼進(jìn)行二次md5加密生成新的請求秘鑰串
5.傳遞用戶名是晨、新的秘鑰串及sessionid模擬用戶登錄
import hashlib
import requests
import json
import datetime
import time
#2018.12.4
class Sdk_Login():
__url = "http://debug.test.com/index.php"
__userfile = "user.txt"
m = 0
n = 0
#this function will use to get secretct and sessionid
def getSecret(self):
data = {
"dev_hash": "86dac181ee38043c195c427c5502965a",
"dev_network_type":"9",
"from_ad_id":"0",
"from_site_id":"0",
}
try:
res = requests.post(self.__url,data=data)
res.encoding=res.apparent_encoding
js = json.loads(res.text)
except Exception as e:
raise e
else:
self.saveRequest(res.text)
self.saveRequest(str(res.cookies))
return [js['data'][0]['args'][0]['sessionSecret'],res.cookies.get_dict()]
#this function is md5 userpassword
def md5str(self,strs):
try:
m = hashlib.md5()
secret = strs.encode(encoding='utf-8')
m.update(secret)
md5req = m.hexdigest()
self.saveRequest(json.dumps({strs:md5req}))
return md5req
except Exception as e:
raise e
#this function will use to get login
def login(self,username="13511074187",userpass="",cookies=''):
data = {
"dev_hash": "86dac181ee38043c195c427c5502965a",
"dev_network_type": 9,
"from_ad_id": 0,
"from_site_id": 0,
"module":"Login",
"username": username,
"userpass":userpass,
}
try:
res = requests.post(self.__url,data=data,cookies=cookies)
res.encoding=res.apparent_encoding
res.raise_for_status()
print(res.status_code)
except Exception as e:
self.m+=1
self.saveRequest(str(e))
raise e
else:
self.n+=1
self.saveRequest(res.text)
return res.text
def getUser(self):
try:
with open(self.__userfile,'r') as f:
txt = f.read()
f.close()
except Exception as e:
raise e
else:
return txt
def formatData(self,data):
res = {}
try:
data = data.strip("\n").split("\n")
for line in data:
users = line.split("\t")
res[users[0]] = users[1]
except Exception as e:
raise e
else:
return res
def saveRequest(self,msg):
try:
filename = str(datetime.date.today())+".log"
msgtime = time.strftime('%Y-%m-%d %H:%M:%S',time.localtime())
msg = msgtime+"\t"+msg+"\n"
with open(filename,'a') as f:
f.write(msg)
f.close()
except Exception as e:
raise e
def main(self):
try:
filedata = self.getUser()
userdatas = self.formatData(filedata)
i = 1
for username,userpass in userdatas.items():
print("{} {}".format(i,username))
self.saveRequest(username+"\t"+userpass)
usermd5 = self.md5str(userpass)
strs = self.getSecret()
userpass = self.md5str(strs[0]+usermd5)
self.login(username,userpass,strs[1])
i +=1
time.sleep(4)
except Exception as e:
#print(e)
raise e
try:
sdk = Sdk_Login()
sdk.main()
print("fail {}".format(sdk.m))
print("success {}".format(sdk.n))
except Exception as e:
print(e)