@nikgavrilovich
front-end developer

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

Доброго всем. Подскажите словами, кодом или ссылками как реализовать авторизацию на сайте и дальнейший парсинг страниц на python.
Имеется: логин, пароль, через BeautifulSoup вытягиваю scrf токен
Отдаю это все с помощью request методом пост
Токены проверял через дебагер - идентичные
Получаю 400 невозможно проверить данные.
Подскажите в чем может быть проблема
  • Вопрос задан
  • 6429 просмотров
Решения вопроса 1
@nikgavrilovich Автор вопроса
front-end developer
Выкладываю свое решение, на чистый код не претендую, но как костыль или помощь в осознании подойдет.
url_login = 'http://mysite.com/login'
url_main = 'http://mysite.com/'

client = requests.session()
html = client.get(url_login)
cookies = html.cookies.get_dict()
soup = BeautifulSoup(html.text, 'lxml')

login_csrf = soup.find('input', dict(name='_csrf'))['value']

payload = {
    'LoginForm[username]': '******',
    'LoginForm[password]': '******',
    'LoginForm[rememberMe]': 1,
    '_csrf': login_csrf
}

headers = {
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
    'Accept-Encoding': 'gzip, deflate',
    'Accept-Language': 'ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)  Safari/537.36',
    'Referer': url_main,
    'Connection': 'keep-alive',
}

r = requests.post(url_login, cookies=cookies, data=payload, headers=headers)

print(r.status_code)
print(r.url)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@spikejke
import requests
session  = requests.Session()
authorization = session.post('mysite/login', data = {'login':'admin','password':'secret'})


mysite/login - Твой адрес для для авторизации
login , password - формы ввода
Ответ написан
Ваш ответ на вопрос

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

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