Я написал следующее на 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')
Когда я проверяю, вошел ли я в систему, я ожидаю увидетьопределенная строка, которую я знаю, должна быть там, и в обязательном порядке она никогда не появляется.У меня есть несколько идей о том, в чем проблема:
Некоторые проблемы, связанные с файлами cookie.Правильно ли я переношу их, используя переменную session_requests
, или я допустил там какую-то ошибку?
Необходимо подождать, прежде чем пытаться получить доступ к следующей странице.Есть ли необходимость ждать между вызовом .post
и доступом к другому URL
, или это должно работать как есть?Я не знаю, сколько времени потребуется перезагрузить страницу.
- Токен аутентификации.Может ли быть проблема в получении этого токена?Я полагаю, что получаю тот, который мне нужен, с этим
lxml
кодом, но, возможно, это тоже неверно.
Любая помощь или направление по этому вопросу было бы действительно здорово.Спасибо.