使用Python requests modu登录时凭据无效

2024-03-29 02:12:04 发布

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

我试图通过Pythonrequests模块登录Spotify。似乎不管我提供的凭证是对是错,我总是得到一个无效凭证JSON错误。以下是我目前掌握的代码:

import requests
import time

s = requests.Session()

print(s.cookies.get_dict())
s.get("https://accounts.spotify.com/en/login/?_locale=en-US&continue=https:%2F%2Fwww.spotify.com%2Fus%2Faccount%2Foverview%2F")
print(s.cookies.get_dict())
print('\n')
csrftoken = s.cookies['csrf_token']
print('\n')
print(csrftoken)

req = s.post('https://accounts.spotify.com/api/login', data={'remember':'true', 'username':'VALIDUSERNAME', 'password':'VALIDPASSWORD', 'captcha_token': '', 'csrf_token':csrftoken}, headers={'Referer': 'https://accounts.spotify.com/en/login/?_locale=en-US&continue=https:%2F%2Fwww.spotify.com%2Fus%2Faccount%2Foverview%2F', 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:64.0) Gecko/20100101 Firefox/64.0'})

print(req.status_code)
print(req.text)

我总是得到这样的JSON响应:

^{pr2}$

我观察到,当将CSRF令牌更改为无效值时,我仍然得到{"error":"errorInvalidCredentials"}响应。然后我使用Burp-Suite的代理来更改令牌,得到了不同的响应,告诉我CSRF令牌无效。在

我还观察到captcha参数的值为空。当截取Burp中的请求时,参数的值没有设置为任何值,这就是为什么我将其留空的原因。在

我做错什么了?我知道我提供了有效的凭证并提供了正确的CSRF令牌。在


Tags: httpscomtokenjsongetloginreqcsrf
1条回答
网友
1楼 · 发布于 2024-03-29 02:12:04

在查看代码之后,我意识到我甚至没有在post请求中发送一个cookie,而是将CSRF令牌作为post请求参数发送。当我查看Burp Suite中截获的登录后请求时,我终于明白我做错了什么。在

Spotify实际登录页面的cookie头如下所示:

Cookie: sp_ab=%7B%222018_12_homepage_variants%22%3A%22v4%22%2C%222018_11_invisible_captcha%22%3A%22control%22%2C%222018_09_acq_signup_confirm_email%22%3A%22control%22%2C%222018_08_acq_signup_components_update%22%3A%22control%22%7D; sp_t=767144f8aa8b61378ccf958c670a6383; _ga=GA1.2.1942983958.1544578963; _gid=GA1.2.1472574661.1544578963; spot=%7B%22t%22%3A1544579600%2C%22m%22%3A%22us%22%2C%22p%22%3A%22open%22%7D; _gcl_au=1.1.1737135149.1544579416; __gads=ID=da7551ef6408e0e1:T=1544579604:S=ALNI_Mac1_7j2-834CH4t2FY65VEg9Pfcg; csrf_token=AQDFzF3zWOZKdg3w_agEStexYetTUTDpgFhvKXLmIaqTTP9ZDn84FctVC_ZER2m_O-4Obzt3w7fL-XKDBp_CdtNzIlUwD6iEffkWOK8ojTxHwTqzlWCoRcY2tYYO4wBSPJKKug; __bon=MHwwfDE4MDkxMzU2MjV8NzU5ODM2OTYyNTB8MXwxfDF8MQ==; fb_continue=https%3A%2F%2Fwww.spotify.com%2Fus%2Faccount%2Foverview%2F; remember=test; _gat=1

因此,我所要做的就是添加一个cookie头,复制并粘贴所有的静态cookie(对于每个会话总是相同的值),并使用变量(比如csrf令牌)集中一些动态cookie(每个会话的值不同)。在

相关问题 更多 >