@asisifs

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

Хочу, как бы это сейчас смешно не звучало, сделать бота, который по группевк будет отсылать мне записи со стены Дневника ру. Я его начал делать, потому что только у четырех людей в моей классе(11 класс) он грузит, и в том числе я, но всем пофиг и никто не хочет отсылась посты. Парсер я сделал, и он должен работать поидеи, но столкнулся с проблемой, что дневник ру - сайт с авторизацией. Прошу помогите ребят. Если можно, хотелось бы использовать только requests
Я предпринял множество попыток, но так и не понял как сделать, кто может, предоставьте кусок кода, который решит мою проблему
  • Вопрос задан
  • 200 просмотров
Решения вопроса 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)

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

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

Войти через центр авторизации
Похожие вопросы