Выкладываю свое решение, на чистый код не претендую, но как костыль или помощь в осознании подойдет.
url_login = 'http://mysite.com/login'
url_main = 'http://mysite.com/'
client = requests.session()
html = client.get(url_login)
cookies = html.cookies.get_dict()
soup = BeautifulSoup(html.text, 'lxml')
login_csrf = soup.find('input', dict(name='_csrf'))['value']
payload = {
'LoginForm[username]': '******',
'LoginForm[password]': '******',
'LoginForm[rememberMe]': 1,
'_csrf': login_csrf
}
headers = {
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Encoding': 'gzip, deflate',
'Accept-Language': 'ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Safari/537.36',
'Referer': url_main,
'Connection': 'keep-alive',
}
r = requests.post(url_login, cookies=cookies, data=payload, headers=headers)
print(r.status_code)
print(r.url)