在Python的requests
库中,处理重定向非常简单。默认情况下,requests
会自动处理HTTP重定向(例如,从HTTP到HTTPS)。如果你想要自定义重定向行为,可以通过设置allow_redirects
参数来实现。
以下是一些关于如何处理重定向的示例:
requests
会处理重定向:import requests
response = requests.get('http://example.com')
print(response.url) # 输出重定向后的URL
allow_redirects
参数设置为False
:import requests
response = requests.get('http://example.com', allow_redirects=False)
print(response.url) # 输出请求的URL,不会自动处理重定向
allow_redirects
参数设置为一个整数:import requests
response = requests.get('http://example.com', allow_redirects=3)
print(response.url) # 输出重定向后的URL,最多允许3次重定向
allow_redirects
参数的rules
属性:import requests
from urllib.parse import urlparse, urljoin
def is_valid_redirect(redirect_url, allowed_status_codes):
parsed_url = urlparse(redirect_url)
return bool(parsed_url.scheme and parsed_url.netloc and any(status_code in allowed_status_codes for status_code in range(300, 400)))
base_url = 'http://example.com'
redirect_url = 'http://example.org'
allowed_status_codes = [301, 302]
redirect_response = requests.get(base_url, allow_redirects=lambda r: is_valid_redirect(urljoin(base_url, r.url), allowed_status_codes))
print(redirect_response.url) # 输出符合自定义策略的重定向后的URL
在这个示例中,我们定义了一个is_valid_redirect
函数来检查重定向URL是否有效。然后,我们使用allow_redirects
参数的rules
属性来应用自定义重定向策略。