Requests дает 400 ошибок при попытке опубликовать запросы на Shopify - PullRequest
1 голос
/ 23 мая 2019

Я пытаюсь создать скрипт Python для запросов, который добавит в корзину и в итоге оформит заказ. Я сделал запрос на почту (https://yeezysupply.com/cart/add.js), который является конечной точкой добавления в корзину, которую я нашел на странице инструментов разработчика chrome для сетей. Он имеет полезную нагрузку json с 3 словарями. Идентификатор - это идентификатор варианта продукта, свойства которого я не знаю что это так, я оставил это поле пустым, и количество. Я ввел данные в качестве параметра, когда я сделал запросы Post. Я получил ошибку ответа 400. Когда я печатал текст запроса, ничего не было добавлено в мою корзину, и я получил это .

{
   "status":"bad_request",
   "message":"expected String to be a Hash: properties",
   "description":"expected String to be a Hash: properties"
}

Я довольно новичок в запросах, поэтому я не уверен, что означает ошибка. Я смог подтвердить, что ничего не было добавлено в мою корзину, потому что я сделал запросы на получение в конечную точку корзины shopify (https://yeezysupply.com/cart.json). Когда я распечатываю запросы на получение, я получаю это.

{
   "token":"cb67e6c53c63b930b4aca1eb3b5a7510",
   "note":null,
   "attributes":{

   },
   "original_total_price":0,
   "total_price":0,
   "total_discount":0,
   "total_weight":0.0,
   "item_count":0,
   "items":[

   ],
   "requires_shipping":false,
   "currency":"USD",
   "items_subtotal_price":0,
   "cart_level_discount_applications":[

   ]
}

Это подтвердило, что в мою корзину ничего не добавлено Кто-нибудь знает, что я делаю не так? Продукт, который я использовал для тестирования: (https://yeezysupply.com/products/flannel-lined-canvas-jacket-medium-blue?c=%2Fcollections%2Fwomen)

Я попытался создать сеанс глобальных запросов, чтобы узнать, нужны ли мне файлы cookie. Это тоже не сработало.

import requests
from bs4 import BeautifulSoup as soup
session = requests.Session()

atc_endpoint = 'https://yeezysupply.com/cart/add.js'
atc_info = {
    "id": "1457089478675",
    "properties": "{}",
    "quantity": "1"
}
def add_to_cart():
    pass

atc_post = session.post(atc_endpoint, data=atc_info)
atc_get = session.get('https://yeezysupply.com/cart.json')
print(atc_post.text)

Я пытался использовать заголовки, я использовал заголовки = {"Content-Type": "application / json"} Я получил следующую ошибку:

{
   "error":"822: unexpected token at 'id=1457089478675\u0026properties=%7B%7D\u0026quantity=1'"
}

Я не уверен, какой маркер запрашивает API. Я ожидаю, что товар будет в моей корзине и показан в тексте запроса на получение.

Ответы [ 2 ]

0 голосов
/ 24 мая 2019

Итак, вы строите бота, чтобы оформлять заказы (это все равно может показаться)Не обижайся на свои таланты с Python, но твоя жизнь стала бы абсолютно лучше, если бы ты просто использовал Javascript, чтобы заставить твоего бота делать ставки.Так как в любом случае он естественным образом встроен в браузеры, ваши усилия будут упрощены.

Если вы хотите запустить свой сервер на стороне бота с Python, как показывает ваш вопрос, и POST доставляет вам неприятности, просто подождите, пока вы извлечете сценарий!Я не уверен, что вы даже можете сделать это на этом этапе, поэтому вы можете поставить под угрозу свои планы, пока не сможете наглядно проверить без проблем.Вы смотрели на это?

0 голосов
/ 23 мая 2019

Попробуйте следующие вещи-

Добавьте {"Content-Type": "application/json"} в качестве заголовка вашего запроса. Это будет выглядеть так -

headers {"Content-Type": "application/json"}
atc_post = session.post(atc_endpoint, data=atc_info, headers=headers)

Это должно сработать. Ваш словарь выглядит хорошо для меня, но если он все еще дает ошибки, попробуйте использовать json.loads в вашем словаре перед отправкой.

Надеюсь, это поможет. :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...