title: Python requests print used cipher for HTTPS
body: <p>I have developed a CherryPy REST service with SSL (TLSv1-TLSv1.2) and disabling ciphers and insecure protocols.</p>
  
  <p>Now I have another piece of code using Python requests to connect to this service. I already have written an TLS HTTPAdapter and a request succeeds. I have only one problem:</p>
  
  <p>I neither see what cipher was chosen on server side nor on client side. So in fact, I do not really know, if my security options took place. I could not find out how to get SSLSocket.cipher() from the builtin Python module called for CherryPy or requests.</p>
  
  <p>Is there a simple way to get this information?</p>
  
  <p>Here is an example:</p>
  
  <pre><code>import requests
  
  from requests.adapters import HTTPAdapter
  from requests.packages.urllib3.poolmanager import PoolManager
  
  class Tlsv1_2HttpAdapter(HTTPAdapter):
      """"Transport adapter" that allows us to use TLSv1.2"""
  
      def init_poolmanager(self, connections, maxsize, block=False):
          self.poolmanager = PoolManager(
              num_pools=connections, maxsize=maxsize,
              block=block, ssl_version=ssl.PROTOCOL_TLSv1_2)
  
  con = "https://{}:{}".format(host, port)
  
  tls = Tlsv1_2HttpAdapter()
  
  try:
      s = requests.Session()
      s.mount(con, tls)
      r = s.get(con)
  except requests.exceptions.SSLError as e:
      print(e, file=sys.stderr)
      sys.exit(1)
  </code></pre>
  
  <p>I want something like: print("Cipher used: {}".format(foo.cipher()))</p>
  
  <p>Many thanks in advance for your help</p>