@Skillz01

Обход хеша на сайте во время авторизации на python?

Пытаюсь настроить автоматическую авторизацию на сайт(python модуль requests). Пробовал на разных сайтах, на сайте md.samdu.uz/login/index.php в методе POST на самом сайте выходят кроме anchor:, username: и password: есть значение logintoken: после того как вбиваю пароль и пытаюсь авторизоваться logintoken выдает каждый раз новое значение (видимо хеш) и не знаю как его предугадать или разхешировать, читал много статей, но толком ответа точного нет... Подскажите пожалуйста как обойти или решить проблему с шифровкой.

Предложили решение: Автор: Dr. Bacon @bacon
Общий вид такой, но у разных сайтов могут быть свои нюансы:
1. начать сессию, если это requests, либо другими способами сохранять куки запроса
2. сделать GET запрос, в которым получите logintoken, он может быть в куках, в html коде
3. вот теперь сделать POST с полученным logintoken и нужными данными, главное в рамках этой сессии.

Программа выдает страницу авторизации...
import requests


url = 'http://md.samdu.uz/login/index.php'
headers = {
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
    'Accept-Encoding': 'gzip, deflate',
    'Accept-Language': 'ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7',
    'Cache-Control': 'max-age=0',
    'Content-Length': '113',
    'Content-Type': 'application/x-www-form-urlencoded',
    'Cookie': 'MoodleSession=14pa1tlcrcbipjdke9u4lh88fl',
    'Host': 'md.samdu.uz',
    'Origin': 'http://md.samdu.uz',
    'Proxy-Connection': 'keep-alive',
    'Referer': 'http://md.samdu.uz/login/index.php',
    'Upgrade-Insecure-Requests': '1',
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.92 Safari/537.36'
}

s = requests.Session()
token = s.get(url).text.split()
index = token.index('name="logintoken"') 
print(token[index+1])
logintoken = token[index + 1][7:-2]
print(logintoken)
datas = {
    'anchor': '',
    'logintoken': logintoken,
    'username': 'Amaliy2685',
    'password': 'Aml-2683'}


r = s.post(url, data=datas, headers=headers)
print(r.text)
  • Вопрос задан
  • 508 просмотров
Пригласить эксперта
Ответы на вопрос 2
dimonchik2013
@dimonchik2013
non progredi est regredi
братан че за куда логин что ты прешь на md.samdu.uz/login/index.php
когда все варианты лоина ведут на md.samdu.uz/lib/ajax/service.php ?
Ответ написан
Возможна еще проверка со стороны сервера: поддерживает ли клиент кэширование, например, картинок. Request не поддерживает. Помочь может silenium.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы