2017-02-16 261 views
1

我一直在試圖學習Python這幾天,我遇到了一個問題,我不太清楚如何解決。我正在嘗試製作一個簡單的reddit機器人並學習praw reddit API。當我運行下面的機器人:SSL認證驗證失敗

import praw 
import time 

r = praw.Reddit('testmachine11968986531') 
test = r.submission(id="5u7q8x") 

comment_user = set() # to avoid duplicates 

for i in xrange(0,10): # Run the loop 10 times 
    #comments = r.comments(submission) 
    for comment in test.comments: 
     body = comment.body.lower() 
     if body.find("think") != -1 or body.find("please") != -1: 
      comment_user.add(comment.author) 
    #time.sleep(120) # Sleep for 2 minutes 

print "Here are some comments:" 
for user in polite_users: 
    print user 

我得到一個錯誤:

RequestException: error with request [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:661)

我周圍戳,看到我可以在一個get插入類似

verify = False 

()類的實例,但我不確定這是否會在這個特定的例子中起作用。一切工作正常我相信 - 我可以使用PIP就好了,等等。

任何幫助,將不勝感激。萬分感謝。

編輯:完整的錯誤回溯是

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) 
+0

你在哪裏得到錯誤? –

+0

@ claymore-adrendamar我繼續編輯它在身體 – AON

+0

這可能是有幫助的。但不知道。 http://stackoverflow.com/questions/27835619/ssl-certificate-verify-failed-error – Marviel

回答

0

您的問題可能駐留在您user_agent內。 Reddit需要一個獨特的user_agent。你user_agent是你如何唯一識別你的腳本。 Reddit API wiki頁面(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]

否則,你可以添加此創建對象後:

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

如果這不起作用,我不知道什麼可以。

+0

我確實看到一個_recommendation_不在用戶代理中使用** bot **,但我認爲這隻會導致問題,當機器人將張貼/發送代替剛剛閱讀和打印回給我。無論如何,我試圖改變它,並導致相同的錯誤。我更新了身體以反映它 – AON

+0

也是我的第一個簡單文件:'import praw reddit = praw.Reddit(client_id ='xx', client_secret =「xx」,password ='xx', user_agent ='testmachine11968986531' ,用戶名='xx') 提交reddit.front.hot(): 打印(提交)'導致了相同的錯誤 – AON

+0

我更新了我的答案與另一個*修復*問題 –