#python #json #python-3.x #api #request
Вопрос:
Я пытаюсь создать данные JSON, чтобы я мог искать доступную аренду лагеря, и, похоже, единственным способом является запрос с заголовком, в противном случае я получаю сообщение Not Authorize при простом использовании URL. К сожалению, мне также не повезло, так как я продолжаю получать сообщение об истечении срока действия сеанса. Я не веб-разработчик, поэтому не уверен, в чем причина. Любая помощь была бы очень признательна. Спасибо
import time
import sys
import requests
url = "https://reservations.piratecoveresort.com/irmdata/api/irm?sessionID=_rdpirm01amp;arrival=2021-10-26amp;departure=2021-10-28amp;people1=1amp;people2=0amp;people3=0amp;people4=0amp;promocode=amp;groupnum=amp;rateplan=RACKamp;changeResNum=amp;roomtype=amp;roomnum=amp;propertycode=amp;locationcode=amp;preferences=amp;preferences=amp;preferences=amp;preferences=amp;preferences=WTFamp;preferences=amp;preferences=amp;preferences=amp;preferences=amp;preferences=amp;preferences=amp;preferences=amp;preferences=amp;preferences=amp;preferences=amp;preferences=amp;preferences=amp;preferences=amp;preferences=amp;preferences=amp;masterType=amp;page=amp;start=0amp;limit=12amp;multiRoom=false"
payload={}
headers = {
'authority': 'reservations.piratecoveresort.com',
'method': 'GET',
'path': '/irmdata/api/irm?sessionID=_rdpirm01amp;arrival=2021-10-26amp;departure=2021-10-28amp;people1=1amp;people2=0amp;people3=0amp;people4=0amp;promocode=amp;groupnum=amp;rateplan=RACKamp;changeResNum=amp;roomtype=amp;roomnum=amp;propertycode=amp;locationcode=amp;preferences=amp;preferences=amp;preferences=amp;preferences=amp;preferences=WTFamp;preferences=amp;preferences=amp;preferences=amp;preferences=amp;preferences=amp;preferences=amp;preferences=amp;preferences=amp;preferences=amp;preferences=amp;preferences=amp;preferences=amp;preferences=amp;preferences=amp;preferences=amp;masterType=amp;page=amp;start=0amp;limit=12amp;multiRoom=false',
'scheme': 'https',
'accept': 'application/json, text/plain, */*',
'accept-encoding': 'gzip, deflate, br',
'accept-language': 'en-US,en;q=0.9',
'authentication': '',
'content-type': 'application/json; charset=utf-8',
'cookie': 'rdpirm01=',
'dnt': '0',
'referer': 'https://reservations.piratecoveresort.com/irmng/',
#'sec-ch-ua': "Chromium";v="94", "Google Chrome";v="94", ";Not A Brand";v="99",
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-platform': "Windows",
'sec-fetch-dest': 'empty',
'sec-fetch-mode': 'cors',
'sec-fetch-site': 'same-origin',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36',
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
Результат
Session Expired
Ответ №1:
Срок действия сеанса истекает, потому что срок действия файла cookie сеанса (и, возможно, токена аутентификации) истек. Вы можете исправить это с помощью сеанса запросов, который установит для вас эти заголовки сеанса. Подробнее читайте здесь: https://docs.python-requests.org/en/master/user/advanced /
Комментарии:
1. Большое вам спасибо за быстрый ответ. Я внес изменения, и теперь я получаю не авторизованный результат. Есть предложения? Еще раз спасибо!
2. Ваш токен аутентификации (заголовок аутентификации), вероятно, устарел. Для этого есть два способа, краткосрочным решением было бы войти на сайт, перейти к заголовкам запросов в инструментах сетевого разработчика и скопировать заголовок аутентификации. Лучшим решением было бы использовать сеанс, в который вы можете войти с помощью запросов, отправив запрос на страницу входа с вашим именем пользователя и паролем. Если это сделано правильно, он установит ваш токен аутентификации для вашего сеанса. Я бы рекомендовал использовать такой инструмент, как postman, для просмотра структуры запросов / ответов