Не удается получить файлы cookie при входе в систему с помощью скрипта Python

#session #cookies #python-requests #authorization

#сессия #файлы cookie #python-запросы #авторизация

Вопрос:

Скажите, пожалуйста, я не совсем понимаю, почему невозможно получить cookies при запросе через скрипт. После авторизации, теоретически, должны быть cookies, я думаю, можно было бы запомнить и отправить их в следующем запросе, чтобы авторизованный пользователь затем каждый раз переходил через скрипт на учетную запись и на другие закрытые (недоступные для неавторизованных пользователей) страницы. Файлы cookie принимаются через браузер, но не при запуске скрипта, имитирующего отправку данных из формы. Я получаю пустые файлы cookie: <RequestsCookieJar []>

 import requests
from fake_useragent import UserAgent
 
url = https://proza.ru/cgi-bin/login/intro.pl' # form data handler address
ua = UserAgent()
session = requests.Session()
responce = session.post(
        url, {
                'block': '',
                'username': 'somelogin',
                'password': 'somepassword',                
        },  headers = {
                'User-Agent': ua.chrome,                
        })
 
print(responce.cookies) # I get empty cookies: <RequestsCookieJar []>
print (responce.status_code) # 200
print (responce.headers)

#{'Server': 'QRATOR', 'Date': 'Fri, 21 Aug 2020 08:41:50 GMT', 'Content-Type': 'text/html; charset=windows-1251', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'Keep-Alive': 'timeout=15', 'Pragma': 'no-cache', 'Cache-Control': 'no-cache', 'X-Frame-Options': 'SAMEORIGIN'}

 
# Then I thought of doing something like this request for closed pages each time so that authorization would not be lost:

session.get('https://proza.ru/2018/03/07/…', cookies=responce.cookies)
  

Комментарии:

1. Я думаю, вам следует проверить, каков ответ, путем печати (и рендеринга) responce.text . Может быть, это какая-то ошибка? Пожалуйста, дайте нам знать, что произойдет.

2. @Mooncrater with open("account_success.html","w",encoding="utf-8") as f: f.write(responce.text) Если я выполняю эту строку, то возвращается полный действительный html-код страницы авторизации, но затем я снова захожу на другие страницы как неавторизованный пользователь.

3. Для страницы авторизации есть часть html-формы кода: <form method="POST" action="/cgi-bin/login/intro.pl" name="loginform"> <input type="hidden" name="block" value=""><input type="text" size="10" class="butt" style="width:100px" name="login" value=""><input type="password" size="10" class="butt" name="password" maxlength="15" style="width:100px">

4. Я не знаю почему, но сервер не возвращает заголовок «set-cookie» при запросе моего скрипта. Возможно, мой запрос не прошел авторизацию. Но почти всегда файлы cookie устанавливаются даже неавторизованными пользователями. Однако у меня нет файлов cookie.

5. Получите информацию о форме, найдите все входные данные, у которых есть имя, внутри формы. Возможно, вам не хватает некоторых важных входных данных.