Авторизация на сайтах
Я пытаюсь понять, как можно авторизоваться на сайте через POST запрос, и на каждом сайте у меня почему-то это не получается сделать. Например, вот эта форма https://www.cyberforum.ru/log-in.php. Я пробовал как передать только email, пароль и флажок, так и вообще все, что требовалось, однако мне все равно пишет, что я не могу войти.
Подскажите, пожалуйста, как можно авторизоваться на любом сайте? Что я делаю не так?
import requests
import fake_useragent
login_url = 'https://www.cyberforum.ru/posting.php?do=login'
data = {
'vb_login_username': 'email',
'vb_login_password': 'password',
'cookieuser': '1'
}
# получаем рандомный user-agent
user_agent = fake_useragent.UserAgent().random
headers = dict(user_agent=user_agent)
session = requests.Session()
session.headers.update(headers)
response = session.post(login_url, data=data)
print(response.text)
Ответы (1 шт):
Пример авторизации на JS (Увы не умею я в синтаксис питона)
//Модуль для запросов
const fetch = require('node-fetch');
//Модуль для работы с формами (POST запросов)
const FormData = require('form-data');
//Создаем форму
const form = new FormData();
//Добавляем поля
form.append('do', 'login');
form.append('url', '/log-in.php');
form.append('vb_login_md5password', 'пароль в мд5');
form.append('vb_login_md5password_utf', 'пароль в мд5 в utf кодировке');
form.append('s', '');
form.append('securitytoken', 'guest');
form.append('vb_login_username', 'ЕМАИЛ АККАУНТА');
form.append('vb_login_password', 'ПАРОЛЬ В ТЕКСТОВОМ ВИДЕ');
form.append('cookieuser', '1');
//Делаем запрос на авторизациию
fetch('https://www.cyberforum.ru/posting.php?do=login', { method: 'POST', body: form })
.then(res => res.text())
.then(text => console.log(text));
Результатом запроса будет получение html c редиректом и тегом
<meta http-equiv="Refresh" content="2; URL=https://www.cyberforum.ru/log-in.php?
s=MYTOKEN&" />
где MYTOKEN - токен авторизации, т.е эту ссылку надо спарсить из html и перейти получив куки которые она отдаст.
или же через Regexp извлечь из страницы
var SESSIONURL = "s=MYTOKEN&";
и так же сделать запрос https://www.cyberforum.ru/log-in.php и получить куки авторизации
Вот пример запроса с RegEXP и получением cookie:
//Делаем запрос на авторизацию
fetch('https://www.cyberforum.ru/posting.php?do=login', { method: 'POST', body: form })
.then(res => res.text())
.then(text => {
//Получаем содержимое URL meta тега, делаем по нему запрос и выводим полученные cookie
fetch(text.match(/URL=(.*)"/)[1], { method: 'GET'})
.then(res => res.headers.raw()['set-cookie'])
.then(cookie => {
console.log(cookie);
});
});
