О, как раз недавно этим занимался.
Рассмотрим код формы на сайте dobro.ru (который вы используете)
Вот он:
<form action="https://dobro.ru/login?d=1" method="post">
<input type="hidden" name="_csrf_token" value="avtoskx3IEw4OpCPeHN5g94SceriuwMB4AgyeLLR9h8"/>
<div class="row mb-3 mb-md-4">
<div class="col-12">
<div class="form__group">
<input type="email" value="" name="email"
placeholder=" " required class="form__input form__input_text"/>
<span class="form__input_label">Электронная почта</span>
</div>
</div>
</div>
<div class="row mb-3">
<div class="col-12">
<div class="form__group">
<input type="password" name="password"
placeholder=" " required class="form__input form__input_text"/>
<span class="form__input_label">Пароль</span>
</div>
</div>
</div>
<div class="row mb-3 mb-md-5">
<div class="col-6 text-left">
<div class="custom-control custom-checkbox">
<input type="checkbox" name="_remember_me" id="_remember_me"
class="form__input_checkbox custom-control-input"/>
<label class="custom-control-label required"
for="_remember_me">
Запомнить меня
</label>
</div>
</div>
<div class="col-6 text-right">
<a href="/password/reset/request">Забыли пароль?</a>
</div>
</div>
<div class="row mb-3">
<div class="col-12">
<button type="submit" class="button button--pink button--height-48 js-login-form-submit"
style="border-radius: 4px;">Войти
</button>
</div>
</div>
<div class="row mb-4 mb-md-5">
<div class="col-12 text-center">
<p class="d-inline-block ml-4">Нет аккаунта? </p>
<a
href="/register"
onclick="ym(58966471,'reachGoal','clickregister')" >Зарегистрируйтесь</a>
</div>
</div>
</form>
все строки вида
<input type="password" name="password"
Это то, что надо передать сайту для входа
Вы не передаете 2 вещи - checkbox и token
и если у checkbox вы знаете значение по умолчанию, то токен каждый раз будет меняться и вам надо каждый раз парсить его перед входом. В свое время я писал функцию для получения data
def get_data(html, link):
"""
Поиск формы с указанной ссылкой post
"""
# Если html просто текст, превращаем его в объект BeautifulSoup
if str(type(html)) != "<class 'bs4.BeautifulSoup'>":
html = bs(html, 'lxml')
# Собираем и возвращаем словарь
return dict((i.get('name'), i.get('value')) for i in html.find('form', action=link).find_all('input'))
Как использовать:
html = r.get("https://dobro.ru/login?d=1", headers=headers)
data = get_data(html. "https://dobro.ru/login?d=1")
# Второй параметр это ссылка указанная тут: <form action="https://dobro.ru/login?d=1" method="post">
data['login'] = login
data['password'] = password
# Ваши логин и пароль
r = s.post('https://dobro.ru/login?d=1', data = data, headers = {'User-Agent' : ua})
Естественно я показал не весь код, а ту часть где получаем data
Если у вас что - то не получится, напишите - помогу