Войдите на сайт с именем пользователя и паролем в сеансе запросов - PullRequest
0 голосов
/ 16 марта 2019

Я написал следующее на Python для входа на конкретный сайт, но пока не смог этого сделать.Каждый раз, когда я ввожу правильные учетные данные, кажется, что вход в систему не произошел.

Мой код работает следующим образом:

import requests
from lxml import html
from bs4 import BeautifulSoup

USERNAME = "abe"
PASSWORD = input("password: ")
LOGIN_URL = <login_page_url>
URL = <page_available_after_logging_in>
AUTH_TOKEN_NAME = 'authenticity_token'

session_requests = requests.session()

# Get authenticity token
result = session_requests.get(LOGIN_URL)
tree = html.fromstring(result.text)
authenticity_token = list(set(tree.xpath("//input[@name=AUTH_TOKEN_NAME]/@value")))[0]

# Create payload
payload = {
    "name": USERNAME, 
    "user_pin": PASSWORD, 
    "authenticity_token": authenticity_token
}

# Perform login
result = session_requests.post(LOGIN_URL, data=payload, headers=dict(referer=LOGIN_URL))

# Check if logged in:
r2 = session_requests.get(URL)
soup = BeautifulSoup(r2.content, 'html.parser')
logged_in = soup.find_all('span', string='A string that exists if logged in')
if logged_in:
    print('logged in successfully')
else:
    print('login failed')

Когда я проверяю, вошел ли я в систему, я ожидаю увидетьопределенная строка, которую я знаю, должна быть там, и в обязательном порядке она никогда не появляется.У меня есть несколько идей о том, в чем проблема:

  1. Некоторые проблемы, связанные с файлами cookie.Правильно ли я переношу их, используя переменную session_requests, или я допустил там какую-то ошибку?

  2. Необходимо подождать, прежде чем пытаться получить доступ к следующей странице.Есть ли необходимость ждать между вызовом .post и доступом к другому URL, или это должно работать как есть?Я не знаю, сколько времени потребуется перезагрузить страницу.

  3. Токен аутентификации.Может ли быть проблема в получении этого токена?Я полагаю, что получаю тот, который мне нужен, с этим lxml кодом, но, возможно, это тоже неверно.

Любая помощь или направление по этому вопросу было бы действительно здорово.Спасибо.

...