标签:authentication http curl urllib2 python
我目前正在使用urllib2或curl对不同的Trac,Jira,Twiki和Media Wiki网站执行身份验证,以请求诸如活动用户之类的信息.
现在,根据具体实例上的设置,我目前需要指定如何执行身份验证(例如,trac使用基本身份验证或摘要身份验证方案).
是否有(python)库或一段代码可以自动识别服务器的身份验证方案并执行给定的url,用户名和密码,以消除此服务器特定的设置作为恒定的错误源,因此可以吗?
解决方法:
Python请求不会自动处理身份验证方案,但提供了一个更简单的界面来处理Basic和Digest.
检查http://www.python-requests.org/en/latest/user/authentication/以获取代码示例.
以下代码尝试一次获取该网址以获取身份验证方案,然后使用正确的Auth实现重试该网址:
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_request.py用户名密码进行测试.
标签:authentication,http,curl,urllib2,python 来源: https://codeday.me/bug/20191122/2061249.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。