python获取服务器响应cookie

news/2024/5/18 14:29:38 标签: python, cookie

    • 总结
    • 先贴一个代码
    • 事情经过
    • 更好的解决方案
    • 后来

总结

调试网站获取cookies时请查看,r.header和r.request.header这两个属性,因为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提供的"会话对象",他能够自动的保留请求所获取的参数。
  具体请跳转传送门:http://cn.python-requests.org/zh_CN/latest/user/advanced.html#request-and-response-objects

后来

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

http://www.niftyadmin.cn/n/1666369.html

相关文章

[译] ESLint v4.0.0 升级指南

原文地址:ESLint Migrating to v4.0.0原文作者:ESLint译文出自:掘金翻译计划译者:吃土小2叉校对者:薛定谔的猫、sqrthreeESLint v4.0.0 升级指南 ESLint v4.0.0 是 ESLint 的第 4 个主版本。当然,我们希望大…

使用内联标签时应该注意的line-height

一般情况下&#xff0c;当我们使用内联元素显示我们的图片时&#xff0c;无论我们是否把margin和padding设置为0&#xff0c;在两行图片之间都会存在一小片间隙。如下图 解决办法 很简单&#xff0c;只要把包裹他的父标签的line-height设置为0px就行了。 代码 <!DOC…

背景剪除和OpenCV中的实现

转载请注明出处&#xff01;&#xff01;&#xff01;http://blog.csdn.net/zhonghuan1992 背景剪除和OpenCV中的实现 背景与前景都是相对的概念。以快速公路为例&#xff1a;有时我们对快速公路上来来往往的汽车感兴趣&#xff0c;这时汽车是前景。而路面以及周围的环境是背景…

将图像转换为文字显示

主要是利用灰度公式算出每个像素点的灰度&#xff0c;然后灰度低于平均值的输出0高于的输出1&#xff0c;就能得到文字显示了。 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title>&l…

深入浅出TCP/IP协议栈

TCP/IP协议栈是一系列网络协议的总和&#xff0c;是构成网络通信的核心骨架&#xff0c;它定义了电子设备如何连入因特网&#xff0c;以及数据如何在它们之间进行传输。TCP/IP协议采用4层结构&#xff0c;分别是应用层、传输层、网络层和链路层&#xff0c;每一层都呼叫它的下一…

这篇文章带你彻底搞定哈希表!

哈希表是个啥&#xff1f; 小白&#xff1a;什么是哈希表&#xff1f;这个哈希好熟悉&#xff0c;记得好像有HashMap和HashTable之类的吧&#xff0c;这是一样的嘛&#xff1f;&#x1f60a; 小编&#xff1a; 这个哈希确实经常见&#x1f602;&#xff0c;足以说明它是个使用…

让安卓模拟器访问本地服务器

我使用的是Android Studio自带的模拟器&#xff0c;只要把访问URL的IP改成“10.0.2.2”即可&#xff0c;例如我的 http://10.0.2.2/ZhiJi/ContentManager.php&#xff0c;就可以访问本地的服务器了&#xff0c;但是据说不同版本的模拟器得用10.0.0.2这个IP才能访问到本地服务器…

iOS:切换视图时,反向传递数据方法二:代理

代理&#xff1a; 1、发送信息的控制器设置一个代理&#xff0c;并自定义一个代理的方法&#xff0c;用来传递数据 2、接受信息的控制器遵循发送信息的控制器的协议 3、接受信息的控制器设置发送信息的控制器的代理为自己self 4、接受信息的控制器实现协议中的方法&#xff0c;…