gpt4 book ai didi

Python请求模块没有从响应中获取cookie

转载 作者:行者123 更新时间:2023-12-01 04:46:03 25 4
gpt4 key购买 nike

我正在编写代码尝试使用请求模块从网络服务器获取 Cookie,但令我困惑的是:

  1. 我在使用 PostMan - REST 客户端进行测试时看到返回了 Cookie
  2. 我在发送的请求中没有发送任何 cookie,但令我惊讶的是,在发送的请求中竟然能找到我想要的 cookie。

我想要获取可在代码中使用的 cookie 数据来请求另一个应用程序。

以下是我的代码:

import requests
import urllib3.contrib.pyopenssl
urllib3.contrib.pyopenssl.inject_into_urllib3()

username = 'user123' # real username/password not showing
password = '1234567'

login_data = {'id':username, 'pass_word':password, 'action': 'login'}

r = requests.post("www.example.com/login/", data=login_data)

print r.cookies
print r.request.header['Cookie']

输出:

<<class 'requests.cookies.RequestsCookieJar'>[]>   # why nothing??

{'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'User-Agent': 'python-requests/2.6.0 CPython/2.7.6 Darwin/14.1.0', 'Connection': 'keep-alive', 'Cookie': 'blahblahblahblah', 'Content-Type': 'application/x-www-form-urlencoded'}

出于保密原因,我无法在此处显示我的真实 cookie 数据,但我确实在我的发送请求中看到了它,这是怎么回事?我没有告诉它在我的请求中发送它,这是我期望从响应 cookie 中获取的数据,但它显示为无。

最佳答案

r.cookies jar 包含服务器在当前响应中发送的所有新 cookie,因此任何已发送的 cookie 都不会出现在那里,除非服务器重新发送它们。发送的 cookie 将出现在 r.request.headers 中(jar 位于 r.request._cookies)。如果您想在多个请求中保留 cookie,请使用 Session :

session = requests.Session()
session.get(...) # Your first request
session.get(...) # Following requests pass the cookies on

使用 session 时,您可以通过查看session.cookies来检索任何cookie。我不知道为什么你看到了 cookie 发送而你却没有,我必须查看更多代码。

关于Python请求模块没有从响应中获取cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29402106/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com