#python #ssl #proxy #python-requests
#питон #ssl #прокси #python-запросы
Вопрос:
При отправке запроса с аутентификацией я получаю requests.exceptions .Ошибка SSLError, которую вы можете увидеть ниже.
proxies = { 'https' : "http://user:pass@ip:port/" }
url = "https://httpbin.org/ip"
numberResponse = requests.get(url,proxies=proxies).text
print(numberResponse)
Запросы.исключения.Ошибка SSLError
Traceback (most recent call last):
File "C:UsersK_YukAppDataLocalProgramsPythonPython38libsite-packagesurllib3connectionpool.py", line 696, in urlopen
self._prepare_proxy(conn)
File "C:UsersK_YukAppDataLocalProgramsPythonPython38libsite-packagesurllib3connectionpool.py", line 964, in _prepare_proxy
conn.connect()
File "C:UsersK_YukAppDataLocalProgramsPythonPython38libsite-packagesurllib3connection.py", line 359, in connect
conn = self._connect_tls_proxy(hostname, conn)
File "C:UsersK_YukAppDataLocalProgramsPythonPython38libsite-packagesurllib3connection.py", line 496, in _connect_tls_proxy
return ssl_wrap_socket(
File "C:UsersK_YukAppDataLocalProgramsPythonPython38libsite-packagesurllib3utilssl_.py", line 428, in ssl_wrap_socket
ssl_sock = _ssl_wrap_socket_impl(
File "C:UsersK_YukAppDataLocalProgramsPythonPython38libsite-packagesurllib3utilssl_.py", line 472, in _ssl_wrap_socket_impl
return ssl_context.wrap_socket(sock, server_hostname=server_hostname)
File "C:UsersK_YukAppDataLocalProgramsPythonPython38libssl.py", line 500, in wrap_socket
return self.sslsocket_class._create(
File "C:UsersK_YukAppDataLocalProgramsPythonPython38libssl.py", line 1040, in _create
self.do_handshake()
File "C:UsersK_YukAppDataLocalProgramsPythonPython38libssl.py", line 1309, in do_handshake
self._sslobj.do_handshake()
ssl.SSLEOFError: EOF occurred in violation of protocol (_ssl.c:1125)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:UsersK_YukAppDataLocalProgramsPythonPython38libsite-packagesrequestsadapters.py", line 439, in send
resp = conn.urlopen(
File "C:UsersK_YukAppDataLocalProgramsPythonPython38libsite-packagesurllib3connectionpool.py", line 755, in urlopen
retries = retries.increment(
File "C:UsersK_YukAppDataLocalProgramsPythonPython38libsite-packagesurllib3utilretry.py", line 573, in increment
raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='httpbin.org', port=443): Max retries exceeded with url: /ip (Caused by SSLError(SSLEOFError(8, 'EOF occurred in violation of protocol (_ssl.c:1125)')))
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "c:/Users/K_Yuk/OneDrive/Desktop/Gmail generator/test.py", line 15, in <module>
numberResponse = requests.get(url,proxies=proxies).text
File "C:UsersK_YukAppDataLocalProgramsPythonPython38libsite-packagesrequestsapi.py", line 76, in get
return request('get', url, params=params, **kwargs)
File "C:UsersK_YukAppDataLocalProgramsPythonPython38libsite-packagesrequestsapi.py", line 61, in request
return session.request(method=method, url=url, **kwargs)
File "C:UsersK_YukAppDataLocalProgramsPythonPython38libsite-packagesrequestssessions.py", line 542, in request
resp = self.send(prep, **send_kwargs)
File "C:UsersK_YukAppDataLocalProgramsPythonPython38libsite-packagesrequestssessions.py", line 655, in send
r = adapter.send(request, **kwargs)
File "C:UsersK_YukAppDataLocalProgramsPythonPython38libsite-packagesrequestsadapters.py", line 514, in send
raise SSLError(e, request=request)
requests.exceptions.SSLError: HTTPSConnectionPool(host='httpbin.org', port=443): Max retries exceeded with url: /ip (Caused by SSLError(SSLEOFError(8, 'EOF occurred in violation of protocol (_ssl.c:1125)')))
Итак, я устал проверять =False в качестве одного из параметров requests.get(), но затем получаю requests.exceptions.Ошибка ProxyError, которую вы можете увидеть ниже :
proxies = { 'https' : "http://user:pass@10.10.1.10:3128/"}
url = "https://httpbin.org/ip"
numberResponse = requests.get(url,proxies=proxies,verify=False).text
print(numberResponse)
Запросы.исключения.Ошибка ProxyError
Traceback (most recent call last):
File "C:UsersK_YukAppDataLocalProgramsPythonPython38libsite-packagesurllib3connectionpool.py", line 696, in urlopen
self._prepare_proxy(conn)
File "C:UsersK_YukAppDataLocalProgramsPythonPython38libsite-packagesurllib3connectionpool.py", line 964, in _prepare_proxy
conn.connect()
File "C:UsersK_YukAppDataLocalProgramsPythonPython38libsite-packagesurllib3connection.py", line 359, in connect
conn = self._connect_tls_proxy(hostname, conn)
File "C:UsersK_YukAppDataLocalProgramsPythonPython38libsite-packagesurllib3connection.py", line 496, in _connect_tls_proxy
return ssl_wrap_socket(
File "C:UsersK_YukAppDataLocalProgramsPythonPython38libsite-packagesurllib3utilssl_.py", line 428, in ssl_wrap_socket
ssl_sock = _ssl_wrap_socket_impl(
File "C:UsersK_YukAppDataLocalProgramsPythonPython38libsite-packagesurllib3utilssl_.py", line 472, in _ssl_wrap_socket_impl
return ssl_context.wrap_socket(sock, server_hostname=server_hostname)
File "C:UsersK_YukAppDataLocalProgramsPythonPython38libssl.py", line 500, in wrap_socket
return self.sslsocket_class._create(
File "C:UsersK_YukAppDataLocalProgramsPythonPython38libssl.py", line 1040, in _create
self.do_handshake()
File "C:UsersK_YukAppDataLocalProgramsPythonPython38libssl.py", line 1309, in do_handshake
self._sslobj.do_handshake()
FileNotFoundError: [Errno 2] No such file or directory
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:UsersK_YukAppDataLocalProgramsPythonPython38libsite-packagesrequestsadapters.py", line 439, in send
resp = conn.urlopen(
File "C:UsersK_YukAppDataLocalProgramsPythonPython38libsite-packagesurllib3connectionpool.py", line 755, in urlopen
retries = retries.increment(
File "C:UsersK_YukAppDataLocalProgramsPythonPython38libsite-packagesurllib3utilretry.py", line 573, in increment
raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='httpbin.org', port=443): Max retries exceeded with url: /ip (Caused by ProxyError('Cannot connect to proxy.', FileNotFoundError(2, 'No such file or directory')))
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "c:/Users/K_Yuk/OneDrive/Desktop/Gmail generator/test.py", line 15, in <module>
numberResponse = requests.get(url,proxies=proxies,verify=False).text
File "C:UsersK_YukAppDataLocalProgramsPythonPython38libsite-packagesrequestsapi.py", line 76, in get
return request('get', url, params=params, **kwargs)
File "C:UsersK_YukAppDataLocalProgramsPythonPython38libsite-packagesrequestsapi.py", line 61, in request
return session.request(method=method, url=url, **kwargs)
File "C:UsersK_YukAppDataLocalProgramsPythonPython38libsite-packagesrequestssessions.py", line 542, in request
resp = self.send(prep, **send_kwargs)
File "C:UsersK_YukAppDataLocalProgramsPythonPython38libsite-packagesrequestssessions.py", line 655, in send
r = adapter.send(request, **kwargs)
File "C:UsersK_YukAppDataLocalProgramsPythonPython38libsite-packagesrequestsadapters.py", line 510, in send
raise ProxyError(e, request=request)
requests.exceptions.ProxyError: HTTPSConnectionPool(host='httpbin.org', port=443): Max retries exceeded with url: /ip (Caused by ProxyError('Cannot connect to proxy.', FileNotFoundError(2, 'No such file or directory')))
Я устал искать ответ на каждый вопрос, но, похоже, ничего не работает. Я не могу отправить запрос с помощью прокси с
аутентификацией. Есть идеи?
Ответ №1:
Проблема, скорее всего, не в аутентификации. К сожалению, вы не предоставляете подробную информацию о конфигурации прокси и URL, который вы используете для прокси. Единственное, что вы предоставляете, это:
proxies = { 'https' : eampleIpWithAuth }
Основываясь на ссылке _connect_tls_proxy
в stacktrace eampleIpWithAuth
, очень вероятно, что-то вроде https://...
, т.Е. Вы пытаетесь получить доступ к самому прокси через HTTPS. Обратите внимание, что доступ к прокси через HTTPS отличается от использования HTTP-прокси для HTTPS. При доступе к URL-адресу HTTPS через прокси-сервер HTTPS по сути выполняется двойное шифрование прокси-сервера:
client --- [HTTPS wrapped inside HTTPS] --- proxy --- [HTTPS] --- server
В то время как с URL-адресом HTTPS через «обычный» HTTP-прокси существует только одно шифрование, т. Е. Оно выглядит (упрощенно) следующим образом:
client --- [HTTPS wrapped inside HTTP] --- proxy --- [HTTPS] --- server
Очень вероятно, что прокси, который вы хотите использовать, — это обычный HTTP-прокси, а не HTTPS-прокси. На самом деле это самый распространенный случай.
Ошибка возникает, поскольку прокси-сервер не может говорить по протоколу TLS, но получает доступ по протоколу TLS. Исправление заключается в использовании http://proxy
, а не https://proxy
в качестве адреса прокси. Обратите внимание, что последнее работало в более старых версиях Python, поскольку прокси через HTTPS не поддерживался, а значение https://
для протокола обрабатывалось так же, как http://
.
Ответ №2:
У меня была аналогичная проблема с моим скриптом в версии python 3.9. Когда я пытаюсь получить некоторые данные с веб-сервера, у меня было исключение, подобное вашему:
urllib3.exceptions.MaxRetryError
Просто добавьте эту строку для настройки ваших запросов
import requests
import urllib3
requests.packages.urllib3.util.ssl_.DEFAULT_CIPHERS = 'ALL:@SECLEVEL=1'
Я надеюсь, это поможет вам решить вашу проблему