Неверные учетные данные при входе в систему с помощью модуля запросов Python - PullRequest
0 голосов
/ 13 декабря 2018

Я пытаюсь войти в Spotify через модуль Python requests.Кажется, что независимо от того, правильные данные я предоставляю или нет, я всегда получаю неверную ошибку 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.

1 Ответ

0 голосов
/ 14 декабря 2018

Посмотрев на мой код, я понял, что даже не отправлял ни одного куки-файла вместе с пост-запросом, я лишь отправлял токен CSRF в качестве параметра запроса POST.Когда я посмотрел на перехваченный запрос входа в систему POST в Burp Suite, я наконец понял, что я делаю неправильно.

Заголовок файла cookie со страницы входа в Spotify был примерно таким:

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, скопироватьи вставьте все статические куки-файлы (те, которые всегда будут иметь одно и то же значение для каждого сеанса) и объедините пару динамических (те, которые отличаются для каждого сеанса) куки-файлов с переменными, такими как токен csrf.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...