python获取服务器响应cookie的实例


Posted in Python onDecember 28, 2018

总结

调试网站获取cookies时请查看,r.header和r.request.header这两个属性,因为cookie说不准出现在他们俩谁里面。

先贴一个代码

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提供的"会话对象",他能够自动的保留请求所获取的参数。

具体请跳转传送门:

http://cn.python-requests.org/zh_CN/latest/user/advanced.html#request-and-response-objects

后来

后来我发现原来是因为我在请求头里面写了“Host”,“Referer”,导致Cookie出现异常的原因,所以以后不要随便写这两个参数了,要写就照着封包里的写。

以上这篇python获取服务器响应cookie的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python学习笔记之解析json的方法分析
Apr 21 Python
Python入门_浅谈for循环、while循环
May 16 Python
Python实现的下载网页源码功能示例
Jun 13 Python
Python单例模式的两种实现方法
Aug 14 Python
Python实现pdf文档转txt的方法示例
Jan 19 Python
Python 装饰器实现DRY(不重复代码)原则
Mar 05 Python
Numpy中转置transpose、T和swapaxes的实例讲解
Apr 17 Python
python配置grpc环境
Jan 01 Python
python tkinter库实现气泡屏保和锁屏
Jul 29 Python
windows下python安装pip方法详解
Feb 10 Python
Python3 读取Word文件方式
Feb 13 Python
python requests.get带header
May 05 Python
基于Python在MacOS上安装robotframework-ride
Dec 28 #Python
Python3爬虫之urllib携带cookie爬取网页的方法
Dec 28 #Python
Python编程图形库之Pillow使用方法讲解
Dec 28 #Python
对python中大文件的导入与导出方法详解
Dec 28 #Python
Python编程深度学习计算库之numpy
Dec 28 #Python
python将txt文档每行内容循环插入数据库的方法
Dec 28 #Python
pandas 把数据写入txt文件每行固定写入一定数量的值方法
Dec 28 #Python
You might like
CentOS下与Apache连接的PHP多版本共存方案实现详解
2015/12/19 PHP
详解WordPress中添加和执行动作的函数使用方法
2015/12/29 PHP
PHP实现的文件操作类及文件下载功能示例
2016/12/24 PHP
PHP验证码类ValidateCode解析
2017/01/07 PHP
WordPress 照片lightbox效果的运用几点
2009/06/22 Javascript
js的写法基础分析
2011/01/17 Javascript
jquery 快速回到页首的方法
2013/12/05 Javascript
JS获得图片alt信息的方法
2015/04/01 Javascript
js 判断所选时间(或者当前时间)是否在某一时间段的实现代码
2015/09/05 Javascript
JS简单实现无缝滚动效果实例
2016/08/24 Javascript
jquery表单验证实例仿Toast提示效果
2017/03/03 Javascript
AngularJS监听路由变化的方法
2017/03/07 Javascript
详解Angular的8个主要构造块
2017/06/20 Javascript
使用typescript构建Vue应用的实现
2019/08/26 Javascript
LayUi使用switch开关,动态的去控制它是否被启用的方法
2019/09/21 Javascript
《javascript设计模式》学习笔记七:Javascript面向对象程序设计组合模式详解
2020/04/08 Javascript
JS异步宏队列与微队列原理区别详解
2020/07/02 Javascript
NumPy 数学函数及代数运算的实现代码
2018/07/18 Python
Python在Matplotlib图中显示中文字体的操作方法
2019/07/29 Python
css3 中translate和transition的使用方法
2020/03/26 HTML / CSS
纬创Java面试题笔试题
2014/10/02 面试题
计算机专业个人求职信范例
2013/09/23 职场文书
幼儿教师自我鉴定
2013/11/02 职场文书
商务考察邀请函范文
2014/01/21 职场文书
竞争上岗实施方案
2014/03/21 职场文书
文明生主要事迹
2014/05/25 职场文书
春节超市活动方案
2014/08/14 职场文书
大学生职业生涯十年规划书范文
2014/09/17 职场文书
村长党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
2014年党建工作汇报材料
2014/10/27 职场文书
2014年绿化工作总结
2014/12/09 职场文书
考博导师推荐信范文
2015/03/27 职场文书
写给纪委的违纪检讨书
2015/05/05 职场文书
优秀范文:《但愿人长久》教学反思3篇
2019/10/24 职场文书
SQL CASE 表达式的具体使用
2022/03/21 SQL Server
python如何查找列表中元素的位置
2022/05/30 Python