Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 关于ssl证书的Tweepy SSLError_Python_Ssl_Tweepy_Twitter Rest Api - Fatal编程技术网

Python 关于ssl证书的Tweepy SSLError

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

我正在用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 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。只要文件路径正确,这就行了。