Python请求HTTP POST响应cookie丢失/隐藏字段

时间:2019-09-20 14:32:36

标签: python http python-requests

使用Python请求库的新手,并在访问cookie方面寻求一些帮助...

我无法访问使用Requests库从以下代码中获取的cookie中的所有字段-GoLang或Postman的类似代码都可以正常工作,但是由于某些原因,我缺少一些关键字段我需要来自Python-land的东西。示例代码如下:

import requests

# Host base URL
host = 'sampleurl.link/endpoint'
# Username and password for login to API endpoint
credentials = "username=sausage123%40spaniel.org&password=Passw0rd"

ses = requests.Session()

authString = ''

def auth(host):
    payload = credentials
    headers = {
            'Content-Type': "application/x-www-form-urlencoded",
        }

    ses.post("https://" + host + "/auth", data=payload, headers=headers)

    cookies = ses.cookies.get_dict()
    print(cookies.items())
    authString = "; ".join([str(x)+"="+str(y) for x,y in cookies.items()])
    print(authString)

auth(host)

输出如下:

[('systemid3', 'eSgRCbaH2EWyBVbRyfBS7xfftYCAqE-BRaon1Uc350pi14qTVgsmDXLrK9TDJvPsKmAzgw==')]

但是,通过GoLang或Postman等价的相同API调用。我得到所有必填字段,包括路径和到期时间:

systemid3=eSgRCbaH2EWyBVbRyfBS7xfftYCAqE-BRaon1Uc350pi14qTVgsmDXLrK9TDJvPsKmAzgw==; Path=/; Expires=Sat, 21 Sep 2019 09:37:46 GMT

请注意,邮递员还为我提供了相同的“路径”和“过期”字段。

我如何获得Requests lib,以便我可以访问Cookie中的所有字段,而不仅仅是前2个?为什么隐藏/删除其他cookie字段?

谢谢!

1 个答案:

答案 0 :(得分:0)

这是因为您使用的是.items(),它只会获取Cookie名称和值

您可以访问其他部分,例如:

for cookie in s.cookies:
   print(cookie.name)
   print(cookie.value)
   print(cookie.expires)
   print(cookie.path)