HTTP NTLM代理和/或服务器身份验证库。
requests-ntlm2的Python项目详细描述
请求-ntlm2请求的NTLM身份验证插件
基于requests-ntlm的requests-ntlm2允许使用请求库进行httpntlm身份验证。在
安装
pip install requests-ntlm2
使用
基本用法
HttpNtlmAuth
扩展请求AuthBase
,因此用法很简单:
更改NTLM兼容级别
在LM兼容性级别上,请参阅此MS doc。requests_ntlm2
默认为
兼容级别3,仅支持NTLMv2。您可以按如下方式更改兼容性级别:
importrequestsfromrequests_ntlm2importHttpNtlmAuth,NtlmCompatibilityusername='domain\\username'password='password123'ntlm_compatibility=NtlmCompatibility.LM_AND_NTLMv1_WITH_ESS# => level 1auth=HttpNtlmAuth(username,password,ntlm_compatibility=ntlm_compatibility)requests.get("http://ntlm_protected_site.com",auth=auth)
与请求一起使用会话
HttpNtlmAuth
可以与Session
结合使用,以便
利用连接池。因为NTLM对连接进行身份验证,
这样更有效。否则,每个请求将通过一个新的
NTLM质询响应。在
importrequestsfromrequests_ntlm2importHttpNtlmAuthsession=requests.Session()session.auth=HttpNtlmAuth('domain\\username','password')session.get('http://ntlm_protected_site.com')
HTTP连接用法
使用requests-ntlm2
创建SSL代理隧道时,通过
HTTP CONNECT,所谓
“NTLM Dance”(即NTLM身份验证握手)必须在较低级别完成
(在httplib
级别)在隧道创建步骤。这意味着您应该使用HttpNtlmAdapter
并请求会话。此HttpNtlmAdapter
负责发送代理身份验证信息
下游。在
下面是一个基本示例:
importrequestsfromrequests_ntlm2import(HttpNtlmAuth,HttpNtlmAdapter,NtlmCompatibility)username='...'password='...'proxy_ip='...'proxy_port='...'proxies={'http':'http://{}:{}'.format(proxy_ip,proxy_port),'https':'http://{}:{}'.format(proxy_ip,proxy_port)}ntlm_compatibility=NtlmCompatibility.NTLMv2_DEFAULTsession=requests.Session()session.mount('https://',HttpNtlmAdapter(username,password,ntlm_compatibility=ntlm_compatibility))session.mount('http://',HttpNtlmAdapter(username,password,ntlm_compatibility=ntlm_compatibility))session.auth=HttpNtlmAuth(username,password,ntlm_compatibility=ntlm_compatibility)session.proxies=proxiesresponse=session.get('http:/foobar.com')
要求
- 项目
标签: