python模拟登陆,用session维持回话的实例
python模拟登陆的几种方法
客户端向服务器发送请求,cookie则是表明我们身份的标志。而“访问登录后才能看到的页面”这一行为,恰恰需要客户端向服务器证明:“我是刚才登录过的那个客户端”。于是就需要cookie来标识客户端的身份,以存储它的信息(如登录状态)
1、先在浏览器中登录,然后打开开发者选项,找到一个请求方法为POST的请求,复制RequestsHeaders中的cookie在爬取需要登录的页面时加上此cookies即可
importrequests url='......' headers={'cookies':'......'} response=requests.get(url=url,headers=headers)
2、模拟登录,并用session维持会话,用requests的session模拟登录后session会记录cookies,接下来的请求会被放在同一个会话中。举个简单例子,在requests中,如果直接利用get()或post()等方法的确可以做到模拟网页的请求,但是这实际上是相当于不同的会话,也就是说相当于你用了两个浏览器打开了不同的页面。设想这样一个场景,第一个请求利用post()方法登录了某个网站,第二次想获取成功登录后的自己的个人信息,你又用了一次get()方法去请求个人信息页面。实际上,这相当于打开了两个浏览器,这是两个完全不相关的会话,能成功获取个人信息吗?那当然不能
importrequests ''' 下面的data是先在浏览器中登录,然后打开开发者选项,找到一个请求方法为POST的请求,复制里面的FormData ''' url='......' data={ username:'......', password:flz_sanqianchi, rememberMe:true, lt:LT-82465-9HtQnC7ZASZHohtnQlrqMvXo7cI2B7, execution:e1s1, } headers={'user-agent':'Mozolla/5.0'} ''' 这里用requests的session来请求网页,做到维持同一会话的目的 ''' session=requests.Session() reqsonse=session.post(url=url,headers=headers,data=data) ''' 接下来就可以请求别的登陆后的页面,而不需要处理cookies ''' url2='这里是已经登录后的某一页面' response=session.get(url=url2,headers=headers)
以上这篇python模拟登陆,用session维持回话的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。