我看到 Walmart Android 应用程序能够捕获收据条形码(似乎是传统的 1D 条形码而不是 2D QR 码),然后检索该收据的电子版本。然后,它会将该收据添加到您在应用程序中的“购买历史记录”中。这个收据 API 可用吗?我想从沃尔玛收据中获取数据,但收据本身质量差会导致许多 OCR 问题。
我查看了 WalmartLabs Walmart.io API,但没有看到收据 API。我试图在那里问这个问题,但是他们的“提问”表格被破坏了(提交按钮什么都不做)。
我看到 Walmart Android 应用程序能够捕获收据条形码(似乎是传统的 1D 条形码而不是 2D QR 码),然后检索该收据的电子版本。然后,它会将该收据添加到您在应用程序中的“购买历史记录”中。这个收据 API 可用吗?我想从沃尔玛收据中获取数据,但收据本身质量差会导致许多 OCR 问题。
我查看了 WalmartLabs Walmart.io API,但没有看到收据 API。我试图在那里问这个问题,但是他们的“提问”表格被破坏了(提交按钮什么都不做)。
在调查类似问题时发现了这一点,并偶然发现了答案。我正在尝试构建一个允许我对某些购买进行自动分类的工具。不幸的是,沃尔玛非常重视他们的安全,并采取了一些措施来防止在他们的网站上运行自动化工具(即使有类似的东西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,但阻止登录尝试只是为了查看我自己的收据?这就像用火箭筒取出蚁丘。