添加多个身份验证处理程序以请求调用

时间:2017-09-11 11:21:39

标签: python python-3.x python-requests

urllib.requests中,您可以构建可以传递多个身份验证处理程序的开启工具。你可以用Python请求做同样的事情吗?

请求doc站点上的示例显示一次只传递一个auth处理程序,但我需要传递两个。这可能吗?

有人可以提供关于如何做到这一点的语法/文档吗?

以下是我将如何在urllib.requests包中执行此操作:

password_mgr = urllib.request.HTTPPasswordMgrWithDefaultRealm()

# Add the username and password.
# If we knew the realm, we could use it instead of None.
top_level_url = "http://example.com/foo/"
password_mgr.add_password(None, top_level_url, username, password)

handler1 = urllib.request.HTTPBasicAuthHandler(password_mgr)
handler2 = urllib.request.HTTPDigestAuthHandler(password_mgr)
# create "opener" (OpenerDirector instance)
opener = urllib.request.build_opener([handler1, handler2])

# use the opener to fetch a URL
opener.open(a_url)

# Install the opener.
# Now all calls to urllib.request.urlopen use our opener.
urllib.request.install_opener(opener)

1 个答案:

答案 0 :(得分:0)

似乎请求不支持此功能。我在github问题页面上发布了这个问题。建议是使用:http://toolbelt.readthedocs.io/en/latest/authentication.html#guessauth

我还没有尝试过,但它似乎是一个可行的解决方案。