尝试在Shopify上发布请求时,请求会产生400错误

时间:2019-05-23 19:40:30

标签: python python-requests shopify

我正在尝试创建一个请求python脚本,该脚本将添加到购物车并最终结帐。我做了一个发帖请求 (https://yeezysupply.com/cart/add.js),这是我在网络chrome开发人员工具页面中找到的添加到购物车端点。它有一个带有3个字典的json负载。 ID是产品的变体ID,属性(我不知道它是什么),因此我将其留为空白以及数量。在执行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 :(得分:0)

尝试以下操作-

{"Content-Type": "application/json"}添加为请求的标头。看起来像这样-

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

这应该可以解决问题。您的字典对我来说看起来不错,但是如果仍然出现错误,请在发送字典之前在字典上使用json.loads

希望这会有所帮助。 :)

答案 1 :(得分:0)

因此,您正在构建一个Bot来结帐产品(无论如何,这似乎还是可以的)。使用Python不会对您的才华造成冒犯,但是如果您仅使用Javascript来使您的机器人进行竞标,您的生活就会变得绝对好。由于反正自然内置于浏览器中,因此您的工作将得到简化。

如果您想使用Python运行Bot服务器端作为问题类型,并且POST给您带来麻烦,请等到脚本签出为止!我不确定您现在是否可以这样做,因此您可能希望在计划中放慢脚步,直到可以证明没有问题地签出为止。你调查了吗?