Estoy intentando verificar que ese objetivo expone un servicio web https. Tengo un código para conectarme a través de HTTP pero no estoy seguro de cómo conectarme a través de HTTPS. Leí que usa SSL, pero también he leído que no admite errores de certificado. El código que tengo es de python docs:Conexión HTTPS Python
import httplib
conn = httplib.HTTPConnection("www.python.org")
conn.request("GET", "/index.html")
r1 = conn.getresponse()
print r1.status, r1.reason
¿Alguien sabe cómo conectarse a HTTPS?
Ya probé la HTTPSConenction pero responde con un código de error que afirma que httplib no tiene el atributo HTTPSConnection. Tampoco tengo socket.ssl disponible.
He instalado Python 2.6.4 y no creo que tenga el soporte SSL compilado en él. ¿Hay alguna manera de integrar este suppot en el python más nuevo sin tener que instalarlo de nuevo?
He instalado OpenSSL y pyOpenSSL y he probado el código de abajo de una de las respuestas:
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
Tengo un error:
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'
¿Alguien sabe cómo conseguir este ¿trabajando?
-- UPDATE
He descubierto cuál era el problema, la versión de Python que estaba usando no tenía soporte para SSL. Encontré esta solución actualmente en: http://www.webtop.com.au/compiling-python-with-ssl-support.
El código ahora funcionará después de esta solución que es muy buena. Cuando importo ssl y HTTPSConnection, sé que no aparece un error.
Gracias por la ayuda a todos.
Tenga en cuenta que esto no verifica el certificado remoto, por lo tanto, realmente no obtiene la seguridad de esta manera (ya que realmente no sabe con qué servidor está hablando realmente). – Bruno
El enlace está muerto. – SwiftsNamesake