Ошибка 407 Proxy Authentication Required в Python, несмотря на правильную настройку проксиPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Ошибка 407 Proxy Authentication Required в Python, несмотря на правильную настройку прокси

Сообщение Anonymous »

Я работаю в корпоративной среде, где мне нужно подключиться к внешнему серверу через прокси-сервер с использованием Python. Для прокси-сервера требуется проверка подлинности NTLM, и я постоянно сталкивался с ошибкой 407 (требуется проверка подлинности прокси-сервера), хотя я настроил свой код на включение учетных данных. Я успешно подключился, используя аналогичные настройки в C#, но Python оказался более сложным.
Код возвращает ошибку 407 Proxy Authentication Required, указывающую, что мои учетные данные не принимаются прокси-сервером. . Когда я реплицирую запрос на C#, используя аналогичные учетные данные и настройки, я успешно и без проблем аутентифицируюсь через прокси.
Ошибка:

Код: Выделить всё

HTTPSConnectionPool(host='target-host.com', port=443): Max retries exceeded with url: / (Caused by ProxyError('Unable to connect to proxy', OSError('Tunnel connection failed: 407 Proxy Authentication Required')))
Прокси-сервер отлично работает при отправке запросов на завивку из командной строки с помощью следующей команды:

Код: Выделить всё

curl -v --proxy-negotiate -x http://proxy.com:port https://target-host.com/
Кто-нибудь знает, почему здесь могут происходить сбои запросов, когда Curl работает нормально? Существует ли в Python особый подход для обработки аутентификации NTLM/Negotiate через прокси-сервер, который мне может не хватать?
Что я пробовал:

[*]Настройка Request_ntlm для обработки аутентификации NTLM через прокси.
[*]Указание переменных среды HTTP_PROXY и HTTPS_PROXY в соответствии с корпоративными стандартами.
[*]Использование запросов-kerberos, запросов-согласования-sspi и запросов-ntlm без успеха и той же ошибки.
[*]Аутентификация с помощью запросов следующим образом:

Код: Выделить всё

    import requests
from requests.auth import HTTPBasicAuth

url = "https://target-host.com/"

return_obj = "-"

proxies = {
"http": "http://proxy.com:port",
"https": "http://proxy.com:port"
}

auth = HTTPBasicAuth('domain\\username', 'password')
try:
response = requests.get(url, proxies=proxies, auth=auth)
return_obj = response.text

print(f"Status Code: {response.status_code}")
print(f"Response Body: {response.text}")
except requests.exceptions.RequestException as e:
# Handle any exceptions (e.g., network issues, timeouts)
print(f"An error occurred: {e}")
return return_obj
Сведения о системе и пакете:
Python 3.9.13
requests-kerberos==0.15.0
requests-negotiate-sspi==0.5.2
requests_ntlm==1.3.0
ОС: Windows 11

Подробнее здесь: https://stackoverflow.com/questions/791 ... roxy-setup
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»