#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. Получите информацию о форме, найдите все входные данные, у которых есть имя, внутри формы. Возможно, вам не хватает некоторых важных входных данных.