python-requests:限制重定向次数

问题描述 投票:0回答:2

有没有办法限制 python 请求在执行 GET 时遵循的重定向数量?

我知道

allow_redirects=False
,但这只会阻止重定向。 我正在寻找一种遵循重定向的方法,最多可达最大跳数。

# What I know how to do:
resp = requests.get(url)  # follows redirects "infinitely"
resp = requests.get(url, allow_redirects=False)  # follows no redirects

# What I'm trying to do:
resp = requests.get(url, max_redirects=3)  # follow up to 3 redirects

谢谢!

python python-requests
2个回答
23
投票

您必须创建

Session
对象并将
max_redirects
变量设置为 3

session = requests.Session()
session.max_redirects = 3
session.get(url)

TooManyRedirects
如果请求超过最大重定向次数,将会引发异常。

相关 github 问题讨论为什么不能按请求设置

max_redirects
https://github.com/psf/requests/issues/1300


-1
投票

如果你想获取导致最大重定向限制异常的请求头(或其他信息),你可以这样做:

session = requests.Session()
session.max_redirects = 1
try:
    r = session.post(url, headers=headers, params=querystring, data=payload)
except requests.exceptions.TooManyRedirects as exc:
    r = exc.response

确保您的请求是最新版本。

© www.soinside.com 2019 - 2024. All rights reserved.