В общем есть запрос на
сайте который по всей логике должен отдавать json (так как все заголовки я передаю), но вместо json отдает html разметку с функциями js. На скрине ниже как раз представлен этот запрос.
Я на другом форуме спросил в чем может быть проблема, мне посоветовали разобрать html и попытаться достать с этого кода куки, что бы сделать повторный запрос с этими уникальными куками. Я получил куки, и попытался сделать запрос через session, но все тщетно. Сервер отдает все то что отдавал и при первом запросе, подобную html разметку, только уже с другими данными.
Я сделал запрос через браузер, и через браузер все работает, я посмотрел какие куки нужны серверу. Их названия spid и spsc может кому-то это что то говорит.
Вот мой python код.
headers = {
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7',
'Accept-Encoding': 'gzip, deflate, br',
'Accept-Language': 'ru-RU,ru;q=0.9',
'Cache-Control': 'max-age=0',
'Connection': 'keep-alive',
'Host': 'e-disclosure.ru',
'Sec-Fetch-Dest': 'document',
'Sec-Fetch-Mode': 'navigate',
'Sec-Fetch-Site': 'none',
'Sec-Fetch-User': '?1',
'Upgrade-Insecure-Requests': '1',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
'sec-ch-ua': '"Not_A Brand";v="8", "Chromium";v="120", "Google Chrome";v="120"',
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-platform': '"Windows"'
}
session = requests.Session()
url = 'http://e-disclosure.ru/api/events/page'
response = session.get(url, headers=headers)
# Получаем приватный ключ RSA PEM
PRIVKEY = re.search(r"-----BEGIN RSA PRIVATE KEY-----?(\n|.)+-----END RSA PRIVATE KEY-----", response.text).group()
# Получаем сообщение в шестнадцатеричном типе
hex_message = re.search(r"(?<=\.decrypt\(\").+(?=\")", response.text).group()
# Формируем в байтовом представлении
decoded_message = bytes.fromhex(hex_message)
# Переводим в стандартный вид сообщения RSA
crypted_text = base64.b64encode(decoded_message)
privkey = rsa.PrivateKey.load_pkcs1(
PRIVKEY,
)
# Обратно формируем в нужное байтовое представление
crypted_text = base64.b64decode(crypted_text.decode())
# Получаем расшифрованное сообщение
message = rsa.decrypt(crypted_text, privkey)
print(str(message)[2:-1])
cookie = {"spsc": str(message)[2:-1]}
headers['Cookie'] = f"spsc={str(message)[2:-1]}"
response = session.get("https://e-disclosure.ru/api/events/page?companyId=3043&year=2023", cookies=cookie, headers=headers)
print(response.text)