Python 2: SSL Verbindungen hängen
Da viele Websitenbetreiber wegen der POODLE SSL Lücke die SSL Version 3 nun auch abgeschaltet haben und daher nur noch TLS erlauben, hat so mancher Python 2 Code Probleme.
Bei mir war z.B. kein Timeout definiert, weswegen der Verbindungsaufbau niemals beendet werden konnte. Nach Abbrechen zeigt sich folgender Traceback:
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ssl.py", line 305, in do_handshake
self._sslobj.do_handshake()
Das liegt einfach daran, dass das SSL Modul in Python 2 (zumindest unter OS X) kein TLS versucht. Abhilfe schafft folgendes Snippet, das am Anfang des Codes platziert werden sollte:
import httplib
import ssl
from functools import partial
class httplib_tls:
wrap_socket = partial(ssl.wrap_socket, ssl_version=ssl.PROTOCOL_TLSv1)
httplib.ssl = httplib_tls