Requests通过Session保持会话,获取数据

最近在爬一个网站,通过登录之后,获取信息。

遇见的问题:

        采取的selenium模拟登陆。因为有验证码的关系,直接用requests实现登陆不太方便,所以采用的selenium模拟登陆。

        登陆之后,使用selenium中的get_cookies获取的cookie 并不能直接拿回数据,和数据所在的请求接口中的cookie有区别。

        真实数据所在的cookie多了一个参数。

经过一番的js调试,想要模拟出set-cookie的过程,直接破解cookie来拿回数据。

一番调试之后,发现js的层级关系过于复杂,选择了放弃。

后来选择了Session保持会话的功能来获取数据。

通过抓包之后发现:

 数据所在请求接口之前,先访问了这样一个页面:

接着往上寻找,

发现这样一个页面请求:

对两个框中的url进行拼接。

是不是可以得到url?接着用session进行保持会话即可。

代码如下:

def session_keep(self):try:url = '***********'.format(time.time() * 1000)headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36','Referer': '******************','Cookie': 'AD_RS_COOKIE=20110970;SSO_LOGIN_TGC=dec7e66ddd77486da11751ddef4f6045;TGC=TGT-2767-h3FbVj7kFgPXMgRykbOiMRFjnXpQ0Ljn2Ik4vQsyYsSVVlTrii-hbdzswj;DZSWJ_TGC=58bdb8a5b8ce4ae89cba755114cba6ff;JSESSIONID=WetH1vXrPMx3uPhFoi4pikUaBneHN9Ph7-5_QH_fcnmUsM2EukQZ!-912544654'}res = self.s.get(url=url, timeout=10, headers=headers, verify=False).textnextUrl = "***************************" + \re.findall('src="./static/js/common/vendor.js\?(.*?)"', res)[0]self.s.get(nextUrl, headers=headers, verify=False)except Exception as e:msg = traceback.format_exc()print(msg)return False, '建立保持会话失败'

 

 


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部