python requests处理重定向的情况

2023-03-11 00:00:00 python 情况 重定向

在 Python 的 requests 库中,当向某个 URL 发送请求时,如果服务器返回的响应状态码为 3xx(如 301、302 等),那么就表示该 URL 已被重定向到了另一个 URL。默认情况下,requests 库会自动处理这种重定向,并将最终的响应返回给调用者。

以下是一个简单的示例,演示如何使用 requests 库发送一个带有重定向的 GET 请求:

import requests

response = requests.get('https://httpbin.org/redirect-to?url=https://www.python.org/')
print(response.url)
print(response.history)
print(response.status_code)

在上面的示例中,我们向 https://httpbin.org/redirect-to?url=https://www.python.org/ 发送了一个 GET 请求,该 URL 会自动将请求重定向到 https://www.python.org/。在请求完成后,我们打印了响应的 URL、历史重定向记录和状态码。

需要注意的是,requests 库默认会自动处理 30x 的重定向,但可以通过设置 allow_redirects 参数来禁用自动重定向,或者设置 max_redirects 参数来限制重定向的最大次数。例如,如果我们需要禁用自动重定向,可以将 allow_redirects 参数设置为 False:

response = requests.get('https://httpbin.org/redirect-to?url=https://www.python.org/', allow_redirects=False)

如果需要限制重定向的最大次数,可以将 max_redirects 参数设置为一个正整数。例如,以下示例将限制重定向次数为 3 次:

response = requests.get('https://httpbin.org/redirect-to?url=https://www.python.org/', max_redirects=3)

此外,requests 库还提供了一些其他的参数和方法,用于更灵活地处理重定向。例如,可以使用 Response.is_redirect 方法判断响应是否为重定向,并使用 Response.next 方法获取下一个重定向的响应对象。

相关文章