【发布时间】:2021-12-17 16:08:32
【问题描述】:
我正在尝试用 python 编写一个程序来自动化https://www.zalando.it/ 上某些对象的购买过程。
我已经写了一些适用于 selenium 的东西,但它比请求慢。
所以我想知道是否有一种方法可以将商品添加到购物车并通过 python 请求完成结帐过程。
第一个问题是:我如何知道我应该在请求中传递哪些参数或数据?
一般来说,我如何确定在有效载荷中放入什么?
import requests
s = requests.Session()
s.headers.update({'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36'})
headers = {
'content-type': 'application/json',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36'
}
login = {
'email' : 'myemail@gmail.com',
'secret':'mypassword'
}
payload = {
"cartActionProductBrand": "Nike Sportswear",
"cartActionProductIsSale": 0,
"cartActionProductName": "AIR FORCE 1 '07 LV8 - Sneakers basse - white/black/game royal",
"cartActionProductPrice": "109.99",
"cartActionProductSize": "47",
"cartActionProductSku": "NI112O0M9-A120125000",
"event": "addToCart",
"flowId": "SZSnGMU4lwR60woT",
"host": "www.zalando.it",
"pathname": "/nike-sportswear-air-force-1-07-lv8-sneakers-basse-whiteblackgame-royal-ni112o0m9-a12.html",
"referrer": "https://www.zalando.it/scarpe-uomo/",
"accept_language": "it-IT"
}
post = s.post("https://accounts.zalando.com/api/login", headers=headers, json=login)
print(post.content)
addToCart = s.post("https://www.zalando.it/api/rr/e", headers=headers, json=payload)
cart = s.get("https://www.zalando.it/cart/", headers=headers)
print(cart.text)
【问题讨论】:
-
解决此类问题的最佳方法可能是尝试购买上述商品,同时检查浏览器中的“网络”选项卡。通过这种方式,您可以看到作为有效负载发送的数据类型,其余的实际上只是一个猜谜游戏。
-
@Jakub Sowa 看看我的编辑
标签: python python-requests bots