code: def is_valid(self, addr, protocol='http', timeout=5):
          
          start = time.time()
          try:
              r = requests.get(self.test_url[protocol],
                               timeout=timeout,
                               proxies={protocol: 'http://' + addr})
          except KeyboardInterrupt:
              raise
          except requests.exceptions.Timeout:
              return {'valid': False, 'msg': 'timeout'}
          except:
              return {'valid': False, 'msg': 'exception'}
          else:
              if r.status_code == 200:
                  response_time = time.time() - start
                  return {'valid': True, 'response_time': response_time}
              else:
                  return {
                      'valid': False,
                      'msg': 'status code: {}'.format(r.status_code)
                  }
docs: Check if a proxy is valid
  
          Args:
              addr: A string in the form of 'ip:port'
              protocol: Either 'http' or 'https', different test urls will be used
                        according to protocol.
              timeout: A integer indicating the timeout of connecting the test url.
  
          Returns:
              dict: If the proxy is valid, returns {'valid': True, 'response_time': xx}
                  otherwise returns {'valid': False, 'msg': 'xxxxxx'}.