python - 如何使用 requests.session 以便在后续获取请求中保留并重用 header

标签 python session python-requests

我可能误解了 requests.session目的。

headers ={'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.28 Safari/537.36'}
s = requests.Session()
r = s.get('https://www.barchart.com/', headers = headers)
print(r.status_code)
这工作正常并返回 200正如预期的那样。
然而,以下返回 403并显示第一个请求的 header 没有像使用浏览器手动那样保存在 session 中:
headers ={'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.28 Safari/537.36'}
s = requests.Session()
r = s.get('https://www.barchart.com/', headers = headers)
r = s.get('https://www.barchart.com/futures/quotes/CLQ20')
print(r.status_code)
print(s.headers)
我认为有一种方法可以使用 session 对象将标题、cookie 等从 1 个请求复合到另一个请求……我错了吗?

最佳答案

您可以使用 session.headers ( doc ) 属性来指定与每个请求一起发送的 header :

import requests

headers ={'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.28 Safari/537.36'}

s = requests.session()
s.headers = headers       # <-- set default headers here

r = s.get('https://www.barchart.com/')
print(r.status_code)
print(s.headers)
print('-' * 80)
r = s.get('https://www.barchart.com/futures/quotes/CLQ20')
print(r.status_code)
print(s.headers)

s.close()
打印:
200
{'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.28 Safari/537.36'}
--------------------------------------------------------------------------------
200
{'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.28 Safari/537.36'}

关于python - 如何使用 requests.session 以便在后续获取请求中保留并重用 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62985961/

相关文章:

python - GBQ | python : How can I retrieve data types of all the columns in a table?

python - Pyplot 连接到定时器事件?

Python 请求 - 管理 cookie

python - 如何在 python 中使用 wordpress REST api 上传图像?

python - CRC 32 Mysql 和 CRC32 python?

python - “CityListViewSet”应包含 `serializer_class` 属性,或覆盖 `get_serializer_class()` 方法

node.js - 如何解决 Shopify 公共(public)应用程序 session 冲突

Spring Boot Java Config 设置 session 超时

c# - 如何使用转发器显示 session 中的成员?

python - 如何获取 GitHub 仓库的贡献者总数?