Requests: рд╕реЙрдХреЗрдЯ.рддреНрд░реБрдЯрд┐: [рддреНрд░реБрдЯрд┐ 54] рд╕рд╣рдХрд░реНрдореА рджреНрд╡рд╛рд░рд╛ рдХрдиреЗрдХреНрд╢рди рд░реАрд╕реЗрдЯ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 22 рд╕рд┐рддре░ 2011  ┬╖  19рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: psf/requests

рдореБрдЭреЗ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рддреНрд░реБрдЯрд┐ рдорд┐рд▓ рд░рд╣реА рд╣реИ, socket.error: [Errno 54] Connection reset by peer рдЬрдм рдореИрдВ requests.get(url, params=kwargs) рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ params рдореЗрдВ рдЯреЗрдХреНрд╕реНрдЯ рдХреЗ рдмрдбрд╝реЗ рдирд┐рдХрд╛рдп рд╣реЛрддреЗ рд╣реИрдВред рдпрджрд┐ рдореИрдВ рдкрд╛рда рдХреЗ рджреЛ рдмрдбрд╝реЗ рдирд┐рдХрд╛рдпреЛрдВ рдХреЛ 2,900 рд╡рд░реНрдгреЛрдВ рд╕реЗ рдХрдо рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ рдЫреЛрдЯрд╛ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЕрдЧрд░ рдореИрдВ рдЗрд╕реЗ curl рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕реЗ рдЕрдиреБрд░реЛрдз рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдореИрдВ рдЕрдиреБрд░реЛрдз рд╕рдВрд╕реНрдХрд░рдг 0.6.1 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ pip install python-requests рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рд╣реИред

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

рдХрд░реНрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рд╕рд╛рджрд╛ рдкрд╛рда рдФрд░ html рдкрд╛рда рд╣реИ рдХрд┐ рдПрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ urlencoded рдХрд┐рдпрд╛ рдерд╛ рджреЛ рдлрд╝рд╛рдЗрд▓реЗрдВ рдмрдирд╛рдИ urlencoder ред рдлрд┐рд░ рдореИрдВрдиреЗ рдирд┐рдореНрди рдЖрджреЗрд╢ рдЪрд▓рд╛рдпрд╛ред

export IDENTITY='<my identity number>'
export API_KEY='<my smtp password>'
export API_USER='<my smtp username>'
export NAME='<My Urlencoded Newsletter Name>'
export SUBJECT='<My Urlencoded Newsletter Subject>'
TEXT=`cat urlencoded.txt`; HTML=`cat urlencoded.html`; curl -d "api_user=$API_USER&api_key=$API_KEY&identity=$IDENTITY&name=$NAME&subject=$SUBJECT&text=$TEXT&html=$HTML" https://sendgrid.com/api/newsletter/newsletter/add.json

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

рдореАрдареА рдХрд╛рд░реНрд░рд╡рд╛рдИ! requests.get(url, params=kwargs) рд╕реЗ requests.post(url, data=kwargs) рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рд╕реЗ рдпрд╣ рдареАрдХ рд╣реЛ рдЧрдпрд╛! рдЗрд╕рд╕реЗ рдЖрдкрдХреЛ рдкрд░реЗрд╢рд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИ рдФрд░ рдорджрдж рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

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

рд╣рд╛рдВ рджрд┐рд▓рдЪрд╕реНрдкред рдпрджрд┐ рд╡рд╣ рддреНрд░реБрдЯрд┐ рдЙрдард╛рдИ рдЬрд╛ рд░рд╣реА рд╣реИ, рддреЛ рдореЗрд░реЗ рдкрд╛рд╕ рдпрд╣ рдорд╛рдирдиреЗ рдХрд╛ рдХреЛрдИ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╕рд░реНрд╡рд░ _is't_ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрдиреЗрдХреНрд╢рди рдХреЛ рд░реАрд╕реЗрдЯ рдХрд░ рд░рд╣рд╛ рд╣реИред

рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЪрд╛рд░реНрд▓реНрд╕ рдЬреИрд╕рд╛ HTTP рдкреНрд░реЙрдХреНрд╕реА рдЙрдкрд▓рдмреНрдз рд╣реИ? рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ рдкрд░ рдХреБрдЫ рдкреНрд░рдХрд╛рд╢ рдбрд╛рд▓рдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдореИрдВ рдкреВрд░реНрдг рдЯреНрд░реЗрд╕рдмреИрдХ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рднреВрд▓ рдЧрдпрд╛ред рдЬрдм рдореБрдЭреЗ рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ рддреЛ рдореБрдЭреЗ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдЯреНрд░реЗрд╕рдмреИрдХ рдпрд╣рд╛рдВ рджреА рдЧрдИ рд╣реИред рд╕рд╛рде рд╣реА, рдореБрдЭреЗ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖ рд░рд╣рд╛ рд╣реИ рдХрд┐ HTTP рдкреНрд░реЙрдХреНрд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ рдФрд░ рдЬрдм рдпрд╣ рдХрд░реНрд▓ рдХреЗ рд╕рд╛рде рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рддреЛ рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдХреНрдпреЛрдВ рдкрдбрд╝рддрд╛ рд╣реИред

Traceback (most recent call last):
  File "/Users/oconnor/.virtualenvs/emails/bin/django-admin.py", line 5, in <module>
    management.execute_from_command_line()
  File "/Users/oconnor/.virtualenvs/emails/lib/python2.7/site-packages/django/core/management/__init__.py", line 429, in execute_from_command_line
    utility.execute()
  File "/Users/oconnor/.virtualenvs/emails/lib/python2.7/site-packages/django/core/management/__init__.py", line 379, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/Users/oconnor/.virtualenvs/emails/lib/python2.7/site-packages/django/core/management/base.py", line 191, in run_from_argv
    self.execute(*args, **options.__dict__)
  File "/Users/oconnor/.virtualenvs/emails/lib/python2.7/site-packages/django/core/management/base.py", line 220, in execute
    output = self.handle(*args, **options)
  File "/Users/oconnor/Sites/wenworld/emails/emails/management/commands/ww_daily_headlines_send.py", line 114, in handle
    self.add_newsletter_to_sendgrid(sendgrid_newsletter_name, NEWSLETTER_SLUG)
  File "/Users/oconnor/Sites/wenworld/emails/emails/management/commands/ww_daily_headlines_send.py", line 94, in add_newsletter_to_sendgrid
    html=email.html
  File "/Users/oconnor/.virtualenvs/emails/src/sendgrid/src/sendgrid/__init__.py", line 67, in newsletter_add
    subject=subject, text=text, html=html)
  File "/Users/oconnor/.virtualenvs/emails/src/sendgrid/src/sendgrid/__init__.py", line 157, in get
    return self.call(method, **kwargs)
  File "/Users/oconnor/.virtualenvs/emails/src/sendgrid/src/sendgrid/__init__.py", line 56, in call
    result_json = json.loads(response.content)
  File "/Users/oconnor/.virtualenvs/emails/lib/python2.7/site-packages/requests/models.py", line 429, in __getattr__
    self._content = self.read()
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/socket.py", line 351, in read
    data = self._sock.recv(rbufsize)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/httplib.py", line 553, in read
    s = self.fp.read(amt)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/httplib.py", line 1276, in read
    return s + self._file.read(amt - len(s))
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/socket.py", line 380, in read
    data = self._sock.recv(left)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ssl.py", line 219, in recv
    return self.read(buflen)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ssl.py", line 138, in read
    return self._sslobj.read(len)
socket.error: [Errno 54] Connection reset by peer

рдЬреАрдердм рд╕реЗ рдореБрдЭреЗ рдЬреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдорд┐рд▓рддреА рд╣реИ рд╡рд╣ рд╣реИ ...

<html>
<head><title>414 Request-URI Too Large</title></head>
<body bgcolor="white">
<center><h1>414 Request-URI Too Large</h1></center>
<hr><center>nginx/0.7.65</center>
</body>
</html>

рдЬреЛ рдЕрдЬреАрдм рд╣реИ рдХреНрдпреЛрдВрдХрд┐, рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, рдпрд╣ curl рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдпрджрд┐ рдЖрдк рдЪрд╛рд░реНрд▓реНрд╕ (рдпрд╛ рд╕рдорд╛рди) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рджреЛ рдЕрдиреБрд░реЛрдзреЛрдВ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рдирд┐рдХрд╛рд▓рддреЗ рд╣реИрдВ, рддреЛ рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдмрд╣реБрдд рдЬрд▓реНрджреА рджреЗрдЦреЗрдВрдЧреЗред


