I want to open and read https://yande.re/ with urllib.request , but I get an SSL error. I can easily open and read the page using http.client with this code:
import http.client conn = http.client.HTTPSConnection('www.yande.re') conn.request('GET', 'https://yande.re/') resp = conn.getresponse() data = resp.read()
However, the following code using urllib.request does not work:
import urllib.request opener = urllib.request.build_opener() resp = opener.open('https://yande.re/') data = resp.read()
This results in an error: ssl.SSLError: [Errno 1] _ssl.c:392: error:1411809D:SSL routines:SSL_CHECK_SERVERHELLO_TLSEXT:tls invalid ecpointformat list . Why can I open a page using HTTPSConnection but not openener.open?
Edit: Here is my version of OpenSSL and the trace from trying to open https://yande.re/
>>> import ssl; ssl.OPENSSL_VERSION 'OpenSSL 1.0.0a 1 Jun 2010' >>> import urllib.request >>> urllib.request.urlopen('https://yande.re/') Traceback (most recent call last): File "<pyshell#3>", line 1, in <module> urllib.request.urlopen('https://yande.re/') File "C:\Python32\lib\urllib\request.py", line 138, in urlopen return opener.open(url, data, timeout) File "C:\Python32\lib\urllib\request.py", line 369, in open response = self._open(req, data) File "C:\Python32\lib\urllib\request.py", line 387, in _open '_open', req) File "C:\Python32\lib\urllib\request.py", line 347, in _call_chain result = func(*args) File "C:\Python32\lib\urllib\request.py", line 1171, in https_open context=self._context, check_hostname=self._check_hostname) File "C:\Python32\lib\urllib\request.py", line 1138, in do_open raise URLError(err) urllib.error.URLError: <urlopen error [Errno 1] _ssl.c:392: error:1411809D:SSL routines:SSL_CHECK_SERVERHELLO_TLSEXT:tls invalid ecpointformat list> >>>
user1406902
source share