Python请求模块未从响应中获取cookie
我正在编写代码,试图使用请求模块从Web服务器获取cookie,但让我困惑的是:Python请求模块未从响应中获取cookie,python,request,Python,Request,我正在编写代码,试图使用请求模块从Web服务器获取cookie,但让我困惑的是: 当我使用PostMan-REST客户端进行测试时,我看到Cookies返回 我在发送的请求中没有发送任何cookie,但令我惊讶的是,我可以在发送的请求中找到我想要的cookie 我想获取cookie数据,我可以在代码中使用这些数据来请求另一个应用程序 以下是我的代码: import requests import urllib3.contrib.pyopenssl urllib3.contrib.pyopenss
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'}
#为什么什么都没有??
{'Accept-Encoding':'gzip,deflate','Accept':'*/*','User Agent':'python requests/2.6.0 CPython/2.7.6 Darwin/14.1.0','Connection':'keep alive','Cookie':'blahblahblahblahblah','Content Type':'application/x-www-form-urlencoded'}
出于保密原因,我不能在这里显示我的真实cookies数据,但我确实看到它在我的发送请求中,为什么?我没有告诉它在我的请求中发送它,这是我希望从响应cookie中获得的数据,但它显示为无。r.cookiesjar包含服务器在当前响应中发送的所有新cookie,因此任何已发送的cookie都不会出现在那里,除非服务器重新发送它们。发送的cookies将出现在
r.request.headers
(jar位于r.request.\u cookies
)。如果要跨多个请求保留cookie,请使用:
使用会话时,您可以通过查看
session.cookies
来检索任何cookie。我不知道你为什么看到发送的cookies,而你没有,我必须看到更多的代码。谢谢你的信息。这就是我写的所有代码,服务器是否可能只是将cookie放在发送请求而不是响应中?因为我希望从响应中获得它。@MaxLin否,因为发送cookie之前,请求代码专门处理发送的cookie,所以我认为不可能出现交叉污染。对其他服务器的请求是否会发生这种情况?
session = requests.Session()
session.get(...) # Your first request
session.get(...) # Following requests pass the cookies on