Как составить этот https запрос так, что бы статус код был равен 200/302?

Мне нужно сделать удалённую авторизацию на этот сайт. Проблема в том, что там стоит 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 )

  • Вопрос задан
  • 266 просмотров
Пригласить эксперта
Ответы на вопрос 1
bonv
@bonv
  1. Из заголовков нужно убрать значение
    "Referer": "https://gotivochka.com.ua/",
    или скорректировать на
    "Referer": "https://online.gotivochka.com.ua/",

  2. В post отключить автоматический редирект, добавив параметр allow_redirects=False
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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