HTTP NTLM代理和/或服务器身份验证库。

requests-ntlm2的Python项目详细描述


请求-ntlm2

请求的NTLM身份验证插件

Build StatuscodecovPython VersionPyPI StatusDownloadsLicenceCode Style: Black

基于requests-ntlm的requests-ntlm2允许使用请求库进行httpntlm身份验证。在

安装

pip install requests-ntlm2

使用

基本用法

HttpNtlmAuth扩展请求AuthBase,因此用法很简单:

^{pr2}$

更改NTLM兼容级别

在LM兼容性级别上,请参阅此MS docrequests_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')

要求

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java在安卓中为循环添加延迟,而不会暂停UI线程   java为什么接口没有一种方法要求实现类引用它们自己的类型?   ruby+appium或java+appium用于移动本机应用程序自动化   java我可以使用WeakHashMap而不是HashMap吗   java在字符串中查找常见的序列   java如何在不使用ArrayList的情况下从数组中删除对象?   java背景不会出现在添加的paintComponents()之后   java Swagger/OpenapiAnnotations:如何使用$ref生成allOf?   java如何使用AgendaCalendarView(开源)?   Java Crystal Report SDK报告和子报告   java如何制作包含构建编号的TeamCity工件?   java JMagick方法setGeometry of MontageInfo类崩溃JMV   java如何从wsdl创建独立应用程序?