在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次重定向
- 如果你想要自定义重定向策略(例如,只允许特定HTTP状态码的重定向),可以使用
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
属性来应用自定义重定向策略。