是否有一个python http客户端可以自动对几种身份验证类型执行身份验证?

是否有一个python http客户端可以自动对几种身份验证类型执行身份验证?,python,http,authentication,curl,urllib2,Python,Http,Authentication,Curl,Urllib2,我目前正在使用urllib2或curl对不同的Trac、Jira、Twiki和Media Wiki站点执行身份验证,以请求诸如活动用户之类的信息 现在,根据特定实例上的设置,我当前需要指定如何执行身份验证(例如,trac使用基本或摘要身份验证方案) 是否有一个(python)库或一段代码可以自动识别服务器的身份验证方案并执行给定的url、用户名、,和密码,以消除此特定于服务器的设置作为恒定错误源?Python请求不会自动处理身份验证方案,但提供了一个更简单的界面来处理基本和摘要 检查代码示例 下

我目前正在使用urllib2或curl对不同的Trac、Jira、Twiki和Media Wiki站点执行身份验证,以请求诸如活动用户之类的信息

现在,根据特定实例上的设置,我当前需要指定如何执行身份验证(例如,trac使用基本或摘要身份验证方案)


是否有一个(python)库或一段代码可以自动识别服务器的身份验证方案并执行给定的url、用户名、,和密码,以消除此特定于服务器的设置作为恒定错误源?

Python请求不会自动处理身份验证方案,但提供了一个更简单的界面来处理基本和摘要

检查代码示例

下面的代码尝试获取url一次以获取身份验证方案,然后使用正确的身份验证实现重试url:

import requests
import sys

from requests.auth import HTTPBasicAuth, HTTPDigestAuth

AUTH_MAP = {
    'basic': HTTPBasicAuth,
    'digest': HTTPDigestAuth,
}

def auth_get(url, *args, **kwargs):
    r = requests.get(url)
    if r.status_code != 401:
        return r
    auth_scheme = r.headers['WWW-Authenticate'].split(' ')[0]
    auth = AUTH_MAP.get(auth_scheme.lower())
    if not auth:
        raise ValueError('Unknown authentication scheme')
    r = requests.get(url, auth=auth(*args, **kwargs))
    return r


if __name__ == '__main__':
    print auth_get(*sys.argv[1:])

使用
python Test\u request.py用户名密码测试它

感谢您的回答,它至少有助于解决trac问题。