Reddit API和投票。不接受modhash/cookie。错误。需要用户

2024-06-07 19:23:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图让投票API工作,但我得到了错误。错误。需要用户. 不知道为什么,但我想我一定是发送modhash或会话cookie的方式不对,因为登录很正常

我的代码如下所示:

UP = {'user': username, 'passwd': password, 'api_type': 'json',}

client = requests.session()

r = client.post('http://www.reddit.com/api/login', data=UP)

j = json.loads(r.text)

mymodhash = j['json']['data']['modhash']

url = 'http://www.reddit.com/api/vote/.json'
postdata = {'id': thing, 'dir': newdir, 'uh': mymodhash}
vote = client.post(url, data=json.dumps(newdata))

错误:

^{pr2}$

Tags: comclientapijsonhttpurldatawww
2条回答

要登录,您应该发布到ssl.reddit.com,这样您就不会以纯文本形式发布您的凭证。另外,您应该设置一个用户代理。在

下面是一个对您的/r/redditdev提交进行投票的工作示例。在

import requests
# Login                                                                                                
client = requests.session(headers={'User-Agent': 'Requests test'})
data = {'user': 'USERNAME', 'passwd': 'PASSWORD', 'api_type': 'json'}
r = client.post('https://ssl.reddit.com/api/login', data=data)
modhash = r.json['json']['data']['modhash']

# Vote                                                                                                 
data = {'id': 't3_11mr32', 'dir': '1', 'uh': modhash, 'api_type': 'json'}
r = client.post('http://www.reddit.com/api/vote', data=data)
print r.status_code  # Should be 200                                                                   
print r.json  # Should be {}

另外,除非您真的对reddit的API在幕后的工作方式感兴趣,否则我建议您使用PRAW。在

可以将session对象与with语句一起使用。在

import requests

UP = {'user': username, 'passwd': password, 'api_type': 'json'}
url_prefix = "http://www.reddit.com"
with requests.session() as client:
    client.post(url_prefix + '/login', data=UP)

    <...something else what you want...>

相关问题 更多 >

    热门问题