@Quirel

Где взять csrf token для lk.megafon.ru?

Хочу пройти авторизацию на lk.megafon.ru. В браузере посмотрел данные из post запроса при прохождении авторизации.
Адрес запроса: https://lk.megafon.ru/dologin/
CSRF: длинный набор знаков
j_username: тут все понятно
j_password: тут тоже
Собственно где взять значение CSRF? На stackoverflow.com в похожем вопросе написали, что его нужно вытащить из cookies. Там для этого использовали такой код:
s.get(url)    # to get cookies
csrf = s.cookies['csrf']

Ну если я делаю тоже самое (для url использовал: https://lk.megafon.ru/dologin/), и смотрю
print(dict(s.cookies))
Вижу словарь в котором только одна пара ключ-значение - JSESSIONID: много знаков
  • Вопрос задан
  • 1018 просмотров
Решения вопроса 2
mututunus
@mututunus
Backend developer (Python, Golang)
Там есть глобальная переменная CSRF_PARAM.
Ответ написан
leahch
@leahch
3D специалист. Dолго, Dорого, Dерьмово.
Так ведь все просто!
Фома состоит из трех полей
CSRF - тип hidden, в значении value как раз и лежит то, что вам нужно.
j_username: тут все понятно
j_password: тут тоже

Нужно:
1) запросить страницу /dologin/ (запрашивать страницу нужно каждый раз при новом логине)
2) отпарсить html и выбрать значение value из
3) Отсылаем все ТРИ поля (CSRF, j_username, j_password) на /dologin методом post.
4) Получаем ответ и смотрим на куки и прочую фигню..

Отпарсить
from HTMLParser import HTMLParser
import urllib2
req =  urllib2.urlopen("https://lk.megafon.ru/dologin/")
data = req.read()
class MyHTMLParser(HTMLParser):
	def handle_starttag(self, tag, attrs):
		attr = dict(attrs)
		if tag == "input" and attr.get('name', "") == "CSRF":
			print "Encountered a start tag:", tag, attr["name"], attr["value"]

parser = MyHTMLParser()
parser.feed(data)

Encountered a start tag: input CSRF 2c8b2246-6e99-4469-924f-2c8086cd2dae
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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