簡體   English   中英

使用 Python 請求模塊登錄時憑據無效

[英]Invalid credentials when logging in with Python requests module

我正在嘗試通過 Python requests模塊登錄 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 響應:

{"error":"errorInvalidCredentials"}

我觀察到,當將 CSRF 令牌更改為無效值時,我仍然收到{"error":"errorInvalidCredentials"}響應。 然后我使用 Burp Suite 的代理來更改令牌,我得到了不同的響應,告訴我 CSRF 令牌無效。

我還觀察到驗證碼參數的值是空的。 在 Burp 中攔截請求時,參數的值未設置為任何值,這就是我將其留空的原因。

我究竟做錯了什么? 我知道我正在提供有效憑據並提供正確的 CSRF 令牌。

查看我的代碼后,我意識到我什至沒有隨 post 請求發送一個 cookie,我只是將 CSRF 令牌作為 POST 請求參數發送。 當我在 Burp Suite 中查看攔截到的 POST 登錄請求時,我終於明白我哪里做錯了。

來自實際 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(每個會話的值始終相同的那些)並連接幾個動態的(每個會話都不同的那些)會話)帶有變量的 cookie,例如 csrf 令牌。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM