<p>request.exceptions.SSLError: EOF рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рдЙрд▓реНрд▓рдВрдШрди рдореЗрдВ рд╣реБрдЖ (_ssl.c:645)</p>

рдХреЛ рдирд┐рд░реНрдорд┐рдд 12 рдлрд╝рд░ре░ 2016  ┬╖  77рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: psf/requests

рдпрд╣рд╛рдБ рдкрд╣рд▓рд╛ рдореБрджреНрджрд╛ рд╣реИред
https://github.com/kennethreitz/requests/issues/2906

рдкрд╛рдпрдерди 3.5.1 (https://www.python.org/downloads/) рд╡рд░реНрдЪреБрдЕрд▓рдПрдиреНрд╡ 14.0.5 рдореИрдХ рдУрдПрд╕ рдПрдХреНрд╕ 10.11.3

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВрдиреЗ рд╡рд░реНрдЪреБрдЕрд▓рдПрдиреНрд╡ рдмрдирд╛рдпрд╛ рдФрд░ pip install requests[security]

рдлрд┐рд░ рдореБрдЭреЗ рдорд┐рд▓ рдЧрдпрд╛

>>> from cryptography.hazmat.backends.openssl.backend import backend
>>> print(backend.openssl_version_text())
OpenSSL 1.0.2f  28 Jan 2016

рдЬрд┐рд╕рдХреА рдореБрдЭреЗ рдЙрдореНрдореАрдж рдереАред

рдХрд░реАрдм рдПрдХ рдШрдВрдЯреЗ рддрдХ рд╕рдм рдХреБрдЫ рдареАрдХ рд░рд╣рд╛ред

рдлрд┐рд░, рдореЗрд░реА рдЕрдкрдиреА рдХреБрдЫ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреНрд░реИрд╢ рд╣реЛ рдЧрдИрдВ рдЬреЛ рд╕рд╛рдорд╛рдиреНрдп рдереАред рдЙрд╕рдХреЗ рдмрд╛рдж, рдЬрдм рдореИрдВ рдЕрдкрдиреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЪрд▓рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдореБрдЭреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЕрдкрд╡рд╛рдж рдорд┐рд▓рддреЗ рд╣реИрдВ:

ssl.SSLEOFError: EOF occurred in violation of protocol (_ssl.c:645)

requests.packages.urllib3.exceptions.SSLError: EOF occurred in violation of protocol (_ssl.c:645)

requests.exceptions.SSLError: EOF occurred in violation of protocol (_ssl.c:645)

рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдПрдХ рдФрд░ рдкрд╛рдпрдерди рдХрдВрд╕реЛрд▓ рдЦреЛрд▓рд╛ рдФрд░

>>> requests.get("https://www.google.com")
<Response [200]>
>>> requests.get("https://www.telegram.org")
Traceback (most recent call last):
  File "VirtualenvPath/lib/python3.5/site-packages/requests/packages/urllib3/connectionpool.py", line 559, in urlopen
    body=body, headers=headers)
  File "VirtualenvPath/lib/python3.5/site-packages/requests/packages/urllib3/connectionpool.py", line 345, in _make_request
    self._validate_conn(conn)
  File "VirtualenvPath/lib/python3.5/site-packages/requests/packages/urllib3/connectionpool.py", line 784, in _validate_conn
    conn.connect()
  File "VirtualenvPath/lib/python3.5/site-packages/requests/packages/urllib3/connection.py", line 252, in connect
    ssl_version=resolved_ssl_version)
  File "VirtualenvPath/lib/python3.5/site-packages/requests/packages/urllib3/util/ssl_.py", line 305, in ssl_wrap_socket
    return context.wrap_socket(sock, server_hostname=server_hostname)
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/ssl.py", line 376, in wrap_socket
    _context=self)
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/ssl.py", line 747, in __init__
    self.do_handshake()
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/ssl.py", line 983, in do_handshake
    self._sslobj.do_handshake()
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/ssl.py", line 628, in do_handshake
    self._sslobj.do_handshake()
ssl.SSLEOFError: EOF occurred in violation of protocol (_ssl.c:645)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "VirtualenvPath/lib/python3.5/site-packages/requests/adapters.py", line 376, in send
    timeout=timeout
  File "VirtualenvPath/lib/python3.5/site-packages/requests/packages/urllib3/connectionpool.py", line 588, in urlopen
    raise SSLError(e)
requests.packages.urllib3.exceptions.SSLError: EOF occurred in violation of protocol (_ssl.c:645)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "VirtualenvPath/lib/python3.5/site-packages/requests/api.py", line 67, in get
    return request('get', url, params=params, **kwargs)
  File "VirtualenvPath/lib/python3.5/site-packages/requests/api.py", line 53, in request
    return session.request(method=method, url=url, **kwargs)
  File "VirtualenvPath/lib/python3.5/site-packages/requests/sessions.py", line 468, in request
    resp = self.send(prep, **send_kwargs)
  File "VirtualenvPath/lib/python3.5/site-packages/requests/sessions.py", line 576, in send
    r = adapter.send(request, **kwargs)
  File "VirtualenvPath/lib/python3.5/site-packages/requests/adapters.py", line 447, in send
    raise SSLError(e, request=request)
requests.exceptions.SSLError: EOF occurred in violation of protocol (_ssl.c:645)
>>> 

рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рд░рд┐рдмреВрдЯ рдХрд┐рдпрд╛, рдЗрди рд╕рднреА рдХрд╛рдореЛрдВ рдХреЛ рдЕрдирдЗрдВрд╕реНрдЯреЙрд▓ рдХрд┐рдпрд╛ рдФрд░ рдкрд╛рдЗрдк рдХреЛ рдлрд┐рд░ рд╕реЗ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд┐рдпрд╛ред рд╕рдм рдХреБрдЫ рдлрд┐рд░ рд╕реЗ рдХрд╛рдо рдХрд░ рдЧрдпрд╛ред

рд▓реЗрдХрд┐рди 1 рдШрдВрдЯреЗ рдХреЗ рдмрд╛рдж рдлрд┐рд░ рд╕реЗ рд╡рд╣реА рдЕрдкрд╡рд╛рджред

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

@ the-efi рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ pyopenssl , pyasn1 , рдФрд░ ndg-httpsclient рд╕реНрдерд╛рдкрд┐рдд рд╣реИ?

рд╕рднреА 77 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдлрд┐рд░, рдореЗрд░реА рдЕрдкрдиреА рдХреБрдЫ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреНрд░реИрд╢ рд╣реЛ рдЧрдИрдВ рдЬреЛ рд╕рд╛рдорд╛рдиреНрдп рдереАред

рдРрд╕рд╛ рдХреНрд░реИрд╢ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ?

рдЙрд╕рдХреЗ рдмрд╛рдж, рдЬрдм рдореИрдВ рдЕрдкрдиреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЪрд▓рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдореБрдЭреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЕрдкрд╡рд╛рдж рдорд┐рд▓рддреЗ рд╣реИрдВ:

рдХреНрдпрд╛ рдЖрдк рдЙрд╕рдХреЗ рдмрд╛рдж рдЙрдиреНрд╣реЗрдВ рдЪрд▓рд╛рдиреЗ рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рдЕрд╕рдорд░реНрде рд╣реИрдВ?

@ sigmavirus24 рдиреЗрдЯрд╡рд░реНрдХрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдХреБрдЫ рднреА рдХрд┐рдП рдмрд┐рдирд╛ рдпрд╣ рдореЗрд░реЗ рдЕрдкрдиреЗ рдХреЛрдб рдореЗрдВ рдХреБрдЫ рдмрдЧ рд╣реИред
рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдЕрд╕рд▓реА рдХрд╛рд░рдг рд╣реИ рдпрд╛ рд╕рд┐рд░реНрдл рд╕рдВрдпреЛрдЧ рд╣реИред

рд▓реЗрдХрд┐рди рдПрдХ рдмрд╛рдд рдкрдХреНрдХреА рд╣реИ, рдХреБрдЫ рд╕рдордп рдмрд╛рдж, рдореИрдВ https://www.telegram.org рдкрд░ рд░рд┐рдХреНрд╡реЗрд╕реНрдЯ рдХрд░рдиреЗ рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд╕рдорд░реНрде рд╣реВрдВ, рдЬрд┐рд╕реЗ рдореИрдВ рдЗрдВрд╕реНрдЯрд╛рд▓ рд░рд┐рдХреНрд╡реЗрд╕реНрдЯ рдХреЗ рдареАрдХ рдмрд╛рдж рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред

рд╕рд┐рд░реНрдл FYI рдХрд░реЗрдВ: #2906

рдЗрд╕рд▓рд┐рдП рдореИрдВ рдпрд╣ рдмрддрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк requests[security] рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╣рдореЗрдВ pyOpenSSL рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рд▓реЗрдХрд┐рди рдЖрдкрдХрд╛ рд╕реНрдЯреИрдХрдЯреНрд░реЗрд╕ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдирд╣реАрдВ рд╣реИрдВред рдпрд╣ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ.

@ sigmavirus24 рддреЛ рдХреНрдпрд╛ рдореИрдВ рдЖрдкрдХреА рдорджрдж рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ?

рдХреЛрдИ рд╡рд┐рдЪрд╛рд░? @рд▓реБрдХрд╛рд╕рд╛

рддреЛ рдпрд╣рд╛рдБ рдЬреЛ рд╕рдмрд╕реЗ рдЬреНрдпрд╛рджрд╛ рдорд╛рдпрдиреЗ рд░рдЦрддрд╛ рд╣реИ рд╡рд╣ рдпрд╣ рд╣реИ: рдЖрдкрдХрд╛ рдХреЛрдб PyOpenSSL рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдХреНрдпреЛрдВ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИ? рдЬрдм рдЖрдк рдЕрдкрдиреЗ рдХреНрд░реИрд╢ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХреНрдпрд╛ рдЖрдк рдЕрдкрдиреЗ рд╡рд░реНрдЪреБрдЕрд▓ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдПрдХ рдкрд╛рдпрдерди рдХрдВрд╕реЛрд▓ рдЦреЛрд▓ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ import urllib3.contrib.pyopenssl , рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ?

рдЕрдм рдЗрд╕реЗ рдкреБрди: рдкреЗрд╢ рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛ред рдореИрдВ рдЗрд╕реЗ рдкрд╣рд▓реЗ рдмрдВрдж рдХрд░ рджреВрдВрдЧрд╛, рдФрд░ рдЕрдЧрд░ рдореБрдЭреЗ рдлрд┐рд░ рд╕реЗ рд╕рдорд╕реНрдпрд╛ рдЖрддреА рд╣реИ, рддреЛ рдореИрдВ рдкрд░рд┐рдгрд╛рдо рдкреЗрд╕реНрдЯ рдХрд░ рджреВрдВрдЧрд╛ рдФрд░ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓реВрдВрдЧрд╛ред

@ рд▓реБрдХрд╛рд╕рд╛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ urllib3 рдХреЗ рд╕рд╛рде рднреЗрдЬ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдореИрдВ рдЕрдХреЗрд▓реЗ urllib3 рдЖрдпрд╛рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛ред рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░рд┐рдгрд╛рдо рдЗрд╕рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рддреЗ рд╣реИрдВред

Python 3.5.1 (v3.5.1:37a07cee5969, Dec  5 2015, 21:12:44) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import urllib3.contrib.pyopenssl
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named 'urllib3'
>>> ^D




pip list
cffi (1.5.0)
cryptography (1.2.2)
idna (2.0)
ndg-httpsclient (0.4.0)
pip (8.0.2)
pyasn1 (0.1.9)
pycparser (2.14)
pyOpenSSL (0.15.1)
requests (2.9.1)
setuptools (20.0)
six (1.10.0)
wheel (0.26.0)

рдореБрдЭреЗ рдЦреЗрдж рд╣реИ, requests.packages.urllib3.contrib.pyopenssl рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ

@рд▓реБрдХрд╛рд╕рд╛

Python 3.5.1 (v3.5.1:37a07cee5969, Dec  5 2015, 21:12:44) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import requests.packages.urllib3.contrib.pyopenssl
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "VirtualenvPath/lib/python3.5/site-packages/requests/packages/urllib3/contrib/pyopenssl.py", line 57, in <module>
    from socket import _fileobject, timeout, error as SocketError
ImportError: cannot import name '_fileobject'
>>> 

рдореИрдВ рд╢рд░реНрдд рд▓рдЧрд╛рддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ 3.5 рдкрд░ pyOpenSSL рдХреЗ рд╕рд╛рде рдПрдХ рдмрдЧ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо @lukasa рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдирддреЗ _fileobject рд╕рдВрдмрдВрдз рдореЗрдВ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИред

рдирд╣реАрдВ, рдореБрдЭреЗ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рд╣реИ, рдФрд░ рдЬрдм рд╣рдордиреЗ PyOpenSSL рдХрд╛ рдкрд░реАрдХреНрд╖рдг рд╢реБрд░реВ рдХрд┐рдпрд╛ рддреЛ urllib3 рдореЗрдВ рдЕрдкрд╕реНрдЯреНрд░реАрдо рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рджрд┐рдпрд╛ред рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рдпрд╣ рд╣реИ рдХрд┐ requests[security] рдиреЗ Python 3 рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ (рдФрд░ рдХрднреА рдирд╣реАрдВ рдХрд┐рдпрд╛)ред рдпрд╣ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдЖрдЧрд╛рдореА рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рддрдп рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рддреЛ рдпрд╣ рд╣рдорд╛рд░реА рдкрд╣реЗрд▓реА рдХреЛ рд╣рд▓ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ: рдпрд╣ рдХреНрдпреЛрдВ рдХреБрдЫ рджреЗрд░ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рд░реБрдХ рдЬрд╛рддрд╛ рд╣реИ?

рдореВрд▓ рд░рд┐рдкреЛрд░реНрдЯ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕реНрдкрд░реНрд╢рд░реЗрдЦрд╛ рдЯрд┐рдкреНрдкрдгреА, рдЕрдЬрдЧрд░ рдореЗрдВ рдирд┐рд░реНрдорд┐рдд ssl.py рдореЗрдВ рд░реИрдЧреНрдб рдИрдУрдПрдл рдХреЛ рджрдмрд╛рдиреЗ рдХрд╛ рдПрдХ рд╡рд┐рдХрд▓реНрдк рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдмрд╣реБрдд рд╕рд╛рд░реА рд╕рд╛рдЗрдЯреЗрдВ рд╣реИрдВ рдЬреЛ рдПрд╕рдПрд╕рдПрд▓ рдХрдиреЗрдХреНрд╢рди рдХреЛ рдЕрд╢реБрджреНрдз рд░реВрдк рд╕реЗ рдмрдВрдж рдХрд░ рджреЗрдВрдЧреАред рдХрднреА-рдХрднреА рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдк рд╕реЗ рдорд╛рдиреЛ рдпрд╣ рд╕рдордп рдпрд╛ рд╕рдВрдпреЛрдЧ рдХреА рдмрд╛рдд рд╣реЛред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд ssl.py рд╕реЗ рдПрдХ рдЙрджреНрдзрд░рдг рд╣реИ

class SSLSocket(socket):
    [...]
    def read(self, len=0, buffer=None):
        """Read up to LEN bytes and return them.
        Return zero-length string on EOF."""

        self._checkClosed()
        if not self._sslobj:
            raise ValueError("Read on closed or unwrapped SSL socket.")
        try:
            return self._sslobj.read(len, buffer)
        except SSLError as x:
            if x.args[0] == SSL_ERROR_EOF and self.suppress_ragged_eofs:
                if buffer is not None:
                    return 0
                else:
                    return b''
            else:
                raise

requests рддрд╣рдд gevent рд╕рд╛рде рд╕рд░реНрд╡рд░ рдХреЛ рддреЗрдЬрд╝ рдХрд░рддреЗ рд╕рдордп рдкрд╛рдпрдерди 2.7.11/OSX рдкрд░ рдПрдХ рд╣реА рдЕрдкрд╡рд╛рдж рд╣реЛрдирд╛ред рдХреНрдпрд╛ рдпрд╣ рд╕рдВрдмрдВрдзрд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ?

@ the-efi рдХреНрдпрд╛ рдЖрдк рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк рдХрд┐рд╕ рдЕрдкрд╡рд╛рдж рдХреЛ рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВ?

    r = requests.post(self.MY_URL, data=parameters)
  File "/Users/me/Envs/my_env/lib/python2.7/site-packages/requests/api.py", line 109, in post
    return request('post', url, data=data, json=json, **kwargs)
  File "/Users/me/Envs/my_env/lib/python2.7/site-packages/requests/api.py", line 50, in request
    response = session.request(method=method, url=url, **kwargs)
  File "/Users/me/Envs/my_env/lib/python2.7/site-packages/requests/sessions.py", line 465, in request
    resp = self.send(prep, **send_kwargs)
  File "/Users/me/Envs/my_env/lib/python2.7/site-packages/requests/sessions.py", line 573, in send
    r = adapter.send(request, **kwargs)
  File "/Users/me/Envs/my_env/lib/python2.7/site-packages/requests/adapters.py", line 431, in send
    raise SSLError(e, request=request)
SSLError: EOF occurred in violation of protocol (_ssl.c:590)

@ the-efi рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ pyopenssl , pyasn1 , рдФрд░ ndg-httpsclient рд╕реНрдерд╛рдкрд┐рдд рд╣реИ?

pyopenssl: рдирдХрд╛рд░рд╛рддреНрдордХ
pyasn1: pyasn1==0.1.8 (рдХреНрд╖рдгрд┐рдХ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ)
ndg-httpsclient: рдирдХрд╛рд░рд╛рддреНрдордХ

рдареАрдХред рдЖрдк Python 2.7 рднреА рдЪрд▓рд╛ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдФрд░ рдкреЛрд╕реНрдЯрд░ рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВред

рдХреНрдпрд╛ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдХрдиреЗрдХреНрд╢рди рд╕реЗрдЯрдЕрдк рдХреЗ рджреМрд░рд╛рди, рдпрд╛ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдЪрд▓ рд░рд╣реЗ рдХрдиреЗрдХреНрд╢рди рдкрд░ рдЖрдкрдХреА рд╕рдорд╕реНрдпрд╛ рдЖрддреА рд╣реИ?

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрдиреЗрдХреНрд╢рди рд╕реЗрдЯрдЕрдк рдХреЗ рджреМрд░рд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ requests Connection: keep-alive рд╕рд╛рде рдкрд╣рд▓реЗ рдЦреЛрд▓реЗ рдЧрдП рдХрдиреЗрдХреНрд╢рди рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рддреЛ рдореИрдВ рдЧрд▓рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реВрдВред

рдЕрдиреБрд░реЛрдз рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЬрд╣рд╛рдВ рд╕рдВрднрд╡ рд╣реЛ рдкрд╣рд▓реЗ рдЦреЛрд▓реЗ рдЧрдП рдХрдиреЗрдХреНрд╢рди рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдкреНрд░рд╢реНрди рдкреВрдЫрд╛ред ;)

рдпрд╣ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ рдпрджрд┐ рд╣рдо рдЖрдкрдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдПрдХ рдкреИрдХреЗрдЯ рдХреИрдкреНрдЪрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХреЗрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рднрд╛рд░реА рднрд╛рд░ рдХреЗ рддрд╣рдд рд╣реЛрддрд╛ рд╣реИред

рдХреЛрдИ рдмрд╛рдд рдирд╣реАрдВ, рдореИрдВ рджреЗрдЦреВрдВрдЧрд╛ рдХрд┐ рд╕рдкреНрддрд╛рд╣рд╛рдВрдд рдХреЗ рдмрд╛рдж рдореИрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рдХреНрдпрд╛ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рдПрдХ рдирдП рдЕрдВрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░реВрдВ?

рдЬреА рдмреЛрд▓рд┐рдпреЗред =)

@ рд▓реБрдХрд╛рд╕рд╛ urllib3 рдХреЗ рд╕рд╛рде рдХреЛрдИ рдкреНрд░рдЧрддрд┐?

@caizixian рд╣рдо рд╡рд╣рд╛рдВ

@Lukasa @shazow urllib3 рдореЗрдВ рд╣рдореЗрд╢рд╛ http://ci.kennethreitz.org рдкрд░ рдПрдХ рдШрд░ рд╣реЛрддрд╛ рд╣реИ, рдЕрдЧрд░ рд╡рд╛рдВрдЫрд┐рдд!

рдЗрд╕ рдкрд░ рдХреЛрдИ рдЕрдкрдбреЗрдЯ? рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдпрд╣ рдХрд╛рдлреА рд╣реЛрддрд╛ рд╣реИред

@mindw рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВ рдЬрд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рд╣рдореЗрдВ рдЗрд╕ рдмрд╛рдд рдХреА рдЕрдЪреНрдЫреА рд╕рдордЭ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдХрд╣рд╛рдВ рдФрд░ рдХрдм рд╣реЛ рд░рд╣рд╛ рд╣реИред рдКрдкрд░ рдХреЗ рдмреИрдХрдЯреНрд░реЗрд╕ рдореЗрдВ рдпрд╣ рд╣реИрдВрдбрд╢реЗрдХ рдХреЗ рджреМрд░рд╛рди рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдЬреЛ рдЖрдорддреМрд░ рдкрд░ рдмрд╛рддрдЪреАрдд рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ: рдЖрдк рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХрд╛ рд╕рд╛рдордирд╛ рдХрдм рдХрд░ рд░рд╣реЗ рд╣реИрдВ?

рдУрдПрд╕ рдПрдХреНрд╕, рдкрд╛рдпрдерди 3.5.1, 2.10.0 + рд╕реБрд░рдХреНрд╖рд╛ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИред
рдореИрдВ рдЕрдиреБрд░реЛрдз рдкрд░ рдХреЛрдИ рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдирдХрд╛рд░реА рджреЗрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реВрдВрдЧрд╛ :)

Traceback (most recent call last):
  File "/Users/gabdav01/.virtualenvs/splatt/lib/python3.5/site-packages/requests/packages/urllib3/connectionpool.py", line 578, in urlopen
    chunked=chunked)
  File "/Users/gabdav01/.virtualenvs/splatt/lib/python3.5/site-packages/requests/packages/urllib3/connectionpool.py", line 351, in _make_request
    self._validate_conn(conn)
  File "/Users/gabdav01/.virtualenvs/splatt/lib/python3.5/site-packages/requests/packages/urllib3/connectionpool.py", line 814, in _validate_conn
    conn.connect()
  File "/Users/gabdav01/.virtualenvs/splatt/lib/python3.5/site-packages/requests/packages/urllib3/connection.py", line 289, in connect
    ssl_version=resolved_ssl_version)
  File "/Users/gabdav01/.virtualenvs/splatt/lib/python3.5/site-packages/requests/packages/urllib3/util/ssl_.py", line 308, in ssl_wrap_socket
    return context.wrap_socket(sock, server_hostname=server_hostname)
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/ssl.py", line 376, in wrap_socket
    _context=self)
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/ssl.py", line 747, in __init__
    self.do_handshake()
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/ssl.py", line 983, in do_handshake
    self._sslobj.do_handshake()
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/ssl.py", line 628, in do_handshake
    self._sslobj.do_handshake()
ssl.SSLEOFError: EOF occurred in violation of protocol (_ssl.c:645)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/gabdav01/.virtualenvs/splatt/lib/python3.5/site-packages/requests/adapters.py", line 403, in send
    timeout=timeout
  File "/Users/gabdav01/.virtualenvs/splatt/lib/python3.5/site-packages/requests/packages/urllib3/connectionpool.py", line 604, in urlopen
    raise SSLError(e)
requests.packages.urllib3.exceptions.SSLError: EOF occurred in violation of protocol (_ssl.c:645)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/gabdav01/.virtualenvs/splatt/bin/splatt", line 9, in <module>
    load_entry_point('splatt', 'console_scripts', 'splatt')()
  File "/Users/gabdav01/.virtualenvs/splatt/lib/python3.5/site-packages/click/core.py", line 716, in __call__
    return self.main(*args, **kwargs)
  File "/Users/gabdav01/.virtualenvs/splatt/lib/python3.5/site-packages/click/core.py", line 696, in main
    rv = self.invoke(ctx)
  File "/Users/gabdav01/.virtualenvs/splatt/lib/python3.5/site-packages/click/core.py", line 1060, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/Users/gabdav01/.virtualenvs/splatt/lib/python3.5/site-packages/click/core.py", line 889, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/Users/gabdav01/.virtualenvs/splatt/lib/python3.5/site-packages/click/core.py", line 534, in invoke
    return callback(*args, **kwargs)
  File "/Users/gabdav01/.virtualenvs/splatt/lib/python3.5/site-packages/click/decorators.py", line 17, in new_func
    return f(get_current_context(), *args, **kwargs)
  File "/Users/gabdav01/work/paas/splatt/splatt/cmd.py", line 108, in create
    url, json=json, headers=headers)
  File "/Users/gabdav01/.virtualenvs/splatt/lib/python3.5/site-packages/requests/sessions.py", line 518, in post
    return self.request('POST', url, data=data, json=json, **kwargs)
  File "/Users/gabdav01/.virtualenvs/splatt/lib/python3.5/site-packages/requests/sessions.py", line 475, in request
    resp = self.send(prep, **send_kwargs)
  File "/Users/gabdav01/.virtualenvs/splatt/lib/python3.5/site-packages/requests/sessions.py", line 585, in send
    r = adapter.send(request, **kwargs)
  File "/Users/gabdav01/.virtualenvs/splatt/lib/python3.5/site-packages/requests/adapters.py", line 477, in send
    raise SSLError(e, request=request)
