Авторизация на сайте средствами Python

orlov1

Новичок
Пользователь
Июн 23, 2021
52
2
8
Всем привет!

Необходимо реализовать код, который авторизуется на сайте и парсит имя пользователя.
Набросал вот такой код, но все оказалось не так просто.

Python:
import requests
import time
from bs4 import BeautifulSoup
 
url = 'https://identity.api.navigraph.com/login?signin=cf01f056a8f731c54ada85d720158931'
url_next = 'https://navigraph.com/account?refresh=true'
url_out = 'https://store.x-plane.org/logout.asp'
 
signin = '8dc45d4b0c100a8e97e868351319210e'
login = 'stepanovatai@yandex.ru'
password = 'Qwerty7890'
 
proxy = {'http':'http://' + '183.233.169.226:9091'}
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36'}
 
s = requests.Session()
req = s.post(url, data={'signin' : signin, 'idsrv.xsrf' : idsrv, 'username': login, 'password': password}, headers=headers)
 
get_next = s.get(url_next, headers=headers)
 
soup = BeautifulSoup(get_next.text, "html.parser")
name = soup.find('h1')
print(name.text)

Поковырявшись в коде страниц было решено, что через реквестс проблематично будет, только форма авторизации грузится через 2 запроса, сначала нужен get identity.api.navigraph.com/connect/authorize, в нем возвращается signin, затем get identity.api.navigraph.com/login, здесь получаем idsrv.xsrf, только потом уже post identity.api.navigraph.com/login

Ок, решено было делать через Selenium, но тут тоже возникли вопросы.
Как с главной страницы, средствами Selenium, перейти на страницу авторизации https://identity.api.navigraph.com/login?signin=76424a6a163a3257a437796a882821f9
Как кликнуть на баттон Sign in на главной странице ? Через findelement найти не удалось.


Python:
button = driver.find_element(By.XPATH, '//*[@id="consent"]/div/div/a[2]')
button.send_keys(Keys.ENTER)

Итого: как реализовать авторизацию на этом сайте ?
 

4olshoy_blen

Популярный
Пользователь
Ноя 13, 2022
419
113
43
Как кликнуть на баттон Sign in на главной странице ? Через findelement найти не удалось.
Всё нормально кликается, при заходе на сайт выскакивает окошко с принятием куков, жмем её, а затем легко кликаем на Sign in
Python:
from selenium.webdriver import Chrome
from selenium.webdriver.common.by import By
import time

chrome = Chrome()
chrome.get('https://navigraph.com/')
time.sleep(1)
# Кнопка с принятием куков
chrome.find_element(By.CLASS_NAME, 'buttons').find_elements(By.CLASS_NAME, 'btn')[1].click()
time.sleep(1)

# Кнопка с логином
chrome.find_element(By.CLASS_NAME, 'login').click()
 

Форум IT Специалистов