@sddvxd

Как осуществить логин на сайте?

Добрый вечер

Практиковался с входом на форумы, потом наткнулся на сайт с защитой (токен), защиту вроде обхожу, но логин все-равно не осуществляется:

import requests
from bs4 import BeautifulSoup

url = "http://example.com"
loginurl = "https://example.com/users/sign_in"

headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:51.0)Gecko/20100101 Firefox/51.0',
                 "Host":"example.com"}

s = requests.Session()
responsePageWithAuth = s.get(loginurl, headers = headers) #получаю страницу users/sign_in для извлечения токена
#сам процесс получения не покажу, стыдно просто :) (предвижу кучу людей с наставлениями по правильному коду)


data = {"authenticity_token" : token,
        "email" : "name%40domen.ru",
        "password":"12345",}

response = s.post(loginurl, data=data, headers=headers) #ответ с результатом авторизации
soup = BeautifulSoup(response.content, "html.parser") #читаемый вид

print(soup.contents)


Получаю страницу с ошибкой входа. Когда заходил с браузера, в заголовках были куки, может они как-то связаны с логином?
  • Вопрос задан
  • 428 просмотров
Решения вопроса 1
@nirvimel
куки, может они как-то связаны с логином?

А то!

Смотрите что отправляет браузер в момент логина включая все заголовки, все куки, все тело POST и все параметры в нем (не что он должен отправлять исходя из структуры формы, а что в этот момент на самом деле отправляют скрипты) и сравнивайте с тем, что отправляет ваш парсер.
Бывает, проще прочесть скрипты, понять их логику и переписать на питон. Бывает наоборот, обфусцированный скрипт на несколько тысяч строк, тогда проще анализировать сетевую активность в момент совершения действия (логина, например), пробовать разные варианты ввода, наблюдать как зависит передаваемое от введенного, выявлять закономерности и имитировать подобный алгоритм на питоне.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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