Python 如何认证HumbleBundle
我想写一个程序来自动下载我购买的简陋捆绑包,但我很难登录到这个网站。我认为这应该是一个非常简单的过程:Python 如何认证HumbleBundle,python,python-requests,Python,Python Requests,我想写一个程序来自动下载我购买的简陋捆绑包,但我很难登录到这个网站。我认为这应该是一个非常简单的过程: import requests LOGIN_URL = "https://www.humblebundle.com/processlogin" data = { "username": "username", "password": "top_secret", } session = requests.Session() session.params.update({"a
import requests
LOGIN_URL = "https://www.humblebundle.com/processlogin"
data = {
"username": "username",
"password": "top_secret",
}
session = requests.Session()
session.params.update({"ajax": "true"})
response = session.post(LOGIN_URL, data=data)
json = response.json()
print(json)
但我得到了一个毫无帮助的失败信息
{'errors': {'_all': ['Invalid request.']}, 'success': False}
我做错了什么?我不认为它会让你这么做。如果我不得不猜测,您将不得不使用OAuth。Humble Bundle使用验证码来确保只有人类登录。似乎只有登录的用户才能检索他们购买的信息,但我还没有找到另一种方式来验证自己 根据设计,验证码不允许脚本登录。我的最佳建议是使用常规webbrowser登录,并在本地存储名为“\u simpleauth\u sess”的cookie的值。您可以使用它来检索数据,就像您已登录一样 以下是OP使用的请求库示例:
cookies = dict(_simpleauth_sess='easAFa9afas.......32|32u8')
url = 'https://www.humblebundle.com/api/v1/user/order'
r = requests.get(url, cookies=cookies)
print(r.text)
或者更复杂一点:
session = requests.Session()
session.cookies.set('_simpleauth_sess', 'easAFa9afas.......32|32u8',
domain='humblebundle.com', path='/')
r = session.get('https://www.humblebundle.com/api/v1/user/order')
for order_id in [v['gamekey'] for v in r.json()]:
url = 'https://www.humblebundle.com/api/v1/order/{}?wallet_data=true&all_tpkds=true'.format(order_id)
r = session.get(url)
...