周三下午,一位做竞品价格监控的产品经理接到客户需求:抓取Wildberries上的商品价格、库存和评论。他习惯性打开Google搜索“Wildberries API documentation”,结果一片空白——这个俄罗斯最大的电商平台,居然没有英文版的API文档。
但好消息是,Wildberries的店面前端本身就是一个JavaScript应用,它在后台调用的只是一组公开的JSON端点。不需要API密钥、不需要请求签名、不需要会话令牌。产品信息、价格、库存、配送预估、完整属性、媒体文件和评论,全部可以通过普通的HTTP请求拿到。一位开发者从数据中心IP出发,把这些端点逐一梳理了出来,下面的行为数据基于2026年7月15日实测,并在7月18日重新验证,稳定性数据则滚动到了7月19日。
![]()
正方认为,这种“透明”意味着数据几乎唾手可得。每个响应里的价格字段都是一个整数,单位是戈比,除以100即可转换为卢布。比如同一款耳机的实时返回值里,basic为202400、product为23800,分别对应原价2024卢布和实际支付价238卢布。搞错这一点,仪表盘上的价格会虚高100倍,还会漏掉折扣。搜索接口同样直白:
https://search.wb.ru/exactmatch/ru/common/v4/search?query=iphone&resultset=catalog&dest=-1257786&curr=rub&spp=30&appType=1&lang=ru&page=1
返回HTTP 200,顶层有三个键:metadata、products和total。metadata.rs固定为100,说明每页最多100款商品,total代表结果集总规模。参数dest与配送区域有关,resultset=catalog用于获取商品列表,page实现翻页。
但翻页恰恰是反方要指出的陷阱。Wildberries不会用空页面标记结果集的结尾。在最后一页之后,接口不会返回空数组,而是重新吐出第1页的100款商品——完整的200状态码,没有任何标记。如果你天真地“翻到空页就停”,这个循环永远不会终止,你只会不停地写入重复数据,同时反复攻击那个唯一被施加了速率限制的搜索端点。实测查询ноутбук时,第2页和第3页返回的内容各异,但第60页返回的就是第1页的精确副本,leading id完全一致。
这时候,正方可能会说:那就在客户端加个保护逻辑,记住第1页首个商品的id,再遇到相同id就停下。三行代码就能解决。反方会补充:可是所有正常分页的信号都被去掉了,对于不了解这个“特性”的人来说,调试成本很高。而且其他端点同样有隐式约束——比如产品卡端点按尺寸分页时,每批最多200个商品,但没有明确告知;评论端点返回的数量也受限于站内展示条数,不会一次给出全量。
我的判断是,这组端点确实为价格监控、品类分析和评论挖掘提供了零门槛入口,但正是因为没有任何官方文档、没有明确的终止信号,使用者必须自己做好脏活测试。那篇实测笔记中,作者坦承自己的首批结论在第四次运行时被推翻,后来又重新验证——这就是当前状态的缩影:一切可靠的前提,都是你亲自跑过足够多次。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.