2

我无法使用下面的代码登录我自己的 Reddit 帐户。

错误信息:

raise HTTPError(http_error_msg, response=self) HTTPError: 403 Client Error: Forbidden

有没有办法解决这个错误?

class PrawTest(webapp2.RequestHandler):
  def get(self):
    self.response.headers['Content-Type'] = 'text/plain'
    self.response.out.write('Yo, imma redit bot!')

    get_login= ConfigParser.ConfigParser()
    get_login.read("logins.ini")

    r = praw.Reddit(user_agent='Captain Reddit!')

    r.login(get_login.get("login1", "username"),get_login.get("login1","password"))


app = webapp2.WSGIApplication([('/hype_shit_up', PrawTest)], debug=True)
4

1 回答 1

0

您的代码非常不必要地过于复杂,只是为了使用 PRAW 登录。文档中推荐的方式是必须reddit = praw.Reddit('SOME-NAME-HERE')登录。然后,在您的praw.ini文件中,将其设置为如下所示:

[DEFAULT]
# A boolean to indicate whether or not to check for package updates.
check_for_updates=True

# Object to kind mappings
comment_kind=t1
message_kind=t4
redditor_kind=t2
submission_kind=t3
subreddit_kind=t5

# The URL prefix for OAuth-related requests.
oauth_url=https://oauth.reddit.com

# The URL prefix for regular requests.
reddit_url=https://www.reddit.com

# The URL prefix for short URLs.
short_url=https://redd.it

[SOME-NAME-HERE]
user_agent=USER-AGENT-HERE
username=REDDIT-ACCOUNT-USERNAME
password=REDDIT-ACCOUNT-PASSWORD
client_id=REDDIT-APP-CLIENT-ID
client_secret=REDDIT-APP-CLIENT-SECRET

用户代理的要求可以在这里找到:

将客户的 User-Agent 字符串更改为唯一且具有描述性的字符串,包括目标平台、唯一的应用程序标识符、版本字符串以及作为联系信息的用户名,格式如下: <platform>:<app ID>:<version string> (by /u/<reddit username>)

-Example: User-Agent: android:com.example.myredditapp:v1.2.3 (by /u/kemitche)

  • 许多默认的用户代理(如“Python/urllib”或“Java”)被严格限制为鼓励独特和描述性的用户代理字符串。
  • 包括版本号并在您构建应用程序时对其进行更新使我们能够安全地阻止您的应用程序的旧有错误/损坏的版本。
  • 永远不要对你的用户代理撒谎。这包括欺骗流行的浏览器和欺骗其他机器人。我们将禁止带有极端偏见的说谎者。

如果您有任何未来的问题,请不要犹豫,将它们作为对此答案的评论!

于 2017-12-26T11:17:33.470 回答