Deshabilitar la verificación del certificado SSL en Scrapy

Actualmente estoy luchando con un problema que tengo con Scrapy. Siempre que utilicé Scrapy para raspar un sitio HTTPS donde el valor CN del certificado coincide con el nombre de dominio del servidor, ¡Scrapy funciona muy bien! Por otro lado, sin embargo, cada vez que trato de raspar un sitio donde el valor CN del certificado NO coincide con el nombre de dominio del servidor, obtengo lo siguiente:

Traceback (most recent call last): File "/usr/local/lib/python2.7/dist-packages/twisted/protocols/tls.py", line 415, in dataReceived self._write(bytes) File "/usr/local/lib/python2.7/dist-packages/twisted/protocols/tls.py", line 554, in _write sent = self._tlsConnection.send(toSend) File "/usr/local/lib/python2.7/dist-packages/OpenSSL/SSL.py", line 1270, in send result = _lib.SSL_write(self._ssl, buf, len(buf)) File "/usr/local/lib/python2.7/dist-packages/OpenSSL/SSL.py", line 926, in wrapper callback(Connection._reverse_mapping[ssl], where, return_code) ---  --- File "/usr/local/lib/python2.7/dist-packages/twisted/internet/_sslverify.py", line 1055, in infoCallback return wrapped(connection, where, ret) File "/usr/local/lib/python2.7/dist-packages/twisted/internet/_sslverify.py", line 1154, in _identityVerifyingInfoCallback verifyHostname(connection, self._hostnameASCII) File "/usr/local/lib/python2.7/dist-packages/service_identity/pyopenssl.py", line 30, in verify_hostname obligatory_ids=[DNS_ID(hostname)], File "/usr/local/lib/python2.7/dist-packages/service_identity/_common.py", line 235, in __init__ raise ValueError("Invalid DNS-ID.") exceptions.ValueError: Invalid DNS-ID. 

He revisado toda la documentación que he podido y, por lo que puedo decir, Scrapy no tiene una forma de deshabilitar la verificación del certificado SSL. Incluso la documentación para el objeto de solicitud de chatarra (que supongo que es donde se encuentra esta funcionalidad) no tiene ninguna referencia:

http://doc.scrapy.org/en/1.0/topics/request-response.html#scrapy.http.Request https://github.com/scrapy/scrapy/blob/master/scrapy/http/request/ init .py

Tampoco hay configuraciones de Scrapy que aborden el problema:

http://doc.scrapy.org/en/1.0/topics/settings.html

Aparte de usar Scrapy por fuente y modificar la fuente según sea necesario, ¿alguien tiene alguna idea de cómo puedo deshabilitar la verificación del certificado SSL?

¡Gracias!

Desde la documentación que vinculó para la configuración , parece que podría modificar la configuración DOWNLOAD_HANDLERS .

De los documentos:

 """ A dict containing the request download handlers enabled by default in Scrapy. You should never modify this setting in your project, modify DOWNLOAD_HANDLERS instead. """ DOWNLOAD_HANDLERS_BASE = { 'file': 'scrapy.core.downloader.handlers.file.FileDownloadHandler', 'http': 'scrapy.core.downloader.handlers.http.HttpDownloadHandler', 'https': 'scrapy.core.downloader.handlers.http.HttpDownloadHandler', 's3': 'scrapy.core.downloader.handlers.s3.S3DownloadHandler', } 

Luego en tu configuración, algo como esto:

 """ Configure your download handlers with something custom to override the default https handler """ DOWNLOAD_HANDLERS = { 'https': 'my.custom.downloader.handler.https.HttpsDownloaderIgnoreCNError', } 

Entonces, al definir un controlador personalizado para el protocolo https , debería poder manejar el error que está recibiendo y permitir que scrapy continúe con su negocio.