рдЬреИрд╕рд╛ рдХрд┐ рддреНрд░реБрдЯрд┐ рдХрд╣рддреА рд╣реИ, рд╕рд░реНрд╡рд░ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз-рдпреВрдЖрд░рдЖрдИ рдмрд╣реБрдд рдмрдбрд╝рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдХрдиреЗрдХреНрд╢рди рдЫреЛрдбрд╝ рд░рд╣рд╛ рд╣реИред

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

рдореИрдВрдиреЗ requests.get(url, params=kwargs) рдФрд░ requests.post(url, params=kwargs) рджреЛрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рджреЛрдиреЛрдВ рдПрдХ рд╣реА рддреНрд░реБрдЯрд┐ рд▓реМрдЯрд╛рддреЗ рд╣реИрдВред рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдЪрд╛рд░реНрд▓реНрд╕ рдХрд░реНрд▓ рд╕реЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдХреИрдкреНрдЪрд░ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ рдФрд░ рдпрд╣ рд╕рд┐рд░реНрдл рдореЗрд░реЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдФрд░ рдореЗрд░реА рдкрд╛рдпрдерди рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдХреИрдкреНрдЪрд░ рдХрд░ рд░рд╣рд╛ рд╣реИ рдЬреЛ рдкрд╛рдпрдерди-рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред

рдХреЛрдИ рдЪрд┐рдВрддрд╛ рдирд╣реАрдВред

params рдХреНрд╡реЗрд░реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╣реИ, data POST рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рд╣реИред

рдореАрдареА рдХрд╛рд░реНрд░рд╡рд╛рдИ! requests.get(url, params=kwargs) рд╕реЗ requests.post(url, data=kwargs) рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рд╕реЗ рдпрд╣ рдареАрдХ рд╣реЛ рдЧрдпрд╛! рдЗрд╕рд╕реЗ рдЖрдкрдХреЛ рдкрд░реЗрд╢рд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИ рдФрд░ рдорджрдж рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

рдЪрд┐рдВрддрд╛ рдХреА рдХреЛрдИ рдмрд╛рдд рдирд╣реАрдВ рд╣реИ :)

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

request.exceptions.ConnectionError: HTTPSConnectionPool(host='sbarnea.com', port=443): рдЕрдзрд┐рдХрддрдо рдкреБрдирд░реНрдкреНрд░рдпрд╛рд╕ url рдХреЗ рд╕рд╛рде рдкрд╛рд░ рд╣реЛ рдЧрдП: /jira/rest/api/2/group?groupname=jira-administrators&expand=users (рдЗрд╕рдХреЗ рдХрд╛рд░рдг: [рддреНрд░реБрдЯрд┐ 54] рд╕рд╣рдХрд░реНрдореА рджреНрд╡рд╛рд░рд╛ рдХрдиреЗрдХреНрд╢рди рд░реАрд╕реЗрдЯ)

рдФрд░ рднреА рджрд┐рд▓рдЪрд╕реНрдк, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдиреБрд░реЛрдз рд╡реЗрдм рд╕рд░реНрд╡рд░ рддрдХ рднреА рдирд╣реАрдВ рдкрд╣реБрдВрдЪрддрд╛ рд╣реИред

рдХреЛрдИ рд╡рд┐рдЪрд╛рд░ рдпрд╣ рдХреНрдпрд╛ рдХрд╛рд░рдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИ?

@ssbarnea рдпрд╣ рд╕рдорд╕реНрдпрд╛ рджреЛ рд╡рд░реНрд╖ рд╕реЗ рдЕрдзрд┐рдХ рдкреБрд░рд╛рдиреА рд╣реИ: рдЗрд╕рдХрд╛ рдЙрд╕ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдХреЛрдИ рд▓реЗрдирд╛-рджреЗрдирд╛ рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЖрдк рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЕрдиреБрднрд╡ рдХрд░ рд░рд╣реЗ рд╣реИрдВред =) рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рдЕрдкрдиреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдореБрджреНрджрд╛ рдЦреЛрд▓ рд╕рдХрддреЗ рд╣реИрдВ?

