首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SSLError配PRAW?

SSLError配PRAW?
EN

Stack Overflow用户
提问于 2014-02-09 04:56:05
回答 3查看 1.2K关注 0票数 2

我正试图开始使用PRAW,但我在使用login()时遇到了问题。

我有以下代码:

代码语言:javascript
复制
import praw

r = praw.Reddit('This is a test bot')
r.login('myRedditUsername','password')

我得到了以下错误:

代码语言:javascript
复制
requests.exceptions.SSLError: [Errno 1] _ssl.c:503: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

除了禁用SSL之外,还有什么方法可以绕过这个问题吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-02-09 05:04:32

根据从共享主机登录期间的praw

您的主机似乎没有安装正确的SSL证书。可以通过添加 r.config._ssl_url =无 在创建PRAW对象之后。

票数 1
EN

Stack Overflow用户

发布于 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)

接下来,创建一个请求会话,并指定一个直接指向证书文件的路径。

代码语言:javascript
复制
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)

代码语言:javascript
复制
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})

另请参阅

票数 2
EN

Stack Overflow用户

发布于 2016-11-12 01:41:25

UPD:将我公司的内部证书添加到cacert.pem文件中,从而消除了错误。

步骤如下:

  1. 查找浏览器正在使用的内部证书,并将其导出为Base64编码格式。详细说明如下:如何找到SSL证书文件的路径?
  2. 找到请求包正在使用的cacert.pem文件(.\Lib\site-packages\ request ),并在cacert.pem文件末尾复制所有来自内部证书文件的内容。

这是我以前的答案,我暂时通过关闭SSL验证来解决问题。

我在Windows 7上也有同样的问题,不仅是登录,还有任何编辑请求。r.config._ssl_url = None在将praw.ini创建为C:\users\&user_name\AppData\Roaming\praw.ini之后,也没有做到这一点:

代码语言:javascript
复制
[reddit]
validate_certs: False

我终于成功了。虽然我有InsecureRequestWarning警告。如果像我这样的人还在挣扎的话,我想把它扔在这里以防。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21655478

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档