Мне нужно сделать удалённую авторизацию на
этот сайт. Проблема в том, что там стоит CSRF защита, и приходится отправлять токен. Так же нужно отправлять дополнительный токен, который отправляется сервером в поле input с атррибутом hidden. До того как я понял где взять этот дополнительный токен, я отправлял запрос с тем, что мне выдавали в браузере. Мне сервер возвращал 500 ошибку ( насколько я знаю, ошибку сервера ). После же того, как я добавил получение доп. токена, у меня вылезает ошибка валидности SSL сертификата. Мне нужна помощь в составлении запроса, который вернёт мне 302 ошибку( Ошибка, на этом сайте, появляется когда логин и/или пароль не прошли валидность ).
Код решения может быть не на python. Главное объясните мне в чём ошибка и предложите решение.
UPD1 Сложность вопроса не смог определить нормально
UPD2 Решение с изменить verify на False, или скачать сертификат с их сайта и добавлять его локально как путь в verify я уже пробовал. Какие ещё есть способы решить проблему с сертификацией?
UPD3 Исправил ошибку в написании вопроса. Ошибка которая мне нужна 302-я, не 305-я.
Код программы для запроса:
import requests
def getCookiesFromJar( jar ):
jar = jar.get_dict()
cookies = ""
for cookieKey in jar:
cookies += cookieKey + "=" + jar[ cookieKey ] + "; "
cookies = cookies[ :-1 ]
return cookies
def getToken( content ):
content = str( content )
exampleToken = "oUosXGOoBItMnvdN1HyOkp0Jfo2CziqULhaxHlR8"
magicNum = content.find( "<input name=\"_token\" type=\"hidden\" value=\"" )
token = content[ magicNum + 42 : magicNum + 42 + len( exampleToken ) ]
return token
headers = {
"Host": "online.gotivochka.com.ua",
"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:57.0) Gecko/20100101 Firefox/57.0",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"Accept-Language": "ru",
"Accept-Encoding": "gzip, deflate, br",
"Referer": "https://gotivochka.com.ua/",
"Content-Type": "application/x-www-form-urlencoded",
"Connection": "keep-alive",
"Upgrade-Insecure-Requests": "1"
}
# Создаю сессию
s = requests.Session()
# Добавляю туда заголовки
s.headers.update( headers )
# Отправляю первый запрос ( GET ) для того что бы получить Cookies и доп. токен
r1 = s.get( "https://online.gotivochka.com.ua/" )
# Нахожу в html коде токен
token = getToken( r1.content )
# В заголовки добавляю cookies с первого запроса
headers[ "Cookie" ] = getCookiesFromJar( s.cookies )
# Данные для входа ( Случайные, кроме токена )
data = {
"_token": token,
"login": "+380+(32)+523-52-35",
"password": "3rwebtwebtwbtwe"
}
# Обновляю заголовки в сессии
s.headers.update( headers )
# Отправляю второй ( POST ) запрос на авторизацию
# Здесь же образовывается ошибка валидации SSL
r2 = s.post( "https://online.gotivochka.com.ua/login", data=data )
# Вывод информации на ваш вкус
#print( headers[ "Cookie" ] )
#print( s.cookies )
#print( s.headers )
#print( r2.text )
#print( r2.cookies )
print( r2.status_code )