Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Web
  • » requests.post вызывает исключение SslError, при verify=False работает, но использовать так нельзя [RSS Feed]

#1 Ноя. 20, 2015 10:46:40

longcat
Зарегистрирован: 2015-11-20
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

requests.post вызывает исключение SslError, при verify=False работает, но использовать так нельзя

суть такова: надо сделать post запрос, всё работает при отключенной проверке ssl(как я понял), но так как данные светить нельзя, с ssl нужно разобраться
понимаю, что никто не должен делать за меня мою работу, но я новичок, поэтому могу не увидеть очевидные вещи и потому не понять в какую сторону копать

import requests
data = {данные}
url = 'url'
resp = requests.post(url, data)
вызывает исключение
[code python]In [6]: requests.post(url, data, verify=True)
---------------------------------------------------------------------------
SSLError Traceback (most recent call last)
<ipython-input-6-2e7be0a7f02f> in <module>()
----> 1 requests.post(url, data, verify=True)

/usr/lib/python2.7/dist-packages/requests/api.pyc in post(url, data, json, **kwargs)
92 """
93
---> 94 return request('post', url, data=data, json=json, **kwargs)
95
96

/usr/lib/python2.7/dist-packages/requests/api.pyc in request(method, url, **kwargs)
47
48 session = sessions.Session()
---> 49 return session.request(method=method, url=url, **kwargs)
50
51

/usr/lib/python2.7/dist-packages/requests/sessions.pyc in request(self, method, url, params, data, headers, cookies, files, auth, timeout, allow_redirects, proxies, hooks, stream, verify, cert, json)
455 }
456 send_kwargs.update(settings)
--> 457 resp = self.send(prep, **send_kwargs)
458
459 return resp

/usr/lib/python2.7/dist-packages/requests/sessions.pyc in send(self, request, **kwargs)
567
568 # Send the request
--> 569 r = adapter.send(request, **kwargs)
570
571 # Total elapsed time of the request (approximately)

/usr/lib/python2.7/dist-packages/requests/adapters.pyc in send(self, request, stream, timeout, verify, cert, proxies)
418 except (_SSLError, _HTTPError) as e:
419 if isinstance(e, _SSLError):
--> 420 raise SSLError(e, request=request)
421 elif isinstance(e, ReadTimeoutError):
422 raise ReadTimeout(e, request=request)

<type 'str'>: (<type 'exceptions.TypeError'>, TypeError('__str__ returned non-string (type Error)',))[/code]
попытался использовать код по ссылке ниже, но теперь keyerror
http://stackoverflow.com/questions/25896562/ssl-error-on-python-get-request

s = requests.Session()
s.mount(url, SSLAdapter(ssl.PROTOCOL_TSLv1_2))
r = s.post(url, data)
[code python]---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
<ipython-input-15-77aad3dcabc6> in <module>()
----> 1 r = s.post(url, data)

/usr/lib/python2.7/dist-packages/requests/sessions.pyc in post(self, url, data, json, **kwargs)
498 """
499
--> 500 return self.request('POST', url, data=data, json=json, **kwargs)
501
502 def put(self, url, data=None, **kwargs):

/usr/lib/python2.7/dist-packages/requests/sessions.pyc in request(self, method, url, params, data, headers, cookies, files, auth, timeout, allow_redirects, proxies, hooks, stream, verify, cert, json)
455 }
456 send_kwargs.update(settings)
--> 457 resp = self.send(prep, **send_kwargs)
458
459 return resp

/usr/lib/python2.7/dist-packages/requests/sessions.pyc in send(self, request, **kwargs)
567
568 # Send the request
--> 569 r = adapter.send(request, **kwargs)
570
571 # Total elapsed time of the request (approximately)

/usr/lib/python2.7/dist-packages/requests/adapters.pyc in send(self, request, stream, timeout, verify, cert, proxies)
360 decode_content=False,
361 retries=Retry(self.max_retries, read=False),
--> 362 timeout=timeout
363 )
364

/usr/lib/python2.7/dist-packages/urllib3/connectionpool.pyc in urlopen(self, method, url, body, headers, retries, redirect, assert_same_host, timeout, pool_timeout, release_conn, **response_kw)
514 httplib_response = self._make_request(conn, method, url,
515 timeout=timeout,
--> 516 body=body, headers=headers)
517
518 # If we're going to release the connection in ``finally:``, then

/usr/lib/python2.7/dist-packages/urllib3/connectionpool.pyc in _make_request(self, conn, method, url, timeout, **httplib_request_kw)
302
303 # Trigger any extra validation we need to do.
--> 304 self._validate_conn(conn)
305
306 # conn.request() calls httplib.*.request, not the method in

/usr/lib/python2.7/dist-packages/urllib3/connectionpool.pyc in _validate_conn(self, conn)
722 # Force connect early to allow us to validate the connection.
723 if not getattr(conn, 'sock', None): # AppEngine might not have `.sock`
--> 724 conn.connect()
725
726 if not conn.is_verified:

/usr/lib/python2.7/dist-packages/urllib3/connection.pyc in connect(self)
235 ca_certs=self.ca_certs,
236 server_hostname=hostname,
--> 237 ssl_version=resolved_ssl_version)
238
239 if self.assert_fingerprint:

/usr/lib/python2.7/dist-packages/urllib3/contrib/pyopenssl.pyc in ssl_wrap_socket(sock, keyfile, certfile, cert_reqs, ca_certs, server_hostname, ssl_version)
252 ca_certs=None, server_hostname=None,
253 ssl_version=None):
--> 254 ctx = OpenSSL.SSL.Context(_openssl_versions[ssl_version])
255 if certfile:
256 ctx.use_certificate_file(certfile)

KeyError: 5
[/code]

Отредактировано longcat (Ноя. 20, 2015 11:10:16)

Офлайн

  • Начало
  • » Web
  • » requests.post вызывает исключение SslError, при verify=False работает, но использовать так нельзя[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version