Python Request库模拟登录

1.读取本地用户文件,或者账号名和密码
2.使用md5对用户密码进行加密
3.获取session的临时随机串及sessionid
4.对随机串及用户密码进行二次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)
        

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容