我正试图开始使用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之外,还有什么方法可以绕过这个问题吗?
发布于 2014-02-09 05:04:32
您的主机似乎没有安装正确的SSL证书。可以通过添加 r.config._ssl_url =无 在创建PRAW对象之后。
发布于 2018-05-03 17:03:49
TL;DR: _ssl_url 在PRAW 4不起作用.使用Session.verify的自定义请求会话。
第四轮或更高版本:
根据PRAW显影剂,在PRW4中删除了使用config._ssl_url = None的选项。相反,您可以使用自定义请求会话来配置自己的SSL设置。
假设您在具有自签名证书的公司网络上,您有两个选项。
选项1-信任自签名证书
首先,将公司的根证书导出为.pem文件。(见https://pubs.vmware.com/flex-1/index.jsp?topic=%2Fcom.vmware.horizon.flex.admin.doc%2FGUID-E986742A-17A0-481E-B72A-3CC6340EA7DD.html)
接下来,创建一个请求会话,并指定一个直接指向证书文件的路径。
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})选项2-禁用SSL验证(不安全)
此方法将完全禁用所有请求的HTTPS验证。虽然该方法很简单,但出于安全原因,强烈禁止使用。(见https://urllib3.readthedocs.io/en/latest/advanced-usage.html#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})另请参阅
发布于 2016-11-12 01:41:25
UPD:将我公司的内部证书添加到cacert.pem文件中,从而消除了错误。
步骤如下:
这是我以前的答案,我暂时通过关闭SSL验证来解决问题。
我在Windows 7上也有同样的问题,不仅是登录,还有任何编辑请求。r.config._ssl_url = None在将praw.ini创建为C:\users\&user_name\AppData\Roaming\praw.ini之后,也没有做到这一点:
[reddit]
validate_certs: False我终于成功了。虽然我有InsecureRequestWarning警告。如果像我这样的人还在挣扎的话,我想把它扔在这里以防。
https://stackoverflow.com/questions/21655478
复制相似问题