8.0 KiB
8.0 KiB
天猫详情页与评论抓取研究
- 状态:Draft
- 更新时间:2026-04-03
- 关联任务:
S3-01
结论
- 天猫详情和评论链路已经可以明确到具体入口与 API,不再是“靠 DOM 碰运气”的问题。
- 默认可交付路径应是“登录态页面状态解析 + 登录态模板回放”的组合,不是匿名直连。
- 2026-04-03 的实测里,天猫详情和评论 API 在服务端匿名请求下都会回到带登录跳转的
RGV587_ERROR,因此当前必须把登录态作为前置依赖。 - 详情页存在可稳定访问的 PC SSR 壳路由,适合做资源发现、版本跟踪和模板漂移观测;真正稳定可回放的详情数据来源则应优先落在登录态 HTML/SSR 内嵌状态,而不是继续依赖易漂移的详情 mtop。
- 最新一轮已把天猫
search主路径补到服务端:直接回放https://s.taobao.com/search?q=<query>&tab=mall的登录态 HTML,并优先解析内嵌g_page_config/ JSON 负载,必要时再从商品链接块回退提取候选。
已验证入口
1. 商品详情壳页
- 直接访问
https://detail.tmall.com/item.htm?id=<itemId>,当前会返回登录跳转页,并带x-sec-reason: FAIL_SYS_SESSION_EXPIRED。 - 直接访问
https://detail.tmall.com/wow/z/app/tbpc/pc-detail-ssr-2025/home?itemId=<itemId>,可稳定拿到 SSR 壳页与资源清单。 - 2026-04-03 实测的资源版本为:
https://g.alicdn.com/code/npm/@ali/tbpc-pc-detail-ssr-2025/0.0.54/js/data-loader.jshttps://g.alicdn.com/code/npm/@ali/tbpc-pc-detail-ssr-2025/0.0.54/js/p_home.js
2. 详情 API
data-loader.js 暴露了两条详情接口:
mtop.taobao.pcdetail.data.getmtop.taobao.pcdetail.business.data.get
当前主链更像是:
- 详情页 SSR 壳加载
data-loader.js data-loader.js组装data负载:iddetail_v: "3.3.2"exParams.queryParamsexParams.domainexParams.path_nameexParams.pcSourceexParams.logicVerexParams.nonce
- 浏览器中的
lib-mtop发起详情请求
3. 评论 API
p_home.js 暴露了两条评论接口:
- PC 评论:
mtop.alibaba.review.list.for.new.pc.detail - H5 评论兜底:
mtop.taobao.rate.detaillist.get
实测与 bundle 还原出的关键参数如下。
PC 评论请求:
itemIdbizCode- 天猫为
ali.china.tmall - 淘宝为
ali.china.taobao
- 天猫为
channel: "pc_detail"pageSizepageNum- 可选
rateType - 可选
orderType
H5 评论请求:
auctionNumIdpageNopageSizeshowTrueCount: falserateSrc: "pc_rate_list"- 可选
rateType - 可选
orderType - 可选
expression
4. 2026-04-03 追加实机结论
- 当前真实商品页
https://detail.tmall.com/item.htm?id=934454505228...的页面内详情请求稳定命中:mtop.tmall.kangaroo.core.service.route.aldlampservicefixedresv2
- 该接口在已登录浏览器中的真实返回里,
data.resultValue["36500751"].data只暴露distinctId、dataSetId、resId等路由信息,本身不是最终商品详情快照。 - 同一页面的 SSR 内嵌脚本
window.__ICE_APP_CONTEXT__已直接包含:- 标题
- 店铺名 / 店铺链接 / 店铺类型
- 主图
- 当前展示价格 / 划线价
- 已售文案
- 评论总量与首屏评论摘要
- 结论:
- 商品详情抓取应优先采用“登录态 HTML +
window.__ICE_APP_CONTEXT__解析”。 - 评论抓取继续采用
mtop.taobao.rate.detaillist.get更合适。 - 服务端回放评论模板时,必须基于 Cookie 中
_m_h5_tk重新计算t/sign;仅替换data而不重签名会被 mtop 拒绝。
- 商品详情抓取应优先采用“登录态 HTML +
2026-04-03 实测结果
0. MCP 浏览器实时登录态闭环
- 使用 MCP Playwright 浏览器直接打开真实商品页
https://detail.tmall.com/item.htm?id=934454505228,页面可在登录态下稳定打开。 - 通过
page.context().cookies()抽取当前*.tmall.com与detail.tmall.comCookie,回灌到POST /api/platforms/tmall/live-session后,GET /api/platforms/tmall/live-product-preview?itemId=934454505228&commentCount=20&page=1&maxPages=2已实机返回 200。 - 实机返回中已包含:
- 商品详情:标题、店铺、主图、价格、评论总量。
- 评论结果:标签、分页信息,以及 20 条真实评论样本。
- 本轮还暴露并修复了一个真实问题:
mtop.taobao.rate.detaillist.get返回的是 JSONP,服务端解析器此前未先解包mtopjsonp(...),导致“请求成功但评论为空”。该问题已在apps/api修复并补齐回归测试。
1. 详情 API
匿名服务端请求 mtop.taobao.pcdetail.data.get 时,返回:
ret: ["RGV587_ERROR::SM::..."]data.url指向https://login.taobao.com/member/login.jhtml?...
结论:
- 详情 API 当前必须依赖登录态 Cookie。
- 仅靠匿名
_m_h5_tk/ H5 签名不足以形成稳定交付链路。
2. 评论 API
匿名服务端请求:
mtop.alibaba.review.list.for.new.pc.detailmtop.taobao.rate.detaillist.get
同样返回:
ret: ["RGV587_ERROR::SM::..."]data.url/data.h5url指向淘宝登录页
结论:
- 评论接口虽然前端代码里标记为
needLogin: false,但当前实测依然被服务端登录门槛或风控前置拦住。 - 对项目来说,评论抓取和详情抓取一样,都要走“先登录、后回放”。
已落库的工程推进
本轮已在 apps/api 补了天猫 live-session 与任务主链骨架:
apps/api/src/platforms/tmall/live-session.tsapps/api/src/platforms/tmall/parsers.tsapps/api/src/platforms/tmall/types.tsapps/api/src/platforms/tmall/utils.ts
当前能力包括:
- 导入天猫
cookieHeader - 导入评论模板 URL,并保留详情模板 URL 作为漂移观测输入
- 登录态搜索页改为
s.taobao.com/search?...&tab=mallHTML 拉取,并解析内嵌状态与候选链接 - 商品详情改为登录态详情页 HTML 拉取,并解析
window.__ICE_APP_CONTEXT__的 SSR 内嵌状态 - 评论模板按新
itemId、页码、每页数量改写请求参数 - 评论回放前基于
_m_h5_tk按真实 mtop 公式重算t/sign - 评论多页回放后做去重聚合
- 对登录跳转响应统一抛出
409,可直接接入NeedLogin/Blocked - 暴露
live-search-preview/live-detail-preview/live-reviews-preview/live-product-preview预览入口 - 把天猫实时
search/detail/reviews接入任务执行主链,并新增 JD + 天猫双平台 live 主回归、Blocked -> retry success报告升版回归、Blocked -> retry blocked -> report unchanged稳定性回归,以及SearchBlocked恢复后二次确认只补跑新恢复平台的回归
下一步建议
- 用真实登录态继续固化搜索页、评论模板与样本响应,验证
apps/api的 preview 接口:GET /api/platforms/tmall/live-search-previewPOST /api/platforms/tmall/live-sessionGET /api/platforms/tmall/live-detail-previewGET /api/platforms/tmall/live-reviews-previewGET /api/platforms/tmall/live-product-preview
- 抓一轮真实任务闭环:
- 导入 live session
- 创建任务并选中带
itemId的天猫候选 - 验证报告证据是否落到真实
search/detail/reviews回放
- 固化第一批真实 fixture / HAR,补齐
S0-02 - 继续扩大双平台主回归包覆盖面;
SearchBlocked/NoResult/Blocked组合、Blocked -> retry success升版、Blocked -> retry blocked -> report unchanged,以及SearchBlocked恢复后二次确认不重复执行已完成平台已覆盖,后续补更多失败/恢复组合与真实 fixture 驱动回归 - 如果模板漂移频繁,再补
L2模板刷新与L3登录恢复
参考链接
- https://www.tmall.com/robots.txt
- https://list.tmall.com/robots.txt
- https://detail.tmall.com/wow/z/app/tbpc/pc-detail-ssr-2025/home?itemId=833444005595
- https://g.alicdn.com/code/npm/@ali/tbpc-pc-detail-ssr-2025/0.0.54/js/data-loader.js
- https://g.alicdn.com/code/npm/@ali/tbpc-pc-detail-ssr-2025/0.0.54/js/p_home.js