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

Python请求模块未从响应中获取cookie,python,request,Python,Request,我正在编写代码,试图使用请求模块从Web服务器获取cookie,但让我困惑的是: 当我使用PostMan-REST客户端进行测试时,我看到Cookies返回 我在发送的请求中没有发送任何cookie,但令我惊讶的是,我可以在发送的请求中找到我想要的cookie 我想获取cookie数据,我可以在代码中使用这些数据来请求另一个应用程序 以下是我的代码: import requests import urllib3.contrib.pyopenssl urllib3.contrib.pyopenss

我正在编写代码,试图使用请求模块从Web服务器获取cookie,但让我困惑的是:

  • 当我使用PostMan-REST客户端进行测试时,我看到Cookies返回
  • 我在发送的请求中没有发送任何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'}
    
    #为什么什么都没有??
    {'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