2

我看到 Walmart Android 应用程序能够捕获收据条形码(似乎是传统的 1D 条形码而不是 2D QR 码),然后检索该收据的电子版本。然后,它会将该收据添加到您在应用程序中的“购买历史记录”中。这个收据 API 可用吗?我想从沃尔玛收据中获取数据,但收据本身质量差会导致许多 OCR 问题。

我查看了 WalmartLabs Walmart.io API,但没有看到收据 API。我试图在那里问这个问题,但是他们的“提问”表格被破坏了(提交按钮什么都不做)。

4

1 回答 1

1

在调查类似问题时发现了这一点,并偶然发现了答案。我正在尝试构建一个允许我对某些购买进行自动分类的工具。不幸的是,沃尔玛非常重视他们的安全,并采取了一些措施来防止在他们的网站上运行自动化工具(即使有类似的东西puppeteer-stealth

但是,今天我发现如果您访问https://walmart.com/receipt-lookup并查看网络选项卡,您实际上可以看到请求发送到https://walmart.com/chcwebapp/api /receipts,它只需要几个参数:

{
   "storeId": number;
   "purchaseDate": string - MM-DD-YYYY;
   "cardType": string (ex. "visa")
   "total": number (ex. 100.89)
   "lastFourDigits": string (ex. "1234")
}

为了完整起见,一个示例 cURL 请求:

curl 'https://www.walmart.com/chcwebapp/api/receipts' \
  -H 'sec-ch-ua: "Chromium";v="98", " Not A;Brand";v="99", "Google Chrome";v="98"' \
  -H 'accept: application/json' \
  -H 'Referer: https://www.walmart.com/receipt-lookup' \
  -H 'content-type: application/json' \
  -H 'sec-ch-ua-mobile: ?0' \
  -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36' \
  -H 'sec-ch-ua-platform: "Mac OS X"' \
  --data-raw '{"storeId":"123","purchaseDate":"02-19-2022","cardType":"visa","total":"100.00","lastFourDigits":"1234"}' \
  --compressed

它似乎不需要任何类型的身份验证,因为快速浏览请求显示没有 cookie!

我欣喜若狂地找到了这个。我不完全确定它是否符合您的需求,但由于我的工具已经可以访问总数、最后 4 个和日期,我所需要的只是 storeId,我可以轻松地对其进行硬编码,因为我们只在一家沃尔玛购物!


顺便说一句,如果沃尔玛工程团队的任何人看到这一点,请考虑允许开发社区访问他们自己的数据。我完全可以为 PS5 版本等内容实施 PerimeterX Bot Defense,但阻止登录尝试只是为了查看我自己的收据?这就像用火箭筒取出蚁丘。

于 2022-02-19T22:02:38.873 回答