рдЗрд╕рд╕реЗ рднреА рдмреЗрд╣рддрд░, рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рди рдЦреЛрд▓реЗрдВ, рд╕реНрдЯреИрдХ рдУрд╡рд░рдлреНрд▓реЛ рд╕реЗ рдмрд╛рдд рдХрд░реЗрдВ, рдЖрдк рдПрдХ рдкреНрд░рд╢реНрди рдкреВрдЫ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рдпрд╣ рдорд╛рдирдиреЗ рдХрд╛ рдХреЛрдИ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдореБрджреНрджрд╛ рд╣реИ рдХрд┐ рдЕрдиреБрд░реЛрдз рдХреИрд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИред StackOverflow рдкрд░ рд╡рд┐рд╡рд░рдг рд╣реИрд╢ рдЖрдЙрдЯ рдХрд░реЗрдВ рдФрд░ рдлрд┐рд░ рд╣рдо рдПрдХ рдмрдЧ рд░рд┐рдкреЛрд░реНрдЯ рджрд░реНрдЬ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ)ред

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

рдЗрд╕реЗ рдпрд╣рд╛рдБ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рдЗрд╕рдХрд╛ рдХреНрдпрд╛ рдХрд╛рд░рдг рд╣реИ:

#  resolver 127.0.0.1;
#  ssl_protocols TLSv1.2 TLSv1.1 ; # TLSv1
#  ssl_stapling on;
#  ssl_stapling_verify on;
#  ssl_session_cache builtin:1000;
#  ssl_session_timeout 30m;
#  ssl_ciphers HIGH:!RC4:!aNULL:!MD5;
#  ssl_prefer_server_ciphers on;

nginx рд╕рд░реНрд╡рд░ рдкрд░ рдЗрди рдЯреНрдпреВрдирд┐рдВрдЧ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдХреЗ рдЗрд╕рдиреЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛, рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдЦрд░рд╛рдмреА рдХрд╛ рдХрд╛рд░рдг рдмрди рд░рд╣рд╛ рд╣реИред

@ssbarnea
рдпрд╣ рд╕рдВрднрд╡рдд: рдПрдХ рдмрдЧреНрдЧреА рд╕рд░реНрд╡рд░ рд╣реИ рдЬреЛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдПрд╕рдПрд╕рдПрд▓/рдЯреАрдПрд▓рдПрд╕ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдмреЛрд▓реЗ рдЬрд╛рдиреЗ рдкрд░ рдЧрд▓рдд рд╕рд╛рдорд╛рди рдХрд░ рд░рд╣рд╛ рд╣реИ рдЬреИрд╕реЗ # 1567 (рдФрд░ рдХрдИ рдФрд░) рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИред
рдПрдХ рдЕрд▓рдЧ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдордЬрдмреВрд░ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ рдЬреИрд╕реЗ рдХрд┐ рдпрд╣рд╛рдВ рд╕рдордЭрд╛рдпрд╛ рдЧрдпрд╛

рдФрд░ рд╡рд┐рдЬреЗрддрд╛ (рд╣рд╛рд░рдиреЗ рд╡рд╛рд▓рд╛) ssl_protocols TLSv1.2 TLSv1.1;
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рд░реНрд╡рд░ рдкрд░ рд╕рдорд░реНрдерд┐рдд рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╕реЗ TLSv1 рдХреЛ рд╣рдЯрд╛рдиреЗ рд╕реЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдХрд╛рдо рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЕрдм, рдореИрдВ рдЗрд╕реЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдпрд╛ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдПрдХ рдмрдЧ рдХрд╣ рд╕рдХрддрд╛ рд╣реВрдВ?

рдиреЛрдЯ: рд╕реБрд░рдХреНрд╖рд╛ рдЪрд┐рдВрддрд╛рдУрдВ рдХреЗ рдХрд╛рд░рдг TLSv1 рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреА рдЕрдиреБрд╢рдВрд╕рд╛ рдХреА рдЬрд╛рддреА рд╣реИ, рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рд░рдирд╛рдореЗ рд╣реИрдВред

@ssbarnea рдЖрдк рдкрд╛рдПрдВрдЧреЗ рдХрд┐ рд╕реАрдорд╛ рдЕрдиреБрд░реЛрдзреЛрдВ рдореЗрдВ рдирд╣реАрдВ рдмрд▓реНрдХрд┐ рдкрд╛рдпрдерди рдореЗрдВ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдпрд╣рд╛рдВ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдкрд╛рдпрдерди рдХреЗ рдХрд┐рд╕реА рднреА рд╢рд┐рдк рдХрд┐рдП рдЧрдП рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ V1.0 рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╣рд╛рд▓ рдХреЗ рдЯреАрдПрд▓рдПрд╕ рдХреЗ рдХрд┐рд╕реА рднреА рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдирд╣реАрдВ