requests.exceptions.SSLError: EOF occurred in violation of protocol (_ssl.c:645)

рдпрд╣ рджреГрдврд╝рддрд╛ рд╕реЗ рдПрд╕рдПрдирдЖрдИ рдХреА рдХрдореА рдпрд╛ рдХреЛрдИ рд╕рд┐рдлрд░ рдУрд╡рд░рд▓реИрдк рдирд╣реАрдВ рд╣реЛрдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реИред рдХреНрдпрд╛ рдЖрдк рдУрдкреА рдореЗрдВ рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлреА рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкреНрд░рд┐рдВрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдореБрдЭреЗ рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХреНрдпрд╛ рдХрд╣рддрд╛ рд╣реИ?

рдореБрдЭреЗ рдпрд╣ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИ?

@mindw рдУрдкреА (рдореВрд▓ рдкреЛрд╕реНрдЯ) рдХреЛ рджреЗрдЦреЗрдВ рдЬрд╣рд╛рдВ @caizixian рдмреИрдХрдПрдВрдб рдХреЛ cryptography рд╕реЗ рдЖрдпрд╛рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдУрдкрдирдПрд╕рдПрд╕рдПрд▓ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реИред

рдпрд╣ рдореБрджреНрджрд╛ рднреА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред рд╕рдорд╛рдзрд╛рди рдореЗрдВ рд╕рд╣рд╛рдпрддрд╛ рдХреЗ рд▓рд┐рдП рдореИрдВ рдХреМрди рд╕реА рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ?

@LukeNZ рдмрд╣реБрдд рд╕реА рдЪреАрдЬреЗрдВред рдкрд╛рдпрдерди рд╕рдВрд╕реНрдХрд░рдг, рд╕реНрдерд╛рдкрд┐рдд рдкреИрдХреЗрдЬ, рдЕрдиреБрд░реЛрдз рд╕рдВрд╕реНрдХрд░рдг, рдУрдкрдирдПрд╕рдПрд╕рдПрд▓ рд╕рдВрд╕реНрдХрд░рдг, рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдФрд░ рдЬрд┐рд╕ рд╡реЗрдмрд╕рд╛рдЗрдЯ рд╕реЗ рдЖрдк рд╕рдВрдкрд░реНрдХ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдирдорд╕реНрддреЗ, рдореИрдВрдиреЗ рдЕрднреА-рдЕрднреА Requests рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдореБрдЭреЗ рднреА рдпрд╣реА рдЪреАрдЬрд╝ рдорд┐рд▓ рд░рд╣реА рд╣реИред рдореИрдВ рд╡рд░реНрдЪреБрдЕрд▓ рдПрдирд╡реА рдореЗрдВ рдУрдПрд╕ рдПрдХреНрд╕ 10.11.5, рдкрд╛рдпрдерди 3.5.1 рдкрд░ рд╣реВрдВ, рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдгред рдУрдкреА рдХреЗ рд░реВрдк рдореЗрдВ open_ssl рд╕рдВрд╕реНрдХрд░рдг рдЪрд▓рд╛рдирд╛ рдореБрдЭреЗ рджреЗрддрд╛ рд╣реИ

рдУрдкрдирдПрд╕рдПрд╕рдПрд▓ 1.0.2h 3 рдордИ 2016

рдореИрдВ https://api.marketcircle.net/v1/ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреЛрдб рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рд▓рд┐рдЦреЗ рдмрд┐рдирд╛ рдЕрдиреБрд░реЛрдз рд╢рд╣рд░ рдореЗрдВ рдПрдХрдорд╛рддреНрд░ рдЧреЗрдо рд╣реИ - рдпреВрдирд┐рд░реЗрд╕реНрдЯ рдЕрдм рдкрд╛рдпрдерди 3 рдХреЗ рд▓рд┐рдП рдЗрдВрд╕реНрдЯреЙрд▓ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд▓рдбрд╝рдХреЗ, рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рдЬрд▓реНрдж рд╣реА рдорд┐рд▓ рдЬрд╛рдПрдЧрд╛ ..

@eoco рдареАрдХ рд╣реИ, рдпрд╣ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИред рдореИрдВ рдЗрд╕реЗ рдУрдПрд╕ рдПрдХреНрд╕ 10.11.6 рдмреАрдЯрд╛, рдкрд╛рдпрдерди 3.5.1 рдкрд░ рдЕрдиреБрд░реЛрдз 2.10.0 рдХреЗ рд╕рд╛рде рдкреБрди: рдкреЗрд╢ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред рдХреНрдпрд╛ рдЖрдк рд▓рдЧрд╛рддрд╛рд░ рдпрд╛ рд░реБрдХ-рд░реБрдХ рдХрд░ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рддреЗ рд╣реИрдВ?

рд▓рдЧрд╛рддрд╛рд░ - рдореИрдВ рдЕрднреА рддрдХ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдХрдиреЗрдХреНрдЯ рдирд╣реАрдВ рд╣реЛ рдкрд╛рдпрд╛ рд╣реВрдВред

рдореЗрд░реЗ рдЯреНрд░реЗрд╕рдмреИрдХ рдорд╛рдЗрдВрдбрд╡ рдХреЗ рдКрдкрд░ рдХреЗ рдмрд╣реБрдд рдХрд░реАрдм рд╣реИрдВ, рдпрд╣рд╛рдБ рдиреАрдЪреЗ рдкреЛрд╕реНрдЯ рдХрд░реЗрдВрдЧреЗред рд▓реЗрдХрд┐рди рдПрдлрд╡рд╛рдИрдЖрдИ рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВрдиреЗ рдкрд╛рдЗрдерди 2.7 рдХреЗ рд▓рд┐рдП рднреА рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдП рдФрд░ рдПрдХ рдПрд╕рдПрдирдЖрдИрдПрдорд╕рд┐рдВрдЧ рдЪреЗрддрд╛рд╡рдиреА рдкреНрд░рд╛рдкреНрдд рдХреА: рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЙрд╕реА рдЪреЗрддрд╛рд╡рдиреА рдиреЗ рдХрд╣рд╛ рдХрд┐ рдЗрд╕реЗ рдкрд╛рдЗрдерди рдХрд╛ рдкреБрд░рд╛рдирд╛ рд╕рдВрд╕реНрдХрд░рдг рд╣реЛрдиреЗ рдХреЗ рд╕рд╛рде рдХрд░рдирд╛ рдкрдбрд╝ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рд╣реИ рдорд╛рдорд▓рд╛ред рднрд▓реЗ рд╣реА, рд╡рд╣рд╛рдВ рдХреЛрдИ рдХрдиреЗрдХреНрд╢рди рднрд╛рдЧреНрдп рднреА рдирд╣реАрдВ рд╣реИред

SNIMissingWarning /Library/Python/2.7/site-packages/requests-2.10.0-py2.7.egg/requests/packages/urllib3/util/ssl_.py:122: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. You can upgrade to a newer version of Python to solve this. For more information, see https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning.

рдореИрдВ рднреА рд╡рд╛рдкрд╕ рдЧрдпрд╛ рдФрд░ рдпреВрдирд┐рд░реЗрд╕реНрдЯ рдХреЛ рдкрд╛рдпрдерди 2.7 рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдФрд░ рдПрдХ рдФрд░ рдИрдУрдПрдл рддреНрд░реБрдЯрд┐ рдкреНрд░рд╛рдкреНрдд рдХреА, рд▓реЗрдХрд┐рди рдЗрд╕ рдмрд╛рд░ urllib2 рдореЗрдВ:

urllib2.URLError: <urlopen error [Errno 8] _ssl.c:510: EOF occurred in violation of protocol>

рддреЛ- рдЗрд╕рдХрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ Requests.py рд╕реЗ рдХреЛрдИ рд▓реЗрдирд╛-рджреЗрдирд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдИрдорд╛рдирджрд╛рд░ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдпрд╣рд╛рдБ рд╕реЗ рдХрд╣рд╛рдБ рдЬрд╛рдирд╛ рд╣реИ, рдкрд╛рдпрдерди рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛ред рдЕрдиреБрд░реЛрдз/рдкрд╛рдпрдерди 3.5.1 рд╕реЗ рдЯреНрд░реЗрд╕рдмреИрдХ рдпрд╣рд╛рдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
`
рдЖрдпрд╛рдд рдЕрдиреБрд░реЛрдз
рдпреВрдЖрд░рдПрд▓ = ' https://api.marketcircle.net/v1/ '
r = request.get(url) # рдХреЛрдИ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╢реАрд░реНрд╖рд▓реЗрдЦ рдирд╣реАрдВ рдЬреЛрдбрд╝ рд░рд╣рд╛ рд╣реИ, рдмрд╕ рдХрдиреЗрдХреНрд╢рди рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд░рд╣рд╛ рд╣реИ

рдЯреНрд░реЗрд╕рдмреИрдХ (рд╕рдмрд╕реЗ рд╣рд╛рд▓рд┐рдпрд╛ рдХреЙрд▓ рдЕрдВрддрд┐рдо):
рдлрд╝рд╛рдЗрд▓ "/Volumes/Harvey_740/Flask_Daylite_02/myvenv/lib/python3.5/site-packages/requests/packages/urllib3/connectionpool.py", рд▓рд╛рдЗрди 578, urlopen рдореЗрдВ
рдЦрдВрдбрд┐рдд = рдЦрдВрдбрд┐рдд)
рдлрд╝рд╛рдЗрд▓ "/Volumes/Harvey_740/Flask_Daylite_02/myvenv/lib/python3.5/site-packages/requests/packages/urllib3/connectionpool.py", рд▓рд╛рдЗрди 351, _make_request рдореЗрдВ
self._validate_conn(conn)
рдлрд╝рд╛рдЗрд▓ "/Volumes/Harvey_740/Flask_Daylite_02/myvenv/lib/python3.5/site-packages/requests/packages/urllib3/connectionpool.py", рд▓рд╛рдЗрди 814, _validate_conn рдореЗрдВ
conn.connect ()
рдлрд╝рд╛рдЗрд▓ "/Volumes/Harvey_740/Flask_Daylite_02/myvenv/lib/python3.5/site-packages/requests/packages/urllib3/connection.py", рд▓рд╛рдЗрди 289, рдХрдиреЗрдХреНрдЯ рдореЗрдВ
ssl_version=resolved_ssl_version)
рдлрд╝рд╛рдЗрд▓ "/Volumes/Harvey_740/Flask_Daylite_02/myvenv/lib/python3.5/site-packages/requests/packages/urllib3/util/ssl_.py", рд▓рд╛рдЗрди 308, ssl_wrap_socket рдореЗрдВ
рд╡рд╛рдкрд╕реА рд╕рдВрджрд░реНрдн.wrap_socket(sock, server_hostname=server_hostname)
рдлрд╝рд╛рдЗрд▓ "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/ssl.py", рдкрдВрдХреНрддрд┐ 376, рд░реИрдк_рд╕реЙрдХреЗрдЯ рдореЗрдВ
_рд╕рдВрджрд░реНрдн = рд╕реНрд╡рдпрдВ)
рдлрд╝рд╛рдЗрд▓ "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/ssl.py", рд▓рд╛рдЗрди 747, __init__ рдореЗрдВ
self.do_handshake ()
рдлрд╝рд╛рдЗрд▓ "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/ssl.py", рд▓рд╛рдЗрди 983, do_handshake рдореЗрдВ
self._sslobj.do_handshake ()
рдлрд╝рд╛рдЗрд▓ "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/ssl.py", рд▓рд╛рдЗрди 628, do_handshake рдореЗрдВ
self._sslobj.do_handshake ()
ssl.SSLEOFError: EOF рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рдЙрд▓реНрд▓рдВрдШрди рдореЗрдВ рд╣реБрдЖ (_ssl.c:645)

рдЙрдкрд░реЛрдХреНрдд рдЕрдкрд╡рд╛рдж рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рджреМрд░рд╛рди, рдПрдХ рдФрд░ рдЕрдкрд╡рд╛рдж рд╣реБрдЖ:

рдЯреНрд░реЗрд╕рдмреИрдХ (рд╕рдмрд╕реЗ рд╣рд╛рд▓рд┐рдпрд╛ рдХреЙрд▓ рдЕрдВрддрд┐рдо):
рдлрд╝рд╛рдЗрд▓ "/Volumes/Harvey_740/Flask_Daylite_02/myvenv/lib/python3.5/site-packages/requests/adapters.py", рд▓рд╛рдЗрди 403, рднреЗрдЬрдиреЗ рдореЗрдВ
рд╕рдордпрдмрд╛рд╣реНрдп = рд╕рдордпрдмрд╛рд╣реНрдп
рдлрд╝рд╛рдЗрд▓ "/Volumes/Harvey_740/Flask_Daylite_02/myvenv/lib/python3.5/site-packages/requests/packages/urllib3/connectionpool.py", рд▓рд╛рдЗрди 604, urlopen рдореЗрдВ
SSLError (рдИ) рдмрдврд╝рд╛рдПрдБ
request.packages.urllib3.exceptions.SSLError: EOF рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рдЙрд▓реНрд▓рдВрдШрди рдореЗрдВ рд╣реБрдЖ (_ssl.c:645)
`
рддреЛ, рдореЗрд░реА рдорд╛рдлрд╝реА рдЕрдЧрд░ рдпрд╣ рдорджрджрдЧрд╛рд░ рдирд╣реАрдВ рд╣реИред рд╢реБрдХреНрд░рд┐рдпрд╛!

рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рдЗрд╕реЗ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдореБрдЭреЗ рдЖрдЙрдЯрдкреБрдЯ рджрд┐рдЦрд╛ рд╕рдХрддреЗ рд╣реИрдВ? python3 -c "import ssl; print(ssl.OPENSSL_VERSION)"

рддреЛ рдпрд╣ рдкрд░рд┐рдгрд╛рдо рд╣реИ: (рдУрдкреА рдореЗрдВ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рдХрдорд╛рдВрдб рд╕реЗ рдЕрд▓рдЧ рд╕рдВрд╕реНрдХрд░рдг)

рдУрдкрдирдПрд╕рдПрд╕рдПрд▓ 0.9.8zh 14 рдЬрдирд╡рд░реА 2016

рд╢реБрдХреНрд░рд┐рдпрд╛!

@eoco рдареАрдХ рд╣реИ, рдЕрдЪреНрдЫрд╛ред

рддреЛ рдпрд╣рд╛рдВ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдкрдХрд╛ рдкрд╛рдпрдерди 3 рд╕рд┐рд╕реНрдЯрдо рдУрдкрдирдПрд╕рдПрд╕рдПрд▓ рдХреЗ рдЦрд┐рд▓рд╛рдл рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ, рдЬреЛ рдХрд┐ рдкреНрд░рд╛рдЪреАрди рд╣реИред рдЖрдкрдХреЗ рдкрд┐рдк рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдХреНрдпрд╛ рд╣реИ? рдХреНрдпрд╛ рдЖрдк рдореЗрд░реЗ рд▓рд┐рдП python3 -m pip freeze рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ?

рд╡рд╣рд╛рдВ рдмрд╣реБрдд рдЬреНрдпрд╛рджрд╛ рдирд╣реАрдВ..

Mozaica-iMac:~ eoc$ python3 -m pip рдлреНрд░реАрдЬ

py3minepi==0.0.1
requests==2.10.0
You are using pip version 8.1.1, however version 8.1.2 is available.

рдЗрд╕ рдкрд░ рдКрдкрд░ рдФрд░ рдЖрдЧреЗ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ рдЗрд╕рд▓рд┐рдП рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрдкрдХреЗ рд╕рдордп рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░рддрд╛ рд╣реВрдВред

рдареАрдХ рд╣реИ, рддреЛ рдЖрдкрдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ python3 -m pip install pyopenssl pyasn1 ndg-httpsclient рдЪрд▓рд╛рдирд╛ рд╣реИред рдЗрд╕рд╕реЗ рдЖрдкрдХреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╣реЛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдпрджрд┐ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рддреЛ рд╣рдо рдЕрдзрд┐рдХ рдЖрдХреНрд░рд╛рдордХ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╣рдореНрдоред рдмрд╛рдж рдореЗрдВ рднреА рд╡рд╣реА рддреНрд░реБрдЯрд┐-

рдкрд╛рдпрдерди 3.5-рдПрдо рдкрд╛рдЗрдк рдлреНрд░реАрдЬ

cffi==1.6.0
cryptography==1.4
idna==2.1
ndg-httpsclient==0.4.1
py3minepi==0.0.1
pyasn1==0.1.9
pycparser==2.14
pyOpenSSL==16.0.0
requests==2.10.0
six==1.10.0

@eoco рдПрдЪрдЖрд░рдПрдо ред рдХреНрдпрд╛ рдЖрдк рдЗрд╕реЗ рдореЗрд░реЗ рд▓рд┐рдП рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ? python3 -c "from requests.packages.urllib3.contrib import pyopenssl; pyopenssl.inject_into_urllib3()" рдФрд░ рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рд╡рд╣ рдХреНрдпрд╛ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рддрд╛ рд╣реИ? python3 -c "from cryptography.hazmat.backends.openssl.backend import backend; print(backend.openssl_version_text())" рднреА рдЪрд▓рд╛рдПрдВред

рд╡рд╛рд╣, рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕рдорд╕реНрдпрд╛ рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддрд╛ рд╣реИред рдкрд╣рд▓реА рдмрд╛рд░ рдЪрд▓рдиреЗ рдкрд░ рдореБрдЭреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЯреНрд░реЗрд╕рдмреИрдХ рдорд┐рд▓рд╛:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/requests/packages/urllib3/contrib/pyopenssl.py", line 63, in <module>
    from urllib3.packages.backports.makefile import backport_makefile
ImportError: No module named 'urllib3'

urllib рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдирд╣реАрдВ рд╣реИ? рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рдореИрдВрдиреЗ urllib рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдЕрдм рдореИрдВ рдКрдкрд░ рдФрд░ рдЪрд▓ рд░рд╣рд╛ рд╣реВрдВред

рдореИрдВ рдЖрдкрдХреЛ рдпрд╣ рдирд╣реАрдВ рдмрддрд╛ рд╕рдХрддрд╛ рдХрд┐ рдореИрдВ рдЗрд╕рдХреЗ рд╕рд╛рде рдЖрдкрдХреА рдорджрдж рдХреА рдХрд┐рддрдиреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░рддрд╛ рд╣реВрдВ, рдЖрдк рдмрд╣реБрдд рдЖрдЧреЗ рдФрд░ рдЖрдЧреЗ рдЧрдПред рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдХреНрдпрд╛ Python.org рдкрд░ рдореИрдХ рдХреЗ рд▓рд┐рдП Python 3.5 рдбрд╛рдЙрдирд▓реЛрдб рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рд╣реИ? рдпрд╣ рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рд╕рд╛рдл рд╕реНрдерд╛рдкрдирд╛ рдереАред рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рд╢рд╛рдпрдж рдпрд╣ рдХрд┐рд╕реА рдФрд░ рдХреА рдорджрдж рдХрд░реЗрдЧрд╛ рдЕрдЧрд░ рд╡реЗ рдЗрд╕ рддрд░рд╣ рдХреБрдЫ рдХрд░рддреЗ рд╣реИрдВред

рдлрд┐рд░ рд╕реЗ, рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж!

рдЖрд╣, рдпрд╣ рдПрдХ рдЙрдЪрд┐рдд рдЕрдиреБрд░реЛрдз рдмрдЧ рдХреА рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИред Urllib3 рдХреЗ рдХреЛрдбрдмреЗрд╕ рдореЗрдВ рдПрдХ рдЧреИрд░-рд╕рд╛рдкреЗрдХреНрд╖ рдЖрдпрд╛рдд рд╣реИ рдЬреЛ рддрдм рдЯреВрдЯ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рд╣рдо рдЗрд╕реЗ рд╡реЗрдВрдбрд░рд╛рдЗрдЬрд╝ рдХрд░рддреЗ рд╣реИрдВ! рд╣рдореЗрдВ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рд▓рдХреНрд╖реНрдп рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред

@eoco рддреЛ рдЬрдм рд╣рдо рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрд╕ рдлрд┐рдХреНрд╕ рдХреЛ рдЪрд▓рд╛ рд░рд╣реЗ рд╣реИрдВ (shazow/urllib3#901 рджреЗрдЦреЗрдВ), рдЖрдкрдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рдлрд┐рдХреНрд╕ рд╣реЛрдордмреНрд░реВ рдЬреИрд╕реЗ рдХреБрдЫ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд╛рдпрдерди 3 рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣ рдЖрдкрдХреЗ рдкрд╛рдпрдерди 3 рдХреЛ рдПрдХ рдмрд╣реБрдд рдирдП рдУрдкрдирдПрд╕рдПрд╕рдПрд▓ рдХреЗ рдЦрд┐рд▓рд╛рдл рд▓рд┐рдВрдХ рдХрд░реЗрдЧрд╛, рдЬреЛ рдЖрдкрдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдзреЛрдВ рдФрд░ рд╕рд┐рд╕реНрдЯрдо рдЯреАрдПрд▓рдПрд╕ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░реЗрдЧрд╛ред

рд╕рдордЭ рдЧрдпрд╛ред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдмрд╕ urllib3 рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЧрдИ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдмрд╕ рдРрд╕рд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рдЗрд╕рдХреЗ рдХрд╛рд░рдг рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдХрд┐рд╕реА рднреА рднреНрд░рдо рдХреЗ рд▓рд┐рдП рдХреНрд╖рдорд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

рд╢реБрдХреНрд░рд┐рдпрд╛!

рдореИрдВ рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдФрд░ рдРрдк рдХреЛ рд▓реЛрдЪрджрд╛рд░ рд▓реЛрдбрдмреИрд▓реЗрдВрд╕рд░ рдХреЗ рдкреАрдЫреЗ рдбрд╛рд▓рдиреЗ рдХреЗ рдмрд╛рдж рдПрдХ рд╣реА рдмрдЧ рдореЗрдВ рдЖрдпрд╛, рдкрд╣рд▓реЗ рдХрднреА рдирд╣реАрдВ рд╣реБрдЖред

рдореЗрд░реЗ рдкрд╛рд╕ urllib3 рднреА рд╕реНрдерд╛рдкрд┐рдд рд╣реИред

рдХреНрдпрд╛ pyopenssl рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдЙрдореНрдореАрдж рд╣реИ? рдореИрдВрдиреЗ рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ рдмрд╣реБрдд рд╕реА рд╕реА-рд╕реНрддрд░реАрдп рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдереАрдВ (рдЬреЛ рдореЗрд░реА рдбреЙрдХрдЯрд░ рдЫрд╡рд┐ рдореЗрдВ рдХреБрдЫ рд▓рд╛рдкрддрд╛ рднрд╛рдЧреЛрдВ рдХрд╛ рдХрд╛рд░рдг рд╣реЛ рд╕рдХрддреА рд╣реИрдВ)ред

[2016-06-29 02:27:59,932: CRITICAL/MainProcess] Task ventures.tasks.cache_warmup[ae2c97eb-3b28-4896-8d0f-42f712115707] INTERNAL ERROR: SSLError(SSLError(SSLEOFError(8, 'EOF occurred in violation of protocol (_ssl.c:645)'),),)
Traceback (most recent call last):
  File "/usr/local/lib/python3.5/dist-packages/celery/app/trace.py", line 253, in trace_task
    I, R, state, retval = on_error(task_request, exc, uuid)
  File "/usr/local/lib/python3.5/dist-packages/celery/app/trace.py", line 201, in on_error
    R = I.handle_error_state(task, eager=eager)
  File "/usr/local/lib/python3.5/dist-packages/celery/app/trace.py", line 85, in handle_error_state
    }[self.state](task, store_errors=store_errors)
  File "/usr/local/lib/python3.5/dist-packages/celery/app/trace.py", line 125, in handle_failure
    einfo=einfo)
  File "/usr/local/lib/python3.5/dist-packages/celery/utils/dispatch/signal.py", line 166, in send
    response = receiver(signal=self, sender=sender, **named)
  File "/srv/core/celery.py", line 31, in notify_task_failure
    """.format(sender, exception, args, kwargs))
  File "/usr/lib/python3.5/logging/__init__.py", line 1308, in error
    self._log(ERROR, msg, args, **kwargs)
  File "/usr/lib/python3.5/logging/__init__.py", line 1415, in _log
    self.handle(record)
  File "/usr/lib/python3.5/logging/__init__.py", line 1425, in handle
    self.callHandlers(record)
  File "/usr/lib/python3.5/logging/__init__.py", line 1487, in callHandlers
    hdlr.handle(record)
  File "/usr/lib/python3.5/logging/__init__.py", line 855, in handle
    self.emit(record)
  File "/srv/core/management/logger/slack.py", line 28, in emit
    notify_slack(message, channel)
  File "/usr/local/lib/python3.5/dist-packages/celery/local.py", line 188, in __call__
    return self._get_current_object()(*a, **kw)
  File "/usr/local/lib/python3.5/dist-packages/celery/app/trace.py", line 439, in __protected_call__
    return orig(self, *args, **kwargs)
  File "/usr/local/lib/python3.5/dist-packages/celery/app/task.py", line 420, in __call__
    return self.run(*args, **kwargs)
  File "/srv/core/tasks.py", line 66, in notify_slack
    data=json.dumps(payload), headers={'Content-Type': 'application/json'}
  File "/usr/local/lib/python3.5/dist-packages/requests/api.py", line 107, in post
    return request('post', url, data=data, json=json, **kwargs)
  File "/usr/local/lib/python3.5/dist-packages/requests/api.py", line 53, in request
    return session.request(method=method, url=url, **kwargs)
  File "/usr/local/lib/python3.5/dist-packages/requests/sessions.py", line 468, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/local/lib/python3.5/dist-packages/requests/sessions.py", line 576, in send
    r = adapter.send(request, **kwargs)
  File "/usr/local/lib/python3.5/dist-packages/requests/adapters.py", line 447, in send
    raise SSLError(e, request=request)
requests.exceptions.SSLError: EOF occurred in violation of protocol (_ssl.c:645)
pip freeze:

amqp==1.4.9
analytics-python==1.1.0
anyjson==0.3.3
beautifulsoup4==4.4.1
billiard==3.3.0.23
bleach==1.4.2
boto==2.39.0
celery==3.1.23
Django==1.8.13
django-appconf==1.0.2
django-compressor==2.0
django-countries==3.4.1
django-filter==0.13.0
django-haystack==2.5.dev0
django-htmlmin==0.9.0
django-modelcluster==1.1
django-overextends==0.4.1
django-redis==4.3.0
django-rest-swagger==0.3.5
django-storages-redux==1.3.2
django-taggit==0.18.3
django-treebeard==4.0.1
djangorestframework==3.3.3
docopt==0.4.0
docutils==0.12
drf-extensions==0.2.8
dropbox==4.0
elasticsearch==1.8.0
et-xmlfile==1.0.1
geopy==1.11.0
google-api-python-client==1.5.0
gunicorn==19.4.5
hiredis==0.2.0
html5lib==0.9999999
httplib2==0.9.2
jdcal==1.2
jsonfield==1.0.3
kombu==3.0.35
mandrill==1.0.57
Markdown==2.6.5
mock==1.0.1
numpy==1.11.0
oauth2client==2.2.0
openpyxl==2.3.4
Pillow==3.1.1
psycopg2==2.6.1
pyasn1==0.1.9
pyasn1-modules==0.0.8
pycurl==7.43.0
pygobject==3.20.0
PyMySQL==0.7.2
python-apt==1.1.0b1
python-dateutil==2.5.3
pytz==2016.4
PyYAML==3.11
rcssmin==1.0.6
redis==2.10.5
requests==2.9.1
rjsmin==1.0.12
rsa==3.4.2
simplejson==3.8.2
six==1.10.0
sphinx-me==0.3
unattended-upgrades==0.1
Unidecode==0.4.19
uritemplate==0.6
urllib3==1.16
wagtail==1.4.5
Willow==0.3.1
python3 -c "from requests.packages.urllib3.contrib import pyopenssl; pyopenssl.inject_into_urllib3()"
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/usr/local/lib/python3.5/dist-packages/requests/packages/urllib3/contrib/pyopenssl.py", line 49, in <module>
    from ndg.httpsclient.ssl_peer_verification import SUBJ_ALT_NAME_SUPPORT
ImportError: No module named 'ndg'

@shredding pyopenssl, ndg-httpsclient, рдФрд░ pyasn1 рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рдЗрд╕ рд╕рдордп рдЖрдкрдХреЛ рддреАрдиреЛрдВ рдХреА рдЬрд░реВрд░рдд рд╣реИред

рдареАрдХ рд╣реИ, рдореИрдВ рдЗрд╕реЗ рдПрдХ рд╢реЙрдЯ рджреВрдВрдЧрд╛ (рдореИрдВ рдХреЗрд╡рд▓ рдЗрд╕реЗ рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рдкрд░ рдкреБрди: рдкреЗрд╢ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдФрд░ рд╡рд╛рдкрд╕ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ)ред

рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ docker рдкрд░ ubuntu:latest рдкреИрдХреЗрдЬ рдХреЗ рднреАрддрд░ python3 рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рдЖрдкрдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ

RUN apt-get install build-essentials python-dev libffi

рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ

pyOpenSSL==16.0.0
ndg-httpsclient==0.4.1
pyasn1==0.1.9

... рдЖрдкрдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдПред txt

рдпрд╣рд╛рдВ рдПрдХ рд╣реА рдореБрджреНрджрд╛ рдорд┐рд▓рд╛ред
pyopenssl, ndg-httpsclient, pyasn1 рдФрд░ urllib3 ofcourse рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдХреЗ рдирд┐рд╢реНрдЪрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ред

рдореИрдВ рдЕрдкрдиреА рддрд░рдл рд╕реЗ рднреА рджреЛрдмрд╛рд░рд╛ рдирд╣реАрдВ рд╣реЛрддрд╛ред

рдореИрдВ рдЯреНрд╡рд┐рдЯрд░ рдПрдкреАрдЖрдИ рд╕реЗ рдЬреБрдбрд╝рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдореБрдЭреЗ рдиреАрдЪреЗ рдХреА рддреНрд░реБрдЯрд┐ рдорд┐рд▓ рд░рд╣реА рдереА:
requests.exceptions.SSLError: EOF occurred in violation of protocol (_ssl.c:645)

рдореИрдВрдиреЗ рдмрдВрджрд░ рдкреИрдЪ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдФрд░ рд▓реЗрдХрд┐рди рд▓реЗрдЯрд░ рдордиреА рдкреИрдЪ рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛, рдореИрдВрдиреЗ pyOpenSSL, ndg-httpsclient, pyasn1 рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдФрд░ рдХрд┐рд╕реА рддрд░рд╣ рдпрд╣ рдХрд╛рдо рдХрд┐рдпрд╛ред
рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдмрд╛рдж рдореБрдЭреЗ рдпрд╣ рдорд┐рд▓ рдЧрдпрд╛
Traceback (most recent call last): File "twitter_friend.py", line 32, in <module> stream.statuses.filter(follow='sajjkum') File "C:\Python27\lib\site-packages\twython\streaming\types.py", line 66, in filter self.streamer._request(url, 'POST', params=params) File "C:\Python27\lib\site-packages\twython\streaming\api.py", line 139, in _request response = _send(retry_counter) File "C:\Python27\lib\site-packages\twython\streaming\api.py", line 123, in _send response = func(url, **requests_args) File "C:\Python27\lib\site-packages\requests\sessions.py", line 511, in post return self.request('POST', url, data=data, json=json, **kwargs) File "C:\Python27\lib\site-packages\requests\sessions.py", line 468, in request resp = self.send(prep, **send_kwargs) File "C:\Python27\lib\site-packages\requests\sessions.py", line 576, in send r = adapter.send(request, **kwargs) File "C:\Python27\lib\site-packages\requests\adapters.py", line 426, in send raise ConnectionError(err, request=request) requests.exceptions.ConnectionError: ('Connection aborted.', BadStatusLine("''",))

рдФрд░ рдЗрд╕
Traceback (most recent call last): File "twitter_friend.py", line 32, in <module> stream.statuses.filter(follow='sajjkum') File "C:\Python27\lib\site-packages\twython\streaming\types.py", line 66, in filter self.streamer._request(url, 'POST', params=params) File "C:\Python27\lib\site-packages\twython\streaming\api.py", line 139, in _request response = _send(retry_counter) File "C:\Python27\lib\site-packages\twython\streaming\api.py", line 123, in _send response = func(url, **requests_args) File "C:\Python27\lib\site-packages\requests\sessions.py", line 511, in post return self.request('POST', url, data=data, json=json, **kwargs) File "C:\Python27\lib\site-packages\requests\sessions.py", line 468, in request resp = self.send(prep, **send_kwargs) File "C:\Python27\lib\site-packages\requests\sessions.py", line 576, in send r = adapter.send(request, **kwargs) File "C:\Python27\lib\site-packages\requests\adapters.py", line 447, in send raise SSLError(e, request=request) requests.exceptions.SSLError: bad handshake: SysCallError(-1, 'Unexpected EOF')

рдореИрдВ рдЕрдЬрдЧрд░ 2.7, urllib3 (1.4), рдЕрдиреБрд░реЛрдз (2.9.1) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

рдпреЗ рджреЛрдиреЛрдВ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдмрддрд╛рддреА рд╣реИрдВ рдХрд┐ рджреВрд░рд╕реНрде рд╕рд░реНрд╡рд░ рдЖрдкрдХрд╛ рдЕрдиреБрд░реЛрдз рд╕реНрд╡реАрдХрд╛рд░ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЙрд╕ рддреНрд░реБрдЯрд┐ рдХрд╛ рдирд┐рджрд╛рди рдХрд░рдирд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдЖрдк рдЕрдкрдирд╛ рдУрдкрдирдПрд╕рдПрд╕рдПрд▓ рдЕрдкрдЧреНрд░реЗрдб рдХрд░реЗрдВ рдФрд░ рдкреБрдирдГ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред

pip install --force-reinstall requests[security] рдиреЗ рдЗрд╕реЗ рдореЗрд░реЗ рд▓рд┐рдП рд╣рд▓ рдХрд░ рджрд┐рдпрд╛ред

рдКрдкрд░ рдмрддрд╛рдП рдЧрдП рд╣рд░ рд╕рдорд╛рдзрд╛рди рдХреЛ рдЖрдЬрдорд╛рдиреЗ рдХреЗ рдмрд╛рдж рдореБрдЭреЗ рд╡рд╣реА рдЕрдкрд╡рд╛рдж рдорд┐рд▓ рд░рд╣рд╛ рд╣реИред рддреНрд░реБрдЯрд┐ рдЯреНрд░реЗрд╕:
рдлрд╝рд╛рдЗрд▓ "/home/prateek/.local/lib/python2.7/site-packages/requests/sessions.py", рд▓рд╛рдЗрди 488, рдЕрдиреБрд░реЛрдз рдореЗрдВ
рд╕рдореНрдорд╛рди = рд╕реНрд╡рдпрдВ рднреЗрдЬреЗрдВ (рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХрд╛, *send_kwargs)рдлрд╝рд╛рдЗрд▓ "/home/prateek/.local/lib/python2.7/site-packages/requests/sessions.py", рд▓рд╛рдЗрди ремрежреп, рднреЗрдЬрдиреЗ рдореЗрдВрдЖрд░ = рдПрдбреЗрдкреНрдЯрд░ред рднреЗрдЬреЗрдВ (рдЕрдиреБрд░реЛрдз, * kwargs)
рдлрд╝рд╛рдЗрд▓ "/home/prateek/.local/lib/python2.7/site-packages/requests/adapters.py", рд▓рд╛рдЗрди 497, рднреЗрдЬрдиреЗ рдореЗрдВ
SSLError рдмрдврд╝рд╛рдПрдВ (рдИ, рдЕрдиреБрд░реЛрдз = рдЕрдиреБрд░реЛрдз)
request.exceptions.SSLError: ("рдЦрд░рд╛рдм рд╣реИрдВрдбрд╢реЗрдХ: SysCallError (-1, 'рдЕрдирдкреЗрдХреНрд╖рд┐рдд EOF')",)

рд╕рд┐рд╕реНрдЯрдо рдкреИрдХреЗрдЬ рдЬрд╛рдирдХрд╛рд░реА:
рд╕реАрдПрдлрдЖрдИ==1.9.1
рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлреА == 1.6
рдЖрдИрдбреАрдирд╛ == 2.1
ndg-httpsclient==0.4.2
рдкреАрдХреЗрдЬреА-рд╕рдВрд╕рд╛рдзрди==0.0.0
pyasn1==0.1.9
pycparser==2.17
pyOpenSSL==16.2.0
рдЕрдиреБрд░реЛрдз == 2.12.3
рдЫрд╣ == 1.10.0

рдкрд╛рдпрдерди: рдкрд╛рдпрдерди 3.5.2 (рдбрд┐рдлрд╝реЙрд▓реНрдЯ, 5 рдЬреБрд▓рд╛рдИ 2016, 12:43:10)
рдУрдПрд╕: рдЙрдмрдВрдЯреВ 16.04
рдУрдкрдирдПрд╕рдПрд╕рдПрд▓ 1.0.2g 1 рдорд╛рд░реНрдЪ 2016

рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЖрдкрдХреА рдорджрдж рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░реЗрдВред

рдЗрд╕рдХрд╛ рд▓рдЧрднрдЧ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдорддрд▓рдм рд╣реИ рдХрд┐ рджреВрд░рд╕реНрде рд╕рд╣рдХрд░реНрдореА рдХреЛ рдкреЗрд╢ рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рд╕рд┐рдлрд░ рд╕реНрд╡реАрдХрд╛рд░реНрдп рдирд╣реАрдВ рд╣реИрдВред рдпрджрд┐ рдЖрдк рдЙрд╕ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ openssl s_client -connect <host>:<port> рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдЖрдк рд╕рдВрдкрд░реНрдХ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдХреНрдпрд╛ рдЖрдк рдореБрдЭреЗ рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдЙрдЯрдкреБрдЯ рдХреНрдпрд╛ рд╣реИ? (рдХреГрдкрдпрд╛ OpenSSL 1.0.2g рдХреЗ рд╕рд╛рде рдРрд╕рд╛ рдХрд░рдирд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдЬрд┐рд╕рдХрд╛ рдЖрдк рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ)ред

@ рд▓реБрдХрд╛рд╕рд╛ рдЖрдкрдХреА рддреНрд╡рд░рд┐рдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдЬреИрд╕рд╛ рдЖрдкрдиреЗ рдкреВрдЫрд╛ рдЖрдЙрдЯрдкреБрдЯ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдореИрдВ рдУрдкрдирдПрд╕рдПрд╕рдПрд▓ 1.0.1f 6 рдЬрдирд╡рд░реА 2014 рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЬреЛрдбрд╝ рд░рд╣рд╛ рд╣реВрдВ
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЗрд╕ рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред

@> openssl version
OpenSSL 1.0.2g  1 Mar 2016
@> openssl s_client -connect <host>:<port>
CONNECTED(00000003)
140401805448856:error:140790E5:SSL routines:ssl23_write:ssl handshake failure:s23_lib.c:177:
no peer certificate available
No client certificate CA names sent
SSL handshake has read 0 bytes and written 305 bytes
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
    Protocol  : TLSv1.2
    Cipher    : 0000
    Session-ID: 
    Session-ID-ctx: 
    Master-Key: 
    Key-Arg   : None
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    Start Time: 1480703355
    Timeout   : 300 (sec)

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдореИрдВрдиреЗ рдУрдкрдирдПрд╕рдПрд▓ рдХреЗ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рдФрд░ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ:

@> openssl version
OpenSSL 1.0.1f 6 Jan 2014
@> openssl s_client -connect <server>:<host>
CONNECTED(00000003)
depth=0 C = US, ST = California, O = Internet Widgits Pty Ltd
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 C = US, ST = California, O = Internet Widgits Pty Ltd
verify error:num=27:certificate not trusted
verify return:1
depth=0 C = US, ST = California, O = Internet Widgits Pty Ltd
verify error:num=21:unable to verify the first certificate
verify return:1
Certificate chain
 0 s:/C=US/ST=California/O=Internet Widgits Pty Ltd
   i:/C=US/ST=California/O=Internet Widgits Pty Ltd/CN=John Smith
Server certificate
BEGIN CERTIFICATE
<certificate>
END CERTIFICATE
subject=/C=US/ST=California/O=Internet Widgits Pty Ltd
issuer=/C=US/ST=California/O=Internet Widgits Pty Ltd/CN=<Name>

No client certificate CA names sent
SSL handshake has read 2120 bytes and written 477 bytes

New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES256-SHA384
Server public key is 4096 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
SSL-Session:
    Protocol  : TLSv1.2
    Cipher    : ECDHE-RSA-AES256-SHA384
    Session-ID: C7AEA448B9E21C30D90D1377904426A9D1A21971785D547378CA07ACDAC00161
    Session-ID-ctx: 
    Master-Key: C5B31E9D7A59EF4E6A2657E9F55A64B89F4AE3BBDFD864ADD1087449AA927D9C1655A76E44C3E30FF2301DB00C1CB2F7
    Key-Arg   : None
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    Start Time: 1480703425
    Timeout   : 300 (sec)
    Verify return code: 21 (unable to verify the first certificate)

рддреЛ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рд╕рд░реНрд╡рд░ рдХреЛ рдЖрдкрдХреЗ OpenSSL 1.0.2 рд╣реИрдВрдбрд╢реЗрдХ рдореЗрдВ рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдкрд░ рдмрд╣реБрдд рдЬрд╝реЛрд░рджрд╛рд░ рдЖрдкрддреНрддрд┐ рд╣реИред рдХреНрдпрд╛ рдЖрдк tcpdump рдпрд╛ Wireshark рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИрдВ? рдпрджрд┐ рдЖрдк рд╣реИрдВ, рддреЛ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдорджрджрдЧрд╛рд░ рд╣реЛрдЧрд╛ рдпрджрд┐ рдЖрдк рджреЛ рд╣реИрдВрдбрд╢реЗрдХ рдХрд╛ рдкреИрдХреЗрдЯ рдХреИрдкреНрдЪрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдореБрдЭреЗ рдЙрдкрд▓рдмреНрдз рдХрд░рд╛ рд╕рдХрддреЗ рд╣реИрдВред

www.celestrak.com . рдХреЗ рд╕рд╛рде рдпрд╣рд╛рдБ рднреА рдпрд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ

pip freeze --local

[...] Omitting other packages
cffi==1.9.1
cryptography==1.7.1
idna==2.2
ipaddress==1.0.17
ndg-httpsclient==0.4.2
numpy==1.11.3
pyasn1==0.1.9
pyOpenSSL==16.2.0
requests==2.12.4
scandir==1.4

openssl s_client -connect www.celestrak.com:443

CONNECTED(00000003)
140736264172552:error:140790E5:SSL routines:ssl23_write:ssl handshake failure:s23_lib.c:177:
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 0 bytes and written 308 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
    Protocol  : TLSv1.2
    Cipher    : 0000
    Session-ID:
    Session-ID-ctx:
    Master-Key:
    Key-Arg   : None
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    Start Time: 1483987800
    Timeout   : 300 (sec)
    Verify return code: 0 (ok)
---

openssl version

OpenSSL 1.0.2j  26 Sep 2016

рдореИрдВ рдпрд╣рд╛рдВ рд╕реБрдЭрд╛рдП рдЧрдП рдлрд┐рдХреНрд╕ (рдЬреЛ рдкрд╣рд▓реЗ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рдерд╛) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

class CustomAdapter(requests.adapters.HTTPAdapter):
    ''' See: http://stackoverflow.com/a/14146031/1334711 '''
    def init_poolmanager(self, connections, maxsize, block=False):
        self.poolmanager = requests.packages.urllib3.poolmanager.PoolManager(
            num_pools=connections,
            maxsize=maxsize,
            block=block,
            ssl_version=ssl.PROTOCOL_TLSv1)

# Other code

        if url_parse.scheme in ('http', 'https'):
            # It's a URL, get from Internet
            try:
                tle_file = requests.get(source).text

            except requests.exceptions.SSLError:
                pytest.set_trace()
                s = requests.Session()
                s.mount('https://', CustomAdapter())
                tle_file = s.get(source).text

рдкрд╛рдпрдерди v.2.7.13
рдУрдПрд╕: рдореИрдХреЛрдЬрд╝ 10.12.2

рдореБрдЭреЗ рдЬреЛ рддреНрд░реБрдЯрд┐ рдорд┐рд▓ рд░рд╣реА рд╣реИ рд╡рд╣ рд╣реИ:
SSLError: ("bad handshake: SysCallError(-1, 'Unexpected EOF')",)

@rubendibattista www.celestrack.com рдореЗрдВ рдПрдХ рднрдпрд╛рдирдХ TLS рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдпрд╣рд╛рдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдХрд╛ рдЕрд░реНрде рдпрд╣ рд╣реИ рдХрд┐ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдЖрдзреБрдирд┐рдХ рд╕рдВрд╕реНрдХрд░рдг рд╕рд░реНрд╡рд░ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рднреА рд╕рд┐рдлрд░ рд╕реВрдЯ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рд╕рднреА рдХрдордЬреЛрд░ рдФрд░ рдЯреВрдЯреЗ рд╣реБрдП рд╣реИрдВред

рдкрд╣рд▓реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдореИрдВ рдЗрд╕ рд╕рд░реНрд╡рд░ рд╕реЗ рдмрд┐рд▓реНрдХреБрд▓ рднреА рд╕рдВрдкрд░реНрдХ рди рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВред рдпрджрд┐ рдпрд╣ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЖрдк рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕рд┐рдлрд░ рд╕реБрдЗрдЯреНрд╕ рдореЗрдВ рд╕рдВрд╢реЛрдзрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

@ рд▓реБрдХрд╛рд╕рд╛ рдЖрдкрдХреЗ рд╕рдорд░реНрдерди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдЖрдкрдиреЗ рдЬреЛ рдХрд╣рд╛ рд╣реИ рдЙрд╕рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдВрдиреЗ рд╕рд╛рдЗрдЯ рдХреЗ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд┐рдпрд╛ рдФрд░ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рд╕реБрдЭрд╛рдП рдЧрдП рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдмреЗрд╣рддрд░ рд╕рдорд╛рдзрд╛рди рдЦреЛрдЬрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ред

рд╣рд╛рдп рджреЛрд╕реНрддреЛрдВ! рдпрд╣ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рднреА рдорд┐рд▓реАрдВред Python3 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдФрд░ рдХреЙрдореНрдмреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ (pyopenssl ndg-httpsclient pyasn1 urllib3) рдиреЗ рдЪрд╛рд▓ рдЪрд▓реАред рд▓реЗрдХрд┐рди рдореИрдВ рдЙрддреНрд╕реБрдХ рд╣реВрдВ рдХрд┐ рдХреИрд╕реЗ python2.7 OS X рдФрд░ Ubuntu рдкрд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИ:

рдкрд░рд┐рджреГрд╢реНрдп 001

  • рдЕрдЬрдЧрд░: 2.7
  • рдЕрдиреБрд░реЛрдз: 2.3.0
  • pyopenssl ndg-httpsclient pyasn1 urllib3: рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ
  • рд╡рд░реНрдЪреБрдЕрд▓рдПрдиреНрд╡: 1.11.6
  • рдУрдПрд╕: рдУрдПрд╕ рдПрдХреНрд╕ рдПрд▓ рдХреИрдкреНрдЯрди 10.11.6 (15G1217)
  • рдУрдкрдирдПрд╕рдПрд╕рдПрд▓: 0.9.8zh 14 рдЬрдирд╡рд░реА 2016

рддреНрд░реБрдЯрд┐

Traceback (most recent call last):
  File "loanpro_doc_uploader.py", line 113, in <module>
    run()
  File "loanpro_doc_uploader.py", line 109, in run
    loanpro = LoanPro(args.env, args.folder)
  File "loanpro_doc_uploader.py", line 36, in __init__
    self.get_all_customforms_data()
  File "loanpro_doc_uploader.py", line 69, in get_all_customforms_data
    resp = requests.get(url, headers=headers)
  File "/Users/vyscond/Projects/razorvision/loan-documents/env/lib/python2.7/site-packages/requests/api.py", line 55, in get
    return request('get', url, **kwargs)
  File "/Users/vyscond/Projects/razorvision/loan-documents/env/lib/python2.7/site-packages/requests/api.py", line 44, in request
    return session.request(method=method, url=url, **kwargs)
  File "/Users/vyscond/Projects/razorvision/loan-documents/env/lib/python2.7/site-packages/requests/sessions.py", line 456, in request
    resp = self.send(prep, **send_kwargs)
  File "/Users/vyscond/Projects/razorvision/loan-documents/env/lib/python2.7/site-packages/requests/sessions.py", line 559, in send
    r = adapter.send(request, **kwargs)
  File "/Users/vyscond/Projects/razorvision/loan-documents/env/lib/python2.7/site-packages/requests/adapters.py", line 382, in send
    raise SSLError(e, request=request)
requests.exceptions.SSLError: EOF occurred in violation of protocol (_ssl.c:590)

рдкрд░рд┐рджреГрд╢реНрдп 002

  • рдЕрдЬрдЧрд░: 3.4
  • рдЕрдиреБрд░реЛрдз: 2.12.5
  • pyopenssl ndg-httpsclient pyasn1 urllib3: рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ
  • рд╡рд░реНрдЪреБрдЕрд▓рдПрдиреНрд╡: 1.11.6
  • рдУрдПрд╕: рдУрдПрд╕ рдПрдХреНрд╕ рдПрд▓ рдХреИрдкреНрдЯрди 10.11.6 (15G1217)
  • рдУрдкрдирдПрд╕рдПрд╕рдПрд▓: 0.9.8zh 14 рдЬрдирд╡рд░реА 2016

рддреНрд░реБрдЯрд┐

Traceback (most recent call last):
  File "/Users/vyscond/Projects/razorvision/loan-documents/env3/lib/python3.4/site-packages/requests/packages/urllib3/connectionpool.py", line 594, in urlopen
    chunked=chunked)
  File "/Users/vyscond/Projects/razorvision/loan-documents/env3/lib/python3.4/site-packages/requests/packages/urllib3/connectionpool.py", line 350, in _make_request
    self._validate_conn(conn)
  File "/Users/vyscond/Projects/razorvision/loan-documents/env3/lib/python3.4/site-packages/requests/packages/urllib3/connectionpool.py", line 835, in _validate_conn
    conn.connect()
  File "/Users/vyscond/Projects/razorvision/loan-documents/env3/lib/python3.4/site-packages/requests/packages/urllib3/connection.py", line 323, in connect
    ssl_context=context)
  File "/Users/vyscond/Projects/razorvision/loan-documents/env3/lib/python3.4/site-packages/requests/packages/urllib3/util/ssl_.py", line 324, in ssl_wrap_socket
    return context.wrap_socket(sock, server_hostname=server_hostname)
  File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/ssl.py", line 365, in wrap_socket
    _context=self)
  File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/ssl.py", line 583, in __init__
    self.do_handshake()
  File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/ssl.py", line 810, in do_handshake
    self._sslobj.do_handshake()
ssl.SSLEOFError: EOF occurred in violation of protocol (_ssl.c:600)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/vyscond/Projects/razorvision/loan-documents/env3/lib/python3.4/site-packages/requests/adapters.py", line 423, in send
    timeout=timeout
  File "/Users/vyscond/Projects/razorvision/loan-documents/env3/lib/python3.4/site-packages/requests/packages/urllib3/connectionpool.py", line 624, in urlopen
    raise SSLError(e)
requests.packages.urllib3.exceptions.SSLError: EOF occurred in violation of protocol (_ssl.c:600)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "loanpro_doc_uploader.py", line 113, in <module>
    run()
  File "loanpro_doc_uploader.py", line 109, in run
    loanpro = LoanPro(args.env, args.folder)
  File "loanpro_doc_uploader.py", line 36, in __init__
    self.get_all_customforms_data()
  File "loanpro_doc_uploader.py", line 69, in get_all_customforms_data
    resp = requests.get(url, headers=headers)
  File "/Users/vyscond/Projects/razorvision/loan-documents/env3/lib/python3.4/site-packages/requests/api.py", line 70, in get
    return request('get', url, params=params, **kwargs)
  File "/Users/vyscond/Projects/razorvision/loan-documents/env3/lib/python3.4/site-packages/requests/api.py", line 56, in request
    return session.request(method=method, url=url, **kwargs)
  File "/Users/vyscond/Projects/razorvision/loan-documents/env3/lib/python3.4/site-packages/requests/sessions.py", line 488, in request
    resp = self.send(prep, **send_kwargs)
  File "/Users/vyscond/Projects/razorvision/loan-documents/env3/lib/python3.4/site-packages/requests/sessions.py", line 609, in send
    r = adapter.send(request, **kwargs)
  File "/Users/vyscond/Projects/razorvision/loan-documents/env3/lib/python3.4/site-packages/requests/adapters.py", line 497, in send
    raise SSLError(e, request=request)
requests.exceptions.SSLError: EOF occurred in violation of protocol (_ssl.c:600)

рдкрд░рд┐рджреГрд╢реНрдп 004

  • рдЕрдЬрдЧрд░: 2.7
  • рдЕрдиреБрд░реЛрдз: 2.12.5
  • pyopenssl ndg-httpsclient pyasn1 urllib3: рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рд╣реИ
  • рдУрдПрд╕: рдЙрдмрдВрдЯреВ 14.4 (рдбреЙрдХрд░рд╛рдЗрдЬреНрдб)
  • рдУрдкрдирдПрд╕рдПрд╕рдПрд▓: рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ

рддреНрд░реБрдЯрд┐ рдЪрд▓реА рдЧрдИ

рдкрд░рд┐рджреГрд╢реНрдп 003

  • рдЕрдЬрдЧрд░: 3.4
  • рдЕрдиреБрд░реЛрдз: 2.12.5
  • pyopenssl ndg-httpsclient pyasn1 urllib3: рд╕реНрдерд╛рдкрд┐рдд
  • рд╡рд░реНрдЪреБрдЕрд▓рдПрдиреНрд╡: 1.11.6
  • рдУрдПрд╕: рдУрдПрд╕ рдПрдХреНрд╕ рдПрд▓ рдХреИрдкреНрдЯрди 10.11.6 (15G1217)
  • рдУрдкрдирдПрд╕рдПрд╕рдПрд▓: 0.9.8zh 14 рдЬрдирд╡рд░реА 2016

рддреНрд░реБрдЯрд┐ рдЪрд▓реА рдЧрдИ

рддреНрд░реБрдЯрд┐ рдЕрд╕реНрдкрд╖реНрдЯ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЖрдкрдХреЗ рдУрдкрдирдПрд╕рдПрд╕рдПрд▓ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реИред рдЖрдкрдХрд╛ рджрд╛рд╡рд╛ рд╣реИ рдХрд┐ рдЙрдмрдВрдЯреВ 14.04 рдореЗрдВ рдУрдкрдирдПрд╕рдПрд╕рдПрд▓ рдирд╣реАрдВ рд╣реИ, рдЕрдЧрд░ рдЖрдк рдПрдЪрдЯреАрдЯреАрдкреАрдПрд╕ рдЕрдиреБрд░реЛрдз рдХрд░ рд░рд╣реЗ рд╣реИрдВ рддреЛ рдпрд╣ рд╕рдЪ

рдирдорд╕реНрдХрд╛рд░!

рдореБрдЭреЗ рдХреБрдЫ https-рд╕рд╛рдЗрдЯреЛрдВ рдФрд░ рдЕрдиреБрд░реЛрдз рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рд╣реИред
рд╕рд╛рдЗрдЯ: https://ndmc.gov.in/vacancy.aspx

рд╕реНрдерд╛рдкрд┐рдд:
рдПрдкрдбреАрд░==1.4.0
рд╕реАрдПрдлрдЖрдИ==1.9.1
рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлреА == 1.7.2
рдЖрдИрдбреАрдирд╛ == 2.2
ndg-httpsclient==0.4.2
рдкреИрдХреЗрдЬрд┐рдВрдЧ == 16.8
pyasn1==0.1.9
pycparser==2.17
pyOpenSSL==16.2.0
рдкрд╛рдЗрдкрд░реНрд╕рд┐рдВрдЧ == 2.1.10
рдЕрдиреБрд░реЛрдз==2.13.0
рдЫрд╣ == 1.10.0
urllib3==1.20
рдУрдкрдирдПрд╕рдПрд╕рдПрд▓ 1.0.2k 26 рдЬрдирд╡рд░реА 2017

рдПрдХ рддреНрд░реБрдЯрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ: request.exceptions.SSLError: ("рдЦрд░рд╛рдм рд╣реИрдВрдбрд╢реЗрдХ: SysCallError (-1, 'рдЕрдирдкреЗрдХреНрд╖рд┐рдд EOF')",)

рдУрдПрд╕: рдЖрд░реНрдХрдмреИрдВрдЧ рд▓рд┐рдирдХреНрд╕, рдирд╡реАрдирддрдо
рдкрд╛рдпрдерди 3.6 рдФрд░ рдкрд╛рдпрдерди 2.7 - рд╡рд╣реА рддреНрд░реБрдЯрд┐

рдЖрдк рдПрдХ рдЕрдиреНрдп рд╡реНрдпрдХреНрддрд┐ рд╣реИрдВ рдЬреЛ рд╣рдорд╛рд░реА рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛ рдЬреАрдд рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рджреБрдирд┐рдпрд╛ рдХреЗ рд╕рдмрд╕реЗ рдЦрд░рд╛рдм HTTPS рд╕рд░реНрд╡рд░ рд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ред рдпрд╣ рд╕рд░реНрд╡рд░ рднрдпрд╛рдирдХ рд░реВрдк рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИред рдЖрдкрдХреЛ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ рдЕрдиреБрд░реЛрдз рдЕрдм рдЗрд╕ рд╕рд░реНрд╡рд░ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рдХрд┐рд╕реА рднреА рд╕рд┐рдлрд░ рд╕реВрдЯ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рд╕рднреА рдХрдордЬреЛрд░ рдпрд╛ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИрдВред рдкрд╣рд▓реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдореИрдВ рдЖрдкрдХреЛ рд╕рд░реНрд╡рд░ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдкрд░ рджрдмрд╛рд╡ рдбрд╛рд▓рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдкрдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд░рдирд╛ рд╣реИ рддреЛ рдЖрдк рдЗрд╕ рддрд░рд╣ рд╕реЗ 3DES рдХреЛ рдлрд┐рд░ рд╕реЗ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред

@vyscond рдиреЗ рдореЗрд░реА рдЬрд╛рди рдмрдЪрд╛рдИред рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдУрдПрд╕рдПрдХреНрд╕ рдкрд░ рдХреНрдпрд╛ рдХрд┐рдпрд╛, рдпрд╣ рдХреЗрд╡рд▓ pyopenssl ndg-httpsclient pyasn1 urllib3 рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╕рдордп рдЪрд▓рд╛ рдЧрдпрд╛ред рд╢рд╛рдпрдж рдЗрд╕реЗ requests рдХреА OSX рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП?

рдпрд╣ рдХреЗрд╡рд▓ OS X рдФрд░ Python рдХреЗ рдХреБрдЫ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкрд░ рдЙрдкрдпреЛрдЧреА рд╣реИред рдЕрдВрддрд┐рдо рдкрд░рд┐рдгрд╛рдо рдпрд╣ рд╣реИ рдХрд┐ рд╡реЗ рд╡реИрдХрд▓реНрдкрд┐рдХ рд░рд╣рддреЗ рд╣реИрдВред

рдореИрдВ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рд▓реЛрдЧ (рд╢рд╛рдпрдж) рдЙрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдЦреЛрдЬрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐рддрдирд╛ рд╕рдордп рд╡реНрдпрддреАрдд рдХрд░рддреЗ рд╣реИрдВред рдореБрдЭреЗ рдЗрд╕ рд╕реВрддреНрд░ рдХреЛ рдЦреЛрдЬрдиреЗ рдФрд░ рдЗрд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдХреБрдЫ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред рдХреНрдпрд╛ рдпрд╣ рдЗрд╕ рд▓рд╛рдпрдХ рд╣реИ?

рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдЗрди рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдХрд╛рд░рдг рднреА рд╕рдорд╕реНрдпрд╛рдПрдВ рдкреЗрд╢ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИрдВ, рдХрдо рд╕реЗ рдХрдо рдпрд╣ рдЖрдкрдХреЗ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдПрдХ рдирдпрд╛ рдУрдкрдирдПрд╕рдПрд╕рдПрд▓ рдЬреЛрдбрд╝рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЕрд▓рдЧ рд╕реЗ рд╕рдВрд╕реНрдХрд░рдгрд┐рдд рдФрд░ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

@ рд▓реБрдХрд╛рд╕рд╛ рдХреБрдЫ рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдореБрдЭреЗ рдЕрдкрдирд╛ рд╕реЗрдЯрдЕрдк рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ pyopenssl (рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд [рд╕реБрд░рдХреНрд╖рд╛] рдХреБрдЫ рдЕрдиреБрд░реЛрдзреЛрдВ рд╕реЗ рдЬреБрдбрд╝реЗ рдкреНрд░рдорд╛рдгрдкрддреНрд░реЛрдВ рдХреЛ рдЧрдбрд╝рдмрдбрд╝ рдХрд░ рд░рд╣рд╛ рд╣реИред
urllib3 рдореЗрдВ OpenSSL рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдмрд╛рдзреНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ pyopenssl рдкреИрдХреЗрдЬ рдХреА рд╕реНрдерд╛рдкрдирд╛ рд░рджреНрдж рдХрд░рдиреА рдкрдбрд╝реАред
рдпрд╣ рдПрдбрд▓ (https://github.com/AzureAD/azure-activedirectory-library-for-python) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рдореВрд▓ рд░реВрдк рд╕реЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдХреБрдЫ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ (рдкреНрд░рдорд╛рдгрдкрддреНрд░реЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ) рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореЗрд░реЗ рд▓рд┐рдП рдереЛрдбрд╝рд╛ рд╡реВрдбреВ рд▓рдЧрддрд╛ рд╣реИред

рдореИрдХ рдУрдПрд╕рдПрдХреНрд╕ рд╕рд┐рдПрд░рд╛ рд╡реА 10.12.0 рдкрд░ рдореБрдЭреЗ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рдереАред рдЗрд╕ рдзрд╛рдЧреЗ рдкрд░ рд╕рдм рдХреБрдЫ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдЕрдВрдд рдореЗрдВ рдореЗрд░реЗ OS рдХреЛ v10.12.6 рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд┐рдпрд╛ рдФрд░ рд╕рдорд╕реНрдпрд╛ рджреВрд░ рд╣реЛ рдЧрдИред

рдПрдХ рд╡реАрдкреАрдПрди рдХреЗ рдкреАрдЫреЗ рдПрдХ рд╕рд╛рдЗрдЯ рдкрд░ рдПрдкреАрдЖрдИ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╛рдпрдерди-рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рддреНрд░реБрдЯрд┐ рднреА рдкреНрд░рдХрдЯ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдФрд░ рдЙрд╕ рд╕рдордп рд╡реАрдкреАрдПрди рд╕реБрд░рдВрдЧ рдиреАрдЪреЗ рд╣реЛ рдЬрд╛рддреА рд╣реИред

рд╣рд╛рдп рджреЛрд╕реНрддреЛрдВ!

рдореИрдВ рдЦреБрдж рд╕реЗ рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝рд╛ рдирдпрд╛ рд╣реВрдВ рдФрд░ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд╕рд╛рде рдкреАрдУрд╕реА рдХрд░рддреЗ рд╕рдордп рдпрд╣ рддреНрд░реБрдЯрд┐ рдорд┐рд▓реА рдХрд┐ рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рдорд╛рдирджрдВрдб рдЕрдиреБрдкрд╛рд▓рди рдХреЗ рд▓рд┐рдП рдореЗрд░реА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдЕрдиреБрд░реЛрдз POC рдХреЛ рдЗрд╕ рдЙрдкрдХрд░рдг рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛, рдореИрдВ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ FIA-X509 Ext 1.1 рдХреЗ рдкрд░реАрдХреНрд╖рдг рдорд╛рдорд▓реЛрдВ рдХреЛ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрд╣реА рдорд┐рд▓рд╛ рд╣реИ:

рдЯреНрд░реЗрд╕рдмреИрдХ (рд╕рдмрд╕реЗ рд╣рд╛рд▓рд┐рдпрд╛ рдХреЙрд▓ рдЕрдВрддрд┐рдо):
рдлрд╝рд╛рдЗрд▓ "/home/hussain/Desktop/pythonVenv/python36Venv/lib/python3.6/site-packages/urllib3/connectionpool.py", рд▓рд╛рдЗрди 601, urlopen рдореЗрдВ
рдЦрдВрдбрд┐рдд = рдЦрдВрдбрд┐рдд)
рдлрд╝рд╛рдЗрд▓ "/home/hussain/Desktop/pythonVenv/python36Venv/lib/python3.6/site-packages/urllib3/connectionpool.py", рд▓рд╛рдЗрди 346, _make_request рдореЗрдВ
self._validate_conn(conn)
рдлрд╝рд╛рдЗрд▓ "/home/hussain/Desktop/pythonVenv/python36Venv/lib/python3.6/site-packages/urllib3/connectionpool.py", рд▓рд╛рдЗрди 850, _validate_conn рдореЗрдВ
conn.connect ()
рдлрд╝рд╛рдЗрд▓ "/home/hussain/Desktop/pythonVenv/python36Venv/lib/python3.6/site-packages/urllib3/connection.py", рд▓рд╛рдЗрди 326, рдХрдиреЗрдХреНрдЯ рдореЗрдВ
ssl_context=рд╕рдВрджрд░реНрдн)
рдлрд╝рд╛рдЗрд▓ "/home/hussain/Desktop/pythonVenv/python36Venv/lib/python3.6/site-packages/urllib3/util/ssl_.py", рд▓рд╛рдЗрди 329, ssl_wrap_socket рдореЗрдВ
рд╡рд╛рдкрд╕реА рд╕рдВрджрд░реНрдн.wrap_socket(sock, server_hostname=server_hostname)
рдлрд╝рд╛рдЗрд▓ "/usr/lib/python3.6/ssl.py", рдкрдВрдХреНрддрд┐ 407, рд░реИрдк_рд╕реЙрдХреЗрдЯ рдореЗрдВ
_рд╕рдВрджрд░реНрдн = рд╕реНрд╡рдпрдВ, _рд╕рддреНрд░ = рд╕рддреНрд░)
рдлрд╝рд╛рдЗрд▓ "/usr/lib/python3.6/ssl.py", рд▓рд╛рдЗрди 814, __init__ рдореЗрдВ
self.do_handshake ()
рдлрд╝рд╛рдЗрд▓ "/usr/lib/python3.6/ssl.py", рд▓рд╛рдЗрди 1068, do_handshake рдореЗрдВ
self._sslobj.do_handshake ()
рдлрд╝рд╛рдЗрд▓ "/usr/lib/python3.6/ssl.py", рд▓рд╛рдЗрди 689, do_handshake рдореЗрдВ
self._sslobj.do_handshake ()
ssl.SSLEOFError: EOF рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рдЙрд▓реНрд▓рдВрдШрди рдореЗрдВ рд╣реБрдЖ (_ssl.c:777)

рдЙрдкрд░реЛрдХреНрдд рдЕрдкрд╡рд╛рдж рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рджреМрд░рд╛рди, рдПрдХ рдФрд░ рдЕрдкрд╡рд╛рдж рд╣реБрдЖ:

рдЯреНрд░реЗрд╕рдмреИрдХ (рд╕рдмрд╕реЗ рд╣рд╛рд▓рд┐рдпрд╛ рдХреЙрд▓ рдЕрдВрддрд┐рдо):
рдлрд╝рд╛рдЗрд▓ "/home/hussain/Desktop/pythonVenv/python36Venv/lib/python3.6/site-packages/requests/adapters.py", рд▓рд╛рдЗрди 440, рднреЗрдЬрдиреЗ рдореЗрдВ
рд╕рдордпрдмрд╛рд╣реНрдп = рд╕рдордпрдмрд╛рд╣реНрдп
рдлрд╝рд╛рдЗрд▓ "/home/hussain/Desktop/pythonVenv/python36Venv/lib/python3.6/site-packages/urllib3/connectionpool.py", рд▓рд╛рдЗрди 639, urlopen рдореЗрдВ
_рд╕реНрдЯреИрдХрдЯреНрд░реЗрд╕=sys.exc_info()[2])
рдлрд╝рд╛рдЗрд▓ "/home/hussain/Desktop/pythonVenv/python36Venv/lib/python3.6/site-packages/urllib3/util/retry.py", рдкрдВрдХреНрддрд┐ 388, рд╡реЗрддрди рд╡реГрджреНрдзрд┐ рдореЗрдВ
MaxRetryError рдмрдврд╝рд╛рдПрдБ (_pool, url, рддреНрд░реБрдЯрд┐ рдпрд╛ ResponseError (рдХрд╛рд░рдг))
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='10.0.0.221', port=443): рдЕрдзрд┐рдХрддрдо рдкреБрдирд░реНрдкреНрд░рдпрд╛рд╕ url рдХреЗ рд╕рд╛рде рдкрд╛рд░ рд╣реЛ рдЧрдП: / (SSLError(SSLEOFError(8, 'EOF рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рдЙрд▓реНрд▓рдВрдШрди рдореЗрдВ рд╣реБрдЖ) рдХреЗ рдХрд╛рд░рдг (_ssl.c:777) )'),))

рдЙрдкрд░реЛрдХреНрдд рдЕрдкрд╡рд╛рдж рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рджреМрд░рд╛рди, рдПрдХ рдФрд░ рдЕрдкрд╡рд╛рдж рд╣реБрдЖ:

рдЯреНрд░реЗрд╕рдмреИрдХ (рд╕рдмрд╕реЗ рд╣рд╛рд▓рд┐рдпрд╛ рдХреЙрд▓ рдЕрдВрддрд┐рдо):
рдлрд╝рд╛рдЗрд▓ "req.py", рд▓рд╛рдЗрди 91, in
r = session.request('GET', 'https://10.0.0.221', Verify=True)
рдлрд╝рд╛рдЗрд▓ "/home/hussain/Desktop/pythonVenv/python36Venv/lib/python3.6/site-packages/requests/sessions.py", рд▓рд╛рдЗрди 508, рдЕрдиреБрд░реЛрдз рдореЗрдВ
рд╕рдореНрдорд╛рди = рд╕реНрд╡рдпрдВ рднреЗрдЬреЗрдВ (рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХрд╛, *send_kwargs)рдлрд╝рд╛рдЗрд▓ "/home/hussain/Desktop/pythonVenv/python36Venv/lib/python3.6/site-packages/requests/sessions.py", рд▓рд╛рдЗрди 618, рднреЗрдЬрдиреЗ рдореЗрдВрдЖрд░ = рдПрдбреЗрдкреНрдЯрд░ред рднреЗрдЬреЗрдВ (рдЕрдиреБрд░реЛрдз, * kwargs)
рдлрд╝рд╛рдЗрд▓ "/home/hussain/Desktop/pythonVenv/python36Venv/lib/python3.6/site-packages/requests/adapters.py", рд▓рд╛рдЗрди 506, рднреЗрдЬрдиреЗ рдореЗрдВ
SSLError рдмрдврд╝рд╛рдПрдВ (рдИ, рдЕрдиреБрд░реЛрдз = рдЕрдиреБрд░реЛрдз)
request.exceptions.SSLError: HTTPSConnectionPool(host='10.0.0.221', port=443): рдЕрдзрд┐рдХрддрдо рдкреБрдирд░реНрдкреНрд░рдпрд╛рд╕ url рдХреЗ рд╕рд╛рде рдкрд╛рд░ рд╣реЛ рдЧрдП: / (SSLError(SSLEOFError(8, 'EOF рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рдЙрд▓реНрд▓рдВрдШрди рдореЗрдВ рд╣реБрдЖ) рдХреЗ рдХрд╛рд░рдг (_ssl.c:777) )'),))

рдпрд╣ рдкреАрдУрд╕реА рдХреЛрдб рд╣реИ рдЬрд┐рд╕рдХрд╛ рдореИрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ:

import ssl
import requests

from requests.adapters import HTTPAdapter
from requests.packages.urllib3.poolmanager import PoolManager
from requests.packages.urllib3.util import ssl_

CIPHERS = (
    'RSA+AES'
)

class TlsAdapter(HTTPAdapter):
    def __init__(self, ssl_options=0, **kwargs):
        self.ssl_options = ssl_options
        super(TlsAdapter, self).__init__(**kwargs)

    def init_poolmanager(self, *pool_args, **pool_kwargs):
        ctx = ssl_.create_urllib3_context(ciphers=CIPHERS, cert_reqs=ssl.CERT_REQUIRED, options=self.ssl_options)

        self.poolmanager = PoolManager(*pool_args,
                                       ssl_context=ctx,
                                       **pool_kwargs)

session = requests.session()

adapter = TlsAdapter(ssl.OP_NO_TLSv1 | ssl.OP_NO_TLSv1_1)
session.mount("https://", adapter)
r = session.request('GET', 'https://10.0.0.221', verify=True)
print(r)

рдЬрд╣рд╛рдВ 10.0.0.221 рд╡рд╣ рд╕реНрдерд╛рди рд╣реИ рдЬрд╣рд╛рдВ рдореИрдВрдиреЗ рд╕рддреНрдпрд╛рдкрди рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдг рд░рдЦрд╛ рд╣реИред

рдореБрдЭреЗ рдмрд┐рд▓реНрдХреБрд▓ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рддреНрд░реБрдЯрд┐ рдХреНрдпреЛрдВ рд╣реЛ рд░рд╣реА рд╣реИред рдореИрдВрдиреЗ рдЗрд╕ рдзрд╛рдЧреЗ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рд╕реНрдЯреИрдХ рдУрд╡рд░рдлреНрд▓реЛ рдкрд░ рдХрдИ рдЕрдиреНрдп рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд▓реЗрдХрд┐рди рдЙрдкрдпреБрдХреНрдд рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдорд┐рд▓рд╛ред

рдореИрдВ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдореБрдЭреЗ рдЗрд╕ рд╕рдордп рдЯреАрдПрд▓рдПрд╕ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреА рд╕реНрдкрд╖реНрдЯ рд╕рдордЭ рдирд╣реАрдВ рд╣реИред рддреЛ рдЕрдЧрд░ рдХреЛрдИ рдореБрдЭреЗ рдорд╛рд░реНрдЧрджрд░реНрд╢рди рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рдХреНрдпрд╛ рд╕рдорд╕реНрдпрд╛ рд╣реИ, рддреЛ рдореИрдВ рдЖрднрд╛рд░реА рд░рд╣реВрдВрдЧрд╛ред

рдХреГрдкрдпрд╛ рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рдХреНрдпрд╛ рдореБрдЭрд╕реЗ рдХреБрдЫ рдЫреВрдЯ рдЧрдпрд╛ рд╣реИ рдпрд╛ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдзрдиреНрдпрд╡рд╛рдж!

рдПрдХ FYI рдХреА рддрд░рд╣, рдпрд╣ рддреНрд░реБрдЯрд┐ рддрдм рднреА рд╣реЛрддреА рд╣реИ рдЬрдм рдЙрд╕ рд╕рд░реНрд╡рд░ рдкрд░ SSL рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕рд╕реЗ рдЖрдк рдХрдиреЗрдХреНрдЯ рд╣реЛ рд░рд╣реЗ рд╣реИрдВред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

eromoe picture eromoe  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

brainwane picture brainwane  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

JimHokanson picture JimHokanson  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

thadeusb picture thadeusb  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

ReimarBauer picture ReimarBauer  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