2017-02-16 10 views
1

Я пытался узнать python за последние пару дней, и у меня возникла проблема. Я не совсем уверен, как ее решить. Я пытаюсь сделать простой reddit bot и узнать 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)

Я ткнул вокруг и увидел, что я могу вставить что-то вроде

verify = False 

в ГЭТ() экземпляр рода, но я не уверен, что это будет работать в этом конкретном примере. Все остальное отлично работает, я верю - я могу использовать пип только отлично и т. Д.

Любая помощь будет оценена. Благодаря тонну.

редактировать: полная отслеживающий ошибки

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 (https://github.com/reddit/reddit/wiki/API) есть официальные и обновленные рекомендации по строкам user_agent и всему остальному. Чтение настоятельно рекомендуется.

Дополнительная информация об этом user_agent строка обязательна never содержит строку bot. Это означает, что вы sould изменить строку:

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.

Если это не сработает, я не знаю, что может.

+0

Я видел _recommendation_, чтобы не использовать ** bot ** в пользовательском агенте, но я думал, что это приведет только к проблемам, когда бот будет размещать/отправлять вместо простого чтения и вернись ко мне. Несмотря на это, я попытался изменить это, и это приводит к той же ошибке. Я обновил тело, чтобы отразить его – AON

+0

также, мой первый простой файл: 'import praw reddit = praw.Reddit (client_id = 'xx', client_secret =" xx ", password = 'xx', user_agent = 'testmachine11968986531' , username = 'xx') для отправки в reddit.front.hot(): print (подчинение) 'привел к той же ошибке – AON

+0

Я обновил свой ответ другим * исправлением * для проблемы –

 Смежные вопросы

  • Нет связанных вопросов^_^