SSL认证验证失败

时间:2017-02-16 15:20:27

标签: python ssl praw

过去几天我一直在努力学习python,我遇到了一个我不太确定如何解决的问题。我正在尝试制作一个简单的reddit bot并学习praw reddit API。当我运行以下bot时:

verify = False

我收到错误:

  

RequestException:请求错误[SSL:CERTIFICATE_VERIFY_FAILED]证书验证失败(_ssl.c:661)

我已经戳了戳,看到我可以插入像

这样的东西
 Traceback (most recent call last):
  File "C:\Users\**\Desktop\Bottest\startBot.py", line 16, in <module>
    for comment in test.comments:
  File "C:\Python27\lib\site-packages\praw\models\reddit\base.py", line 31, in __getattr__
    self._fetch()
  File "C:\Python27\lib\site-packages\praw\models\reddit\submission.py", line 133, in _fetch
    'sort': self.comment_sort})
  File "C:\Python27\lib\site-packages\praw\reddit.py", line 320, in get
    data = self.request('GET', path, params=params)
  File "C:\Python27\lib\site-packages\praw\reddit.py", line 404, in request
    params=params)
  File "C:\Python27\lib\site-packages\prawcore\sessions.py", line 133, in request
    self._authorizer.refresh()
  File "C:\Python27\lib\site-packages\prawcore\auth.py", line 328, in refresh
    password=self._password)
  File "C:\Python27\lib\site-packages\prawcore\auth.py", line 138, in _request_token
    response = self._authenticator._post(url, **data)
  File "C:\Python27\lib\site-packages\prawcore\auth.py", line 29, in _post
    data=sorted(data.items()))
  File "C:\Python27\lib\site-packages\prawcore\requestor.py", line 48, in request
    raise RequestException(exc, args, kwargs)
RequestException: error with request [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:661)

在排序的get()实例中,但我不确定这是否适用于此特定示例。其他一切都很好我相信 - 我可以使用pip等等。

任何帮助将不胜感激。万分感谢。

编辑:完整的错误追溯是

{{1}}

1 个答案:

答案 0 :(得分:0)

您的问题可能存在于user_agent内。 Reddit需要一个唯一的user_agent。您user_agent是唯一标识脚本的方式。 Reddit API维基页面(https://github.com/reddit/reddit/wiki/API)包含有关user_agent字符串和其他所有内容的官方和更新建议。强烈建议阅读它。

除此之外,您的user_agent字符串必须从不包含字符串bot。这意味着你可以改变你的行:

r = praw.Reddit('bot1')

这样的事情:

r = praw.Reddit('Name of your bot [version] by [Your Reddit username or your name]')

[您可能希望阅读有关此问题的优秀教程https://praw.readthedocs.io/en/v3.6.0/pages/getting_started.html#connecting-to-reddit]

否则你可以在创建praw对象后添加它:

r.config._ssl_url = None

不推荐使用,因为这意味着您的所有信息都可能被中间人拦截

你也可以:

添加:

r.login('bot_username', 'bot_password')
r = praw.reddit([...])

之后

test = r.submission(id="5u7q8x")更改为test = r.get_submission(submission_id='5u7q8x')

并在以下后添加:

test = praw.helpers.flatten_tree(test.comments)

您现在应该能够遍历test而不是test.comments

如果这不起作用,我不知道可以做什么。