проблемы с передачей post запроса в python

Есть фетч на node.js

fetch("https://cs.deals/ajax/cart/add-items", {
  "headers": {
    "accept": "application/json, text/javascript, */*; q=0.01",
    "accept-language": "ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7",
    "content-type": "application/x-www-form-urlencoded; charset=UTF-8",
    "sec-ch-ua": "\"Google Chrome\";v=\"105\", \"Not)A;Brand\";v=\"8\", \"Chromium\";v=\"105\"",
    "sec-ch-ua-mobile": "?0",
    "sec-ch-ua-platform": "\"Windows\"",
    "sec-fetch-dest": "empty",
    "sec-fetch-mode": "cors",
    "sec-fetch-site": "same-origin",
    "x-requested-with": "XMLHttpRequest",
    "cookie": "куки",
    "Referer": "https://cs.deals/ru/market/rust/Pants/?sort=price",
    "Referrer-Policy": "strict-origin-when-cross-origin"
  },
  "body": "items=22932914-1-0.09",
  "method": "POST"
});

он работает и прекрасно возвращает все как мне нужно,но проект на питоне и такой же пост запрос

header={
    "accept": "application/json, text/javascript, */*; q=0.01",
    "accept-language": "ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7",
    "content-type": "application/x-www-form-urlencoded; charset=UTF-8",
    "sec-ch-ua": "\"Google Chrome\";v=\"105\", \"Not)A;Brand\";v=\"8\", \"Chromium\";v=\"105\"",
    "sec-ch-ua-mobile": "?0",
    "sec-ch-ua-platform": "\"Windows\"",
    "sec-fetch-dest": "empty",
    "sec-fetch-mode": "cors",
    "sec-fetch-site": "same-origin",
    "x-requested-with": "XMLHttpRequest",
    "cookie": "куки",
    "Referer": "https://cs.deals/ru/market/rust/Pants/?min_price=0.3&sort=discount&sort_desc=1",
    "Referrer-Policy": "strict-origin-when-cross-origin",
    "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36"
}
data={
    "body": "items=22932914-1-0.09"
    }
try:
    resp=session.post("https://cs.deals/ajax/cart/add-items",json=data,headers=header)
except Exception:
    print("не удалось добавить в корзину")

Сервер уже возвращает проблему с body.

С этим сайтом уже такое было, тогда у меня обрезался последний аргумент, но передвинув в начало все исправилось.

А сейчас я уже не смог так понять, пытался как-то отследить в каком виде мой запрос отправляется на сервер, но сделать этого я тоже не смог


Ответы (1 шт):

Автор решения: insolor

В js коде "body": "items=22932914-1-0.09", означает, что содержимое тела запроса - строка "items=22932914-1-0.09", добавлять туда "body" не нужно (условно, "body" - это название параметра).

Причем это не json, а просто строка, просто текст items=22932914-1-0.09.

Должно быть так:

data="items=22932914-1-0.09"
resp=session.post("https://cs.deals/ajax/cart/add-items", data=data, headers=header)
→ Ссылка