Задать вопрос
@asisifs

Как сделать авторизацию на сайт при парсинге через requests?

Хочу, как бы это сейчас смешно не звучало, сделать бота, который по группевк будет отсылать мне записи со стены Дневника ру. Я его начал делать, потому что только у четырех людей в моей классе(11 класс) он грузит, и в том числе я, но всем пофиг и никто не хочет отсылась посты. Парсер я сделал, и он должен работать поидеи, но столкнулся с проблемой, что дневник ру - сайт с авторизацией. Прошу помогите ребят. Если можно, хотелось бы использовать только requests
Я предпринял множество попыток, но так и не понял как сделать, кто может, предоставьте кусок кода, который решит мою проблему
  • Вопрос задан
  • 211 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
На коленке состряпал, вроде работает:
import requests

url = "https://login.dnevnik.ru/login/esia/karelia"
#url на свой регион заменишь, там когда на сайте авторизуешься он отображается

login = 'логин'
password = 'пароль'
session = requests.Session()
get_cookies = session.get(url)
captcha_id = get_cookies.cookies['dnevnik_sst'].split('|')[0]
print(captcha_id)

data = {
	'exceededAttempts': False,
	'login': login,
	'password': password,
	'Captcha.Id': captcha_id
}

response = session.post(url, data)

Для всех операций используешь объект session, в нём будут сохранятся куки, и потом можно обращаться к страницам, как будто ты авторизованный, например так:
my_class_html = session.get('https://schools.dnevnik.ru/class.aspx')

schedule_html = session.get('https://schools.dnevnik.ru/homework.aspx')
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Realmixer
Full stack Python (Django) web-developer
Как правило, любой сайт при авторизации устанавливает в браузер куки. Браузер при каждом запросе сообщает эти куки на сайт, благодаря чему тот "понимает" какой пользователь совершил запрос. Соответственно тебе нужно передавать эти куки при каждом запросе так же как браузер. Вряд ли в Дневнике используется что-то хитрее.

Начать можно с того, что залогиниться на сайте и собрать все куки для домена сайта. В Хроме это делается так: F12 — Application — Storage — Cookies. Захадрдкодь найденные куки:
cookies = {
    '_ym_isad': '...',
    '_gid': '...',
    '_ym_uid': '...',
    '_ga': '...',
    '_ym_d': '...',
    '_gat': '...',
    '_gat_main': '...',
}
r = requests.get(url, cookies=cookies)

Если это сработает, тогда думай сценарием авторизации из своего скрипта.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
SpectrumData Екатеринбург
от 150 000 до 250 000 ₽
AST Москва
До 350 000 ₽
Wanted. Москва
До 250 000 ₽
14 янв. 2025, в 00:52
100 руб./за проект
14 янв. 2025, в 00:45
7000 руб./за проект
14 янв. 2025, в 00:39
30000 руб./за проект