Добавление товара в корзину на Supreme через POST-запросы в Python - Запрос не работает - PullRequest
0 голосов
/ 15 марта 2020

Я пытаюсь создать бота в Python, который может при обнаружении добавить продукт в мою корзину на сайте Supreme. Я хочу, чтобы это было эффективно, и когда я пытаюсь использовать HTTP-запросы для выполнения работы, я получаю код ответа 200 (ОК), но продукт не добавлен в мою корзину.

Я пытался это как с модулем запросов Python, так и с модулем запросов селена. Код ниже:

post_headers = {'User-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36', 'x-requested-with': 'XMLHttpRequest', 'content-type': 'application/x-www-form-urlencoded'}
post_data = {"utf-8": "%E2%9C%93", 's': size_id, 'st': style_id, "X-CSRF-Token": csrf, "commit": "add to cart"}
url = "https://www.supremenewyork.com/shop/{productid}/add".format(productid=id)
add_to_cart = session.post(url, headers=post_headers, data=post_data)

Ответом для add_to_cart является HTTP-код 200 (ОК), но когда я запускаю print(add_to_cart.text), я ожидаю увидеть добавленный продукт, однако просто вижу [] (мобильный пользовательский агент) или главная домашняя страница html (настольный пользовательский агент) и выясните, что в корзине ничего нет. Я также пытался использовать мобильный пользовательский агент, чтобы заставить его работать (json), и также потерпел неудачу.

Когда я пытаюсь использовать запросы селена, я использую Google Chrome (в противном случае я использую настраиваемые пользовательские агенты).

Буду признателен за любые предложения или способ исправить это и иметь возможность добавлять товары в мою корзину через запросы HTTP POST.

Ответы [ 2 ]

2 голосов
/ 16 марта 2020

Чтобы увидеть, что вы получите в ответе, вы также можете использовать .content:

add_to_cart = session.post(url, headers=post_headers, data=post_data)
print(add_to_cart.content)

Из того, что я вижу, возвращаясь в этом контенте, только var h = {"76049":1,"cookie":"1 item--76049,26482"} может быть полезно для проверки он был добавлен.

Согласно тому, что я вижу на этом сайте, чтобы получить полное содержимое корзины, вы должны также выполнить еще один вызов API, GET на https://www.supremenewyork.com/shop/cart со своими заголовками.

Надеюсь, это полезно. Удачи!

0 голосов
/ 15 марта 2020

Почему вы ожидаете увидеть свою корзину в ответе на этот POST? Я знаю, что кажется логичным, что это возможно, но многие веб-сайты построены странным и таинственным образом.

Используете ли вы Chrome Инструменты разработчика? Если вы посмотрите на вкладке «Сеть» запрос на добавление чего-либо в корзину, вы увидите, что на вкладке ответа вы только что получили нагрузку JavaScript. Однако, если вы загляните под куки-файлы ответа, вы увидите что-то вроде этого:

корзина 1 + пункт - 62197% 2C28449

Что похоже на продукт Идентификаторы того, что есть в корзине, есть у повара ie. Затем вы можете найти это в своем ответе, позвонив по номеру:

add_to_cart.cookies["cart"]

В качестве альтернативы вы можете выполнить GET для:

https://www.supremenewyork.com/shop/cart

но тогда вам нужно будет проанализировать HTML, которое вы получите ... возможно, проще проверить Cookies.

...