title: Python: SSLError using requests for surveymonkey.com
body: <p>Python Version: Python 2.7.6</p>
  
  <p>OS: OSX 10.10.3</p>
  
  <p>I'm trying to <a href="http://docs.python-requests.org/en/latest/" rel="nofollow" title="requests">requests</a>   "<a href="https://www.surveymonkey.com/" rel="nofollow">https://www.surveymonkey.com/</a>"</p>
  
  <pre><code>&gt;&gt;&gt; import requests
  &gt;&gt;&gt; requests.get('https://www.surveymonkey.com/')
  </code></pre>
  
  <p>but I get the following error:</p>
  
  <pre><code>Traceback (most recent call last):
    File "&lt;stdin&gt;", line 1, in &lt;module&gt;
    File "/Users/jasony/Documents/python/scripts2/env/lib/python2.7/site-packages/requests/api.py", line 69, in get
      return request('get', url, params=params, **kwargs)
    File "/Users/jasony/Documents/python/scripts2/env/lib/python2.7/site-packages/requests/api.py", line 50, in request
      response = session.request(method=method, url=url, **kwargs)
    File "/Users/jasony/Documents/python/scripts2/env/lib/python2.7/site-packages/requests/sessions.py", line 465, in request
      resp = self.send(prep, **send_kwargs)
    File "/Users/jasony/Documents/python/scripts2/env/lib/python2.7/site-packages/requests/sessions.py", line 573, in send
      r = adapter.send(request, **kwargs)
    File "/Users/jasony/Documents/python/scripts2/env/lib/python2.7/site-packages/requests/adapters.py", line 431, in send
      raise SSLError(e, request=request)
  requests.exceptions.SSLError: [Errno bad handshake] [('SSL routines', 'SSL23_GET_SERVER_HELLO', 'sslv3 alert handshake failure')]
  </code></pre>
  
  <p>I don't get the same error with "<a href="https://www.google.com" rel="nofollow">https://www.google.com</a>"</p>
  
  <pre><code>&gt;&gt;&gt; import requests
  &gt;&gt;&gt; requests.get('https://www.google.com')
  &lt;Response [200]&gt;
  </code></pre>
  
  <p>Does this mean there is an issue with surveymonkey's ssl?</p>
  
  <p>Python Version: 2.7.10</p>
  
  <pre><code>&gt;&gt;&gt; requests.get('https://www.surveymonkey.com/mp/legal/which-terms-apply')
  Traceback (most recent call last):
    File "&lt;stdin&gt;", line 1, in &lt;module&gt;
    File "/Users/jasony/Documents/python/scripts2/env/lib/python2.7/site-packages/requests/api.py", line 69, in get
      return request('get', url, params=params, **kwargs)
    File "/Users/jasony/Documents/python/scripts2/env/lib/python2.7/site-packages/requests/api.py", line 50, in request
      response = session.request(method=method, url=url, **kwargs)
    File "/Users/jasony/Documents/python/scripts2/env/lib/python2.7/site-packages/requests/sessions.py", line 465, in request
      resp = self.send(prep, **send_kwargs)
    File "/Users/jasony/Documents/python/scripts2/env/lib/python2.7/site-packages/requests/sessions.py", line 573, in send
      r = adapter.send(request, **kwargs)
    File "/Users/jasony/Documents/python/scripts2/env/lib/python2.7/site-packages/requests/adapters.py", line 431, in send
      raise SSLError(e, request=request)
  requests.exceptions.SSLError: [SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] sslv3 alert handshake failure (_ssl.c:590)
  </code></pre>
  
  <p><strong>Update</strong>:
  I've tried Python 2.7.6, Python 2.7.9, Python 2.7.10 </p>
  
  <p>with OS: OSX 10.10.3 with OpenSSL 1.0.2d 9 Jul 2015. Requests versions 2.4.3, 2.5.3, 2.7.0. </p>
  
  <p>I've tried to <a href="http://docs.python-requests.org/en/latest/user/advanced/#example-specific-ssl-version%20&#39;adapting%20the%20SSL%20protocal&#39;" rel="nofollow">configure the ssl protocol.</a> Python 2.7.10 / Requests 2.7.0 The following is the code:</p>
  
  <pre><code>import ssl
  import requests
  
  from requests.adapters import HTTPAdapter
  from requests.packages.urllib3.poolmanager import PoolManager
  
  
  class Ssl3HttpAdapter(HTTPAdapter):
      """"Transport adapter" that allows us to use SSLv3."""
  
      def init_poolmanager(self, connections, maxsize, block=False):
          self.poolmanager = PoolManager(num_pools=connections,
                                         maxsize=maxsize,
                                         block=block,
                                         ssl_version=ssl.PROTOCOL_SSLv3)
  
  s = requests.Session()
  s.mount('https://', Ssl3HttpAdapter())
  url = 'https://www.surveymonkey.com/'
  print s.get(url)
  </code></pre>
  
  <p>I still get an error:</p>
  
  <pre><code>Traceback (most recent call last):
    File "redirect.py", line 29, in &lt;module&gt;
      print s.get(url)
    File "/Users/jasony/Documents/python/scripts2/env/lib/python2.7/site-packages/requests/sessions.py", line 469, in get
      return self.request('GET', url, **kwargs)
    File "/Users/jasony/Documents/python/scripts2/env/lib/python2.7/site-packages/requests/sessions.py", line 457, in request
      resp = self.send(prep, **send_kwargs)
    File "/Users/jasony/Documents/python/scripts2/env/lib/python2.7/site-packages/requests/sessions.py", line 569, in send
      r = adapter.send(request, **kwargs)
    File "/Users/jasony/Documents/python/scripts2/env/lib/python2.7/site-packages/requests/adapters.py", line 420, in send
      raise SSLError(e, request=request)
  requests.exceptions.SSLError: [SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] sslv3 alert handshake failure (_ssl.c:590)
  </code></pre>