Уже месяц ломаю голову над авторизацией на одном ресурсе, не пойму почему у меня не получается.
Итак, я пробовал делать это с помощью Реквеста, но не особо получается, вроде все делаю правильно,
и данные какие нужно отправляю, но все безуспешно. Единственное как у меня получилось пройти авторизацию так это с помощью selenium webdriver, но в нем мне ,пока, еще сложнее разобраться, так что хотелось бы использовать реквестс, да и скорость с ним выше.
Скажу сразу, обковырял весь гугл, смотрел кучу видео, прочитал Web Scraping with Python изд. O'reilly, Но, она не особо мне помогла в этом вопросе.
Возможно, есть совет по какой нибудь литературе, которая придется к месту.
Вот код:
import requests from bs4 import BeautifulSoup as soup # from pathlib import Path GB = 'https://geekbrains.ru' LOGIN_URL = 'https://geekbrains.ru/login' CPT = 'https://geekbrains.ru/wanna_captcha' with requests.Session() as session: r = session.get(GB) print(f'Code for {GB} is :', r.status_code) soup = soup(r.text, 'lxml') token = soup.select_one('[name="authenticity_token"]')['value'] #str class user_agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36' r = session.post(CPT, data = {'user[email]': 'mail', 'user[password]': 'pass', 'authenticity_token' : token, 'utf8': 'true', 'user[remember_me]': '0', 'user-agent': user_agent}) cpt = session.get(CPT) log_url = session.get(LOGIN_URL) print(f'Code for {CPT} is :', cpt.status_code) print(f'Code for {LOGIN_URL} is :', log_url.status_code)
Все видео, так или иначе, похожи на мой скрипт, но проблема в том, что у авторов выходит, а у меня - нет!
После логина есть промежуточная страница /wanna_captcha, код ответа которой 302. В form data там содержатся пароль, логин, utf8: ✓, запомнить меня и authenticity_token. Как я понимаю, это те данные что она пересылает на целевую страницу… Через скрипт код ответа с этой страницы 404.
Короче, подскажите пожалуйста.
Code for https//ресурс is : 200
Code for https//ресурс/wanna_captcha is : 404
Code for https//ресурс/login is : 200
