22
Июл
2021

Не могу авторизоваться на сайте, requests

Выполняю заказ, и нужно через скрипт авторизоваться на сайте (только requests, без Selenium!) но каким бы я образом не пытался - не удается авторизоваться. В ответе приходит

{'Message': 'Помилка авторизації: Логін або пароль зазначений невірно', 'Status': 'Error', 'ErrorCode': 2}, хотя пароль верный, и через сайт удается авторизоваться, либо иногда получаю:

Сессия была закрыта или неактивна.

Если открыть Network в браузере, и посмотреть на данные, которые отправляются POST запросом, то можно увидеть, что там почему-то передается не пароль, а значение из 32 символов, как я понимаю это session_id, но если и его передавать, то тоже не авторизуется. Когда нужно передать реальный пароль для POST-запроса? В инспекторе нигде нет и слова о передаче моего реального пароля (он состоит только из 6 или 8 цифр). введите сюда описание изображения

Как я понимаю - нужно сделать 1 POST-запрос, чтобы получить sesion_id, а потом второй - чтобы авторизоваться. Вот такие данные нужно передать для того, чтобы получить session_id, как я понимаю:

введите сюда описание изображения

Код:

import requests

user_agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36'

session = requests.Session()
session.headers.update({'User-Agent': user_agent})


url = "https://mygreenway.co.ua/s/l/"
session.headers.update({'Referer': url})


auth = {
    "type": "auth",
    "action": "sessionkey"
}

ses = session.post(url, data=auth)
key = ses.json()['Key']
print(key)

data = {
    "type": "auth",
    "action": "login",
    "REMEMBER": "0",
    "NAME": "1234567",
    "PASSWORD": key
}

ses2 = session.post('https://mygreenway.co.ua/s/l/', data=data)
print(ses2.text)
with open("result.html", "w", encoding="utf-8") as f:
    f.write(ses2.text)
session.close()

UPD. Копнул чуть глубже, посмотрел как реализован запрос через JavaScript. Там передается пароль с учетом MD5-хэша, но даже если и создавать подобный хэш - все равно не удается авторизоваться. Возможно я неправильно собираю этот хэш. Буду пробовать

req = {method:'post', dataType:'json', data:{type:'auth', action:'login', REMEMBER:($('#remembermeModal').prop('checked')==true?1:0), NAME:$('#nameModal').val(), PASSWORD:(MD5(key+MD5($('#passwordModal').val())))}};

Источник: https://ru.stackoverflow.com/questions/1307783/%D0%9D%D0%B5-%D0%BC%D0%BE%D0%B3%D1%83-%D0%B0%D0%B2%D1%82%D0%BE%D1%80%D0%B8%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D1%8C%D1%81%D1%8F-%D0%BD%D0%B0-%D1%81%D0%B0%D0%B9%D1%82%D0%B5-requests

Тебе может это понравится...

Добавить комментарий