Python 关于ssl证书的Tweepy SSLError
我正在用Python中的Tweepy运行RESTAPI(搜索API)。我在家里做这个项目,一切都很好。但是现在我在不同的网络中处理这个问题,我得到了错误信息Python 关于ssl证书的Tweepy SSLError,python,ssl,tweepy,twitter-rest-api,Python,Ssl,Tweepy,Twitter Rest Api,我正在用Python中的Tweepy运行RESTAPI(搜索API)。我在家里做这个项目,一切都很好。但是现在我在不同的网络中处理这个问题,我得到了错误信息 SSLError:(“握手错误:错误([('SSL例程','ssl3\u获取服务器\u证书','certificate verify failed'),)”,) 我的代码是这样的 auth=tweepy.AppAuthHandler(使用者密钥,使用者密钥) api=tweepy.api(auth,wait\u on\u rate\u li
SSLError:(“握手错误:错误([('SSL例程','ssl3\u获取服务器\u证书','certificate verify failed'),)”,)
我的代码是这样的
auth=tweepy.AppAuthHandler(使用者密钥,使用者密钥)
api=tweepy.api(auth,wait\u on\u rate\u limit=True,wait\u on\u rate\u limit\u notify=True)
我找到了这个帖子
并设置以下代码(
verify=false
)可能是一个快速解决方案。有人知道怎么做吗,或者用其他方法在特威比?谢谢。在streaming.py中,在第105行中添加verify=False为我实现了如下所示的技巧。尽管不建议使用这种方法,因为它会使连接不安全。我还没能想出一个解决办法
stream = Stream(auth, listener, verify = False)
首先,验证您是否可以仅使用代理配置访问twitter。如果是,您可以修改代码中的这一行以包含代理URL:
self.api = tweepy.API(self.auth)
我遇到了同样的问题,不幸的是,唯一有效的方法是在Tweepy的auth.py中设置verify=False(对于我来说,Tweepy位于Mac上的
/anaconda3/lib/python3.6/site packages/Tweepy
中):
resp = requests.post(self._get_oauth_url('token'),
auth=(self.consumer_key,
self.consumer_secret),
data={'grant_type': 'client_credentials'},
verify=False)
编辑:
在公司防火墙后面,有一个证书问题。在chrome中,转到设置-->高级-->证书并下载您的公司CA证书。然后,在Tweepy binder.py中,就在session=requests.session()下
session.verify='path\u to_corporate\u certificate.cer'
添加verify=False
将忽略必须进行的验证,所有数据将以纯文本传输,无需任何加密
pip install certifi
上面的安装修复了错误的握手和ssl错误。对于任何可能像我一样偶然发现此错误的人,我也遇到了类似的问题,因为我的公司正在使用代理,而ssl检查在尝试验证代理的证书时失败
解决方案是将代理的根证书导出为.pem
文件。然后,您可以通过执行以下操作将此证书添加到certifi
的信任存储:
导入证书
cafile=certifi.where()
以开放式(r,'rb')作为填充:
customca=infle.read()
打开(cafile,'ab')作为输出文件:
outfile.write(customca)
您必须用导出文件的路径替换
。这应该允许请求
(和tweepy
)成功验证证书。Wei,只是想知道您是否找到了此问题的永久解决方案,而不是将SSL验证标志设置为false。我面临着类似的问题,但这是随机的。谢谢你的提问。不幸的是。。。现在运气不好。现在,我只是试图避免连接该网络,而使用其他具有不同网络安全设置的网络。你有其他的解决方案吗?你怎么能对像“Favorite”这样的通用API方法这样做呢?这对我来说很有效,尽管我的证书不是.cer,而是.pem。只要文件路径正确,这就行了。