这篇文章给大家分享的是有关python怎么获取服务器响应cookie的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
Python是一种跨平台的、具有解释性、编译性、互动性和面向对象的脚本语言,其最初的设计是用于编写自动化脚本,随着版本的不断更新和新功能的添加,常用于用于开发独立的项目和大型项目。
先贴一个代码
import re import requests from bs4 import BeautifulSoup def printHeaders(headers): for h in headers: print(h+" : "+headers[h] + '\r\n') def printCookies(cookies): for h in cookies: print(h+" : "+cookies[h] + '\r\n') def loginFw(id,password): url = "http://xxxxx/login.asp" try: headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:55.0) Gecko/20100101 Firefox/55.0', 'Host':'www.xxx.org', 'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'Accept-Language':'zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3', 'Accept-Encoding':'gzip, deflate', 'Content-Type':'application/x-www-form-urlencoded', 'Referer':'http://xxx/login.asp', 'Connection':'keep-alive', } params = {"Reglname":id,"reglpassword":password} r = requests.post(url,data=params,headers=headers) printHeaders(r.request.headers) #服务器返回的cookie需要用r.request里的headers来获取 printHeaders(r.headers) #这里是获取不到服务器返回的cookie的 r.encoding = 'utf-8' return r.text except Exception as e: print("登陆错误:"+str(e)) ret = loginFw("xxx@qq.com","xxx") #print(ret)
事情经过
事情的发生是这样的,今天我在调试一个网站的模拟登陆,但是怎么调试都调试不出来这个网站返回的cookie(因为我是用r.headers来获取cookies的),后来我就在想是不是我的请求头没有设置正确,然后我就遍历了r.request.headers,然后这个变量如实的打印了我的请求头的信息,但是我仔细一看cookie怎么出现了变化,咦,这不就是我需要的响应cookie吗!
难道是我对r.request这个对象的理解出错了吗?以前我一直认为这个对象里面存储的是我请求发出去的信息,现在怎么会出现响应cookie呢?
就在我百撕不得其解的时候,我去翻阅了requests库的官方文档关于respond对象中包含的request的解释,它上面写着“The PreparedRequest object to which this is a response.”(表示看不到什么意思,百度翻译也翻译不清楚),咦,好像是和响应有关啊,看来应该是我的理解出现了错误。
更好的解决方案
那当然是用requests提供的"会话对象",他能够自动的保留请求所获取的参数。
感谢各位的阅读!关于“python怎么获取服务器响应cookie”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。