使用cURL,我可以执行--location-trusted,以便允许将名称+密码发送到站点可能重定向到的所有主机(http://curl.haxx.se/docs/manpage.html#--location-trusted)。我可以用Python对requests库做类似的事情吗?
--location-trusted
o2gm4chl1#
如果您必须使用libcurl(这是合法的!),您需要将CURLOPT_UNRESTRICTED_AUTH选项传递给它。虽然文档页面本身并没有提到它,但这是libcurl中命令行--location-trusted标志的等价物。
CURLOPT_UNRESTRICTED_AUTH
hc8w905p2#
requests将自动处理重定向:https://requests.readthedocs.io/en/latest/user/quickstart/#redirection-and-history因此,这应该是一个很好的开始(如果你还没有经历过):https://requests.readthedocs.io/en/latest/user/authentication/
requests
ccgok5k53#
您可以使用urllib3.util.Retry对象,告知要求不要移除Authorization信头,因为它已重新导向而必须重试要求。
urllib3.util.Retry
Authorization
import requests from requests.adapters import HTTPAdapter, Retry s = requests.Session() # Default is {'Authorization'} retries = Retry(remove_headers_on_redirect=set()) s.mount('http://', HTTPAdapter(max_retries=retries)) s.get("http://httpstat.us/301", auth=('user', 'password'))
3条答案
按热度按时间o2gm4chl1#
如果您必须使用libcurl(这是合法的!),您需要将
CURLOPT_UNRESTRICTED_AUTH
选项传递给它。虽然文档页面本身并没有提到它,但这是libcurl中命令行
--location-trusted
标志的等价物。hc8w905p2#
requests
将自动处理重定向:https://requests.readthedocs.io/en/latest/user/quickstart/#redirection-and-history因此,这应该是一个很好的开始(如果你还没有经历过):https://requests.readthedocs.io/en/latest/user/authentication/
ccgok5k53#
您可以使用
urllib3.util.Retry
对象,告知要求不要移除Authorization
信头,因为它已重新导向而必须重试要求。