requests-ntlm3 6.1.3b1

Creator: railscoderz

Last updated:

Add to Cart

Description:

requestsntlm3 6.1.3b1

requests-ntlm3







requests-ntlm3, which is based on requests-ntlm, allows for HTTP NTLM authentication using the requests library.
Installation
pip install requests-ntlm3

Usage
Basic Usage
HttpNtlmAuth extends requests AuthBase, so usage is simple:
import requests
from requests_ntlm3 import HttpNtlmAuth

auth=HttpNtlmAuth('domain\\username','password')
requests.get("http://ntlm_protected_site.com", auth=auth)


Changing NTLM compatibility level
See this MS doc on LM compatibility levels. requests_ntlm3 defaults to
compatibility level 3 which supports NTLMv2 [only]. You can change the compatibility level as follows:
import requests
from requests_ntlm3 import HttpNtlmAuth, NtlmCompatibility

username = 'domain\\username'
password = 'password123'
ntlm_compatibility = NtlmCompatibility.LM_AND_NTLMv1_WITH_ESS # => level 1
auth=HttpNtlmAuth(username, password, ntlm_compatibility=ntlm_compatibility)

requests.get("http://ntlm_protected_site.com", auth=auth)


Using with Requests Session
HttpNtlmAuth can be used in conjunction with a Session in order to
make use of connection pooling. Since NTLM authenticates connections,
this is more efficient. Otherwise, each request will go through a new
NTLM challenge-response.
import requests
from requests_ntlm3 import HttpNtlmAuth

session = requests.Session()
session.auth = HttpNtlmAuth('domain\\username','password')
session.get('http://ntlm_protected_site.com')


HTTP CONNECT Usage
When using requests-ntlm3 to create SSL proxy tunnel via
HTTP CONNECT, the so-called
"NTLM Dance" - ie, the NTLM authentication handshake - has to be done at the lower level
(at httplib level) at tunnel-creation step. This means that you should use the HttpNtlmAdapter
and requests session. This HttpNtlmAdapter is responsible for sending proxy auth information
downstream.
Here is a basic example:
import requests
from requests_ntlm3 import (
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_DEFAULT

session = 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 = proxies

response = session.get('http:/foobar.com')

Requirements

requests
ntlm-auth

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Customer Reviews

There are no reviews.