我正在尝试使用PRAW,但我在使用login()时遇到了问题。
我有以下代码:
import praw
r = praw.Reddit('This is a test bot')
r.login('myRedditUsername','password')
我收到以下错误:
requests.exceptions.SSLError: [Errno 1] _ssl.c:503: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
在禁用SSL之外有没有办法解决这个问题?
答案 0 :(得分:2)
TL; DR: _ssl_url
doesn't work in PRAW 4。使用Session.verify
的自定义请求会话。
根据PRAW's developer,PRAW 4中删除了使用config._ssl_url = None
的选项。您可以使用自定义请求Session配置自己的SSL设置。
假设您在a company network with self-signed certificates,您有两种选择。
首先,将公司的根证书导出为.pem
文件。 (见Export a PEM-Format Certificate From a Windows System)
接下来,创建一个Requests会话并直接指定证书文件的路径。
import praw
import requests
session = requests.Session()
session.verify = '/path/to/certfile.pem' # Path to cert file
reddit = praw.Reddit(client_id='###',
client_secret='###',
user_agent='windows:testapp (by /u/stevoisiak)',
requestor_kwargs={'session': session})
此方法将完全禁用所有请求的HTTPS验证。虽然这种方法很简单,但出于安全原因,我们不鼓励强烈。 (见SSL Warnings)
import praw
import requests
session = requests.Session()
session.verify = False # Disable SSL
reddit = praw.Reddit(client_id='###',
client_secret='###',
user_agent='windows:testapp (by /u/stevoisiak)',
requestor_kwargs={'session': session})
答案 1 :(得分:1)
根据praw SSLError during login from shared hosting:
您的主机似乎没有正确的SSL证书 安装。您可以通过添加
来禁用SSL(不推荐)r.config._ssl_url = None
创建PRAW对象后。
答案 2 :(得分:0)
UPD:将我公司的内部证书添加到cacert.pem文件中,从而使错误消失。
以下步骤:
这是我的老答案,我暂时通过关闭SSL验证解决了问题
我在Windows 7上遇到了同样的问题,不仅是登录,还有reddit的任何请求。在将praw.ini创建为C:\ users \& user_name \ AppData \ Roaming \ praw.ini后,r.config._ssl_url = None
也没有做到这一点:
[reddit]
validate_certs: False
我终于成功了。虽然我有InsecureRequestWarning警告。如果像我这样的人仍然在努力解决这个问题,那就想把它扔到这里。