gpt4 book ai didi

Python发布请求并读取响应中的cookie

转载 作者:太空宇宙 更新时间:2023-11-03 14:36:28 24 4
gpt4 key购买 nike

我正在编写一个python程序,它将发送一个带有密码的post请求,如果密码正确,服务器将返回一个特殊的cookie“BDCLND”。

我首先在 Postman 中执行此操作。您可以在下面的快照中看到我使用的网址、 header 、密码和响应 cookie。

enter image description here

enter image description here

响应 cookie 没有“BDCLND”cookie,因为密码“ssss”错误。但是,服务器确实发回了“BAIDUID”cookie,现在,如果我使用“BAIDUID”cookie 和正确的密码“v0vb”发送另一个发布请求,则“BDCLND”cookie 将显示在响应中。像这样: enter image description here

然后我写了这样的python程序:

import requests
import string
import re
import sys

def main():
url = "https://pan.baidu.com/share/verify?surl=pK753kf&t=1508812575130&bdstoken=null&channel=chunlei&clienttype=0&web=1&app_id=250528&logid=MTUwODgxMjU3NTEzMTAuMzM2MTI4Njk5ODczMDUxNw=="
headers = {
"Content-Type":"application/x-www-form-urlencoded; charset=UTF-8",
"Referer":"https://pan.baidu.com/share/init?surl=pK753kf"
}
password={'pwd': 'v0vb'}
response = requests.post(url=url, data=password, headers=headers)
cookieJar = response.cookies
for cookie in cookieJar:
print(cookie.name)

response = requests.post(url=url, data=password, headers=headers, cookies=cookieJar)
cookieJar = response.cookies
for cookie in cookieJar:
print(cookie.name)
main()

当我运行这个时,第一个 forloop 确实打印出了“BAIDUID”,所以这部分很好,但是,第二个 forloop 没有打印任何内容,结果发现第二个 cookiejar 是空的。我不确定我在这里做错了什么。请帮忙。

最佳答案

您的第二个响应没有 Cookie,因为您在 cookies 参数中手动设置了请求 Cookie,因此服务器不会发送“Set-Cookie” header 。

使用 cookies 参数在请求之间传递 cookie 不是一个好主意,请使用 Session对象代替。

import requests

def main():
ses = requests.Session()
ses.headers['User-Agent'] = 'Mozilla/5'
url = "https://pan.baidu.com/share/verify?surl=pK753kf&t=1508812575130&bdstoken=null&channel=chunlei&clienttype=0&web=1&app_id=250528&logid=MTUwODgxMjU3NTEzMTAuMzM2MTI4Njk5ODczMDUxNw=="
ref = "https://pan.baidu.com/share/init?surl=pK753kf"
headers = {"Referer":ref}
password={'pwd': 'v0vb'}

response = ses.get(ref)
cookieJar = ses.cookies
for cookie in cookieJar:
print(cookie.name)

response = ses.post(url, data=password, headers=headers)
cookieJar = ses.cookies
for cookie in cookieJar:
print(cookie.name)

main()

关于Python发布请求并读取响应中的cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46902297/

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