Я посмотрел на сайт, и в теле они также передают свойство заголовка в данных
Итак, вы должны использовать
data = {
"header": {
"msisdn": "024568478",
"timestamp": "1592337873",
"locale": "Ar"
},
"body": {
"password": "PJGkRJte5ntnKt9TQ8XM3Q=="
}
}
, а в заголовках вы должны передавать собственные заголовки возможно, что-то вроде:
headers={'Content-Type': 'application/json', }
, но я также вижу, когда вы входите на этот сайт, они передают аргумент jwt в заголовках. Похоже, это какая-то встроенная система безопасности. Похоже, вы не можете использовать этот API. Это только для серверной части этого сайта.
Вы искали на сайте, есть ли у них документация по API, может быть, там написано, как вы можете рассчитать значение для jwt?
EDIT:
Когда у вас работает логин, это так. Как использовать сеансы в python запросах:
s = requests.Session()
data = {"login":"my_login", "password":"my_password"}
url = "http://example.net/login"
r = s.post(url, data=data)
Если вы не обойдете jwt. Вы можете использовать Selenium в python. Он работает за счет автоматизации веб-браузера. Таким образом, вы можете открыть chrome и указать, какую страницу загрузить, заполнить форму входа и прочитать html элементов в браузере. Это будет работать на 95% веб-сайтов. У некоторых даже есть защита от этого. Некоторые сайты используют cloudflare, они защищены от селеновой автоматизации.