js生成其他登陆参数

同样使用fiddler抓包,找到登陆那个请求:


可以看到这个请求参数中有一个LoginKey的参数,然后先按照LoginKey的值全局搜索,结果没找到,于是按照LoginKey为关键字搜索找到好几个:


最后一个是登陆请求,于是查看其他几个,发现基本都是js文件,就想到是js生成的,经过研究发现比较简单:


上图是一个文件,方便观察,LoginKey是guid()生成的,而guid函数调用了s4(),s4里是一些随机数,如果不清楚是什么可以在浏览器开发调试工具里试试;


于是按照这个逻辑使用python实现:

def k_4(self):
    k = [str(hex(i))[-1] for i in range(0, 16)]
    return ''.join(random.sample(k, 4))

def get_login_key(self):
    return '-'.join([self.k_4()+self.k_4(), self.k_4(), self.k_4(), self.k_4(), self.k_4()+self.k_4()+self.k_4()])

至此可以实现登陆:

扫描二维码关注公众号,回复: 2189714 查看本文章

self.session = self.gen_session()
self.login_key = self.get_login_key()
headers = {
        "Accept": "*/*",
        "Accept-Encoding": "gzip, deflate",
        "Accept-Language": "zh-CN,zh;q=0.8",
        "Connection": "keep-alive",
        "Content-Type": "application/json",
        "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0",
    }
dataform = '{"LoginKey": "%s","data": {"User_Oid":"%s","User_Password":"%s"}}' % (self.login_key, self.user_name, self.pass_word)
r = self.session.post(self.api1['login_url'], data=dataform, headers=headers)

猜你喜欢

转载自blog.csdn.net/fsh_walwal/article/details/80696976