Tweepy SSLError regarding ssl certificate

后端 未结 5 1204
不思量自难忘°
不思量自难忘° 2021-01-06 05:13

I am running a REST API (Search API) with Tweepy in Python. I worked the program at home and it\'s totally fine. But now I am working on this in different networks and I got

相关标签:
5条回答
  • 2021-01-06 05:52

    Adding verify=False will ignore the validation that has to be made and all the data will be transferred in plain text without any encryption.

    pip install certifi
    

    The above installation fixes the bad handshake and ssl error.

    0 讨论(0)
  • 2021-01-06 05:59

    I ran into the same problem and unfortunately the only thing that worked was setting verify=False in auth.py in Tweepy (for me Tweepy is located in /anaconda3/lib/python3.6/site-packages/tweepy on my Mac):

    resp = requests.post(self._get_oauth_url('token'),
                                 auth=(self.consumer_key,
                                       self.consumer_secret),
                                 data={'grant_type': 'client_credentials'},
                                 verify=False)
    

    Edit:

    Behind a corporate firewall, there is a certificate issue. In chrome go to settings-->advanced-->certificates and download your corporate CA certificate. Then, in Tweepy binder.py, right under session = requests.session() add

    session.verify = 'path_to_corporate_certificate.cer'

    0 讨论(0)
  • 2021-01-06 06:03

    For anybody that might stumble on this like I did, I had a similar problem because my company was using a proxy, and the SSL check failed while trying to verify the proxy's certificate.

    The solution was to export the proxy's root certificate as a .pem file. Then you can add this certificate to certifi's trust store by doing:

    import certifi
    cafile = certifi.where()
    with open(r<path to pem file>, 'rb') as infile:
        customca = infile.read()
    with open(cafile, 'ab') as outfile:
        outfile.write(customca)
    

    You'll have to replace <path to pem file> with the path to the exported file. This should allow requests (and tweepy) to successfully validate the certificates.

    0 讨论(0)
  • 2021-01-06 06:10

    First, verify if you can access twitter just using a proxy configuration. If so, you can modify this line on your code to include a proxy URL:

    self.api = tweepy.API(self.auth)
    
    0 讨论(0)
  • 2021-01-06 06:13

    In streaming.py, adding verify = False in line# 105 did the trick for me as shown below. Though it is not advisable to use this approach as it makes the connection unsafe. Haven't been able to come up with a workaround for this yet.

    stream = Stream(auth, listener, verify = False)
    
    0 讨论(0)
提交回复
热议问题