@Torsionov

Как авторизоваться на сайте ycharts.com через Python?

Подскажите, пожалуйста, как правильно авторизоваться на таком сайте?
Пробовал несколько вариантов, на выходе в BeautifulSoup видна все та же страница авторизации:

url = 'https://ycharts.com/login'
login = "login"
password = "password"

session = requests.Session()
auth = HTTPBasicAuth(login, password)
data = {"username":login,"password":password}
r = session.post(url=url, json=data)


s = requests.Session()
r = s.get(url, auth=(login, password))


user_agent_val = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.69 YaBrowser/20.8.0.335 (beta) Yowser/2.5 Safari/537.36'

session = requests.Session()
session.auth = (login, password)

session.get(url, headers = {
    'User-Agent': user_agent_val
})

session.headers.update({'Referer':url})
session.headers.update({'User-Agent':user_agent_val})
_xsrf = session.cookies.get('_xsrf', domain="ycharts.com")

session.post(url, {'username': login, 'password': password,
                     '_xsrf':_xsrf,
                     'remember':'yes'})
r = session.get(url)
  • Вопрос задан
  • 151 просмотр
Решения вопроса 1
hottabxp
@hottabxp Куратор тега Python
Сначала мы жили бедно, а потом нас обокрали..
Я бы сделал так - авторизовался через selenium, скопировал cookies и пользовался далее request'ом и BS4. Так как при авторизации передается некий "csrfmiddlewaretoken". Я хз как его разгадать. На странице авторизации он есть, но значение не подходит, значит он как-то меняется или шифруется с "солью".
Если авторизоваться браузером, и скопировать в скрипт из него параметр "csrfmiddlewaretoken" и cookies с именем "csrftoken" и подставив свои данные для авторизации, то авторизоваться можно.
import requests

cookies = { 'csrftoken': 'ЦиферкиБуковки'}

headers = {	'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36',
    		'Referer': 'https://ycharts.com/login?next=/dashboard/',
}

data = {
  'csrfmiddlewaretoken': 'ЦиферкиБуковки',
  'username': 'Почта',
  'password': 'Пароль'
}

response = requests.post('https://ycharts.com/login', headers=headers, cookies=cookies, data=data)

print(response.text)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы