Conexão HTTPS Python
Estou tentando verificar se esse destino expõe um serviço da Web https. Eu tenho código para conectar via HTTP, mas não sei como conectar via HTTPS. Li que você usa SSL, mas também li que ele não suporta erros de certificado. O código que obtive é dos documentos python:
import httplib
conn = httplib.HTTPConnection("www.python.org")
conn.request("GET", "/index.html")
r1 = conn.getresponse()
print r1.status, r1.reason
Alguém sabe como se conectar ao HTTPS?
Eu já tentei o HTTPSConenction, mas ele responde com um código de erro alegando que o updplib não tem o atributo HTTPSConnection. Eu também não tenho socket.ssl disponível.
Instalei o Python 2.6.4 e não acho que ele tenha suporte SSL compilado. Existe uma maneira de integrar esse suporte ao python mais novo sem precisar instalá-lo novamente.
Instalei o OpenSSL e pyOpenSsl e tentei o código abaixo com uma das respostas:
import urllib2
from OpenSSL import SSL
try:
response = urllib2.urlopen('https://example.com')
print 'response headers: "%s"' % response.info()
except IOError, e:
if hasattr(e, 'code'): # HTTPError
print 'http error code: ', e.code
elif hasattr(e, 'reason'): # URLError
print "can't connect, reason: ", e.reason
else:
raise
Eu tenho um erro:
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
File "/home/build/workspace/downloads/Python-2.6.4/Lib/urllib.py", line 87, in urlopen
return opener.open(url)
File "/home/build/workspace/downloads/Python-2.6.4/Lib/urllib.py", line 203, in open
return self.open_unknown(fullurl, data)
File "/home/build/workspace/downloads/Python-2.6.4/Lib/urllib.py", line 215, in open_unknown
raise IOError, ('url error', 'unknown url type', type)
IOError: [Errno url error] unknown url type: 'https'
Alguém sabe como fazer isso funcionar?
-- UPDATE
Eu descobri qual era o problema, a versão do Python que eu estava usando não tinha suporte para SSL. Encontrei esta solução atualmente em:http://www.webtop.com.au/compiling-python-with-ssl-support.
O código agora funcionará após esta solução, que é muito boa. Quando eu importo ssl e HTTPSConnection, eu sei que não recebo um erro.
Obrigado pela ajuda a todos.