рдкрд╛рдпрдерди 3.4 (рдЕрднреА рддрдХ рд╢рд┐рдк рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдХреЛрдИ рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЕрдиреБрд░реЛрдз рдЗрд╕рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рд╣реИ) TLS1.2 рдФрд░ TLS1.1 рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдк рдЗрд╕рдХреЗ рд╕рд╛рде рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдиреНрдпрдерд╛, рдЖрдкрдХреЛ TLSv1 рдХреЛ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреА рд╣реЛрдЧреАред

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

рдЖрдо рддреМрд░ рдкрд░ рдореИрдВ рдПрд╕рдПрд╕рдПрд▓ рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдирд╣реАрдВ рдЫреВрддрд╛, рд▓реЗрдХрд┐рди рдореИрдВ рдПрдХ рдПрд╕рдПрд╕рдПрд▓ рд░рд┐рдкреЛрд░реНрдЯ рдЪрд▓рд╛рддрд╛ рд╣реВрдВ рдФрд░ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реВрдВ:

FIPS рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ: SSL v2 рдФрд░ SSL v3 рдЕрдХреНрд╖рдо рд╣реИрдВ (рдХреЗрд╡рд▓ рдЙрдкрдпреЛрдЧ рдореЗрдВ TLS рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░реЛрдЯреЛрдХреЙрд▓)
BEAST рд╣рдорд▓реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреА рдкрдврд╝реЗрдВред

рдЗрд╕реЗ рдпрд╣рд╛рдВ рдЬрд╛рдВрдЪреЗрдВ:
https://sslcheck.globalsign.com/en_US/sslcheck/?host=sbarnea.com

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

рдорд┐рдореА, рджреБрдЦ рдХреА рдмрд╛рдд рд╣реИ рдХрд┐ рдпрд╣ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд ssl рд╕рдорд░реНрдерди рдХреА рд╕рд╛рдкреЗрдХреНрд╖ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд┐рдП рдЧрдП рдУрдкрдирдПрд╕рдПрд╕рдПрд▓ рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИрдВред рджреЛ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░реЗрдВред =)

рдмрд╕ рд╡рд┐рд╖рдп рдкрд░ рдереЛрдбрд╝рд╛ рд╕рд╛ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдпрджрд┐ рдЖрдкрдХрд╛ рд╡реЗрдмрд╕рд░реНрд╡рд░ TLSv1 рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ рддреЛ рдЖрдкрдХреЛ TLSv1.1 рдФрд░ 1.2 рдЕрдЬрдЧрд░ 2.7.9 (рджрд┐рд╕рдВрдмрд░ 2014 рдореЗрдВ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг) рдХреЗ рд╕рд╛рде рдорд┐рд▓реЗрдЧрд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐ рдЖрдк PYOpenSSL рднреА рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ urrlib3 (http://urllib3.readthedocs.org/en/latest/security.html#openssl-pyopenssl) рдореЗрдВ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдПрдХ рд╡реЗрдмрд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬрд┐рд╕рдиреЗ TLSv1 рдХреЛ рдЕрдЬрдЧрд░ рдХреЗ рд╕рд╛рде рдЕрдХреНрд╖рдо рдХрд░ рджрд┐рдпрд╛ рд╣реИ 2.7.6 (рдФрд░ рд╢рд╛рдпрдж рдЕрдиреНрдп)ред

import urllib3.contrib.pyopenssl
urllib3.contrib.pyopenssl.inject_into_urllib3()

рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╡реЗрдмрд╕рд░реНрд╡рд░ рдХреЛ рд╢рд╛рдпрдж рдХрд┐рд╕реА рдРрд╕реА рдЪреАрдЬрд╝ рдХреА рдЕрд╡рд╣реЗрд▓рдирд╛ рдирд╣реАрдВ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП рдЬреЛ рд▓реЛрдЧреЛрдВ рдХреЛ рдЗрд╕ рдХрдИ рдЕрдЬреАрдм рд╣реБрдкреНрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреВрджрдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рддреА рд╣реИред

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

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

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

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

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

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

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