跳到主要内容

OTA 应用升级数据查询(App Market / AMP)

· 阅读需 3 分钟
Bowen Zhang
本文作者

查询车辆在各应用市场运营平台(AMP)环境下的 OTA 应用升级记录(已安装 / 未安装及版本号)。 纯 Python 实现,不依赖 Playwright 浏览器,通过接口 + 登录 Cookie 鉴权。 应用不写死:VIN 与应用(appid)均由用户输入

环境信息

环境接口域名登录页编号段示例(com.fuxi.x11mediatest)
prod(生产)https://ota-app-market-web.prod.k8s.chehejia.comhttps://amp.chehejia.com1000181
testtwo(开发测试)https://ota-app-market-web.testtwo.k8s.chehejia.comhttps://amp.testtwo.chehejia.com3000170

域名可通过环境变量覆盖(默认使用上表中的值):

  • OTA_QUERY_PROD_URL:prod 接口域名
  • OTA_QUERY_TESTTWO_URL:testtwo 接口域名

两个环境都需要登录态。code=240420 表示登录失效。获取 Cookie 方式:

  1. 浏览器登录对应环境的登录页(prod:https://amp.chehejia.com,testtwo:https://amp.testtwo.chehejia.com
  2. F12 → Network → 勾选 Fetch/XHR,再按接口域名过滤:ota-app-market-web.prod.k8s.chehejia.com(prod)/ ota-app-market-web.testtwo.k8s.chehejia.com(testtwo);刷新页面或操作一下页面(如触发一次查询)
  3. 复制该请求 Request Headers 里的 Cookie 值(形如 k1=v1; k2=v2
  4. 通过 --cookie 传入;脚本会保存到 settings.json,下次可省略

Cookie 会过期,报 240420 时重新复制一份即可;可用 --clear-cookie 清除已保存的 cookie。

📖 获取 Cookie 的详细图文步骤见飞书文档:获取AMP登录Cookie操作指南

appid 转换规则(重要)

queryPage 接口要求平台数字 appId(如 prod 1000181 / testtwo 3000170),不能直接传包名

脚本对用户输入的 --appid 自动处理:

用户输入处理方式
数字,如 1000181 / 3000170直接作为平台 appId 传入
包名,如 com.fuxi.x11mediatest自动调用应用列表枚举接口/ota/v1/app/market/web/common/queryAppList)转为当前环境的数字 appId
中文名子串,如 智能底盘同上,按应用列表模糊匹配
不传查询该车辆全部应用

转换走的目标枚举接口与环境一致:选 --env prod 用 prod 的 app 列表,选 --env testtwo 用 testtwo 的 app 列表。若不匹配会明确报错并提示相近应用。

快速开始

# 安装依赖
pip install -r requirements.txt

# 查询全部应用(prod,需 Cookie)
python scripts/query.py HLX34B160T1303448 --cookie "k1=v1; k2=v2"

# 按包名查某个应用(自动转平台 appId)
python scripts/query.py HLX34B160T1303448 --appid com.fuxi.x11mediatest --cookie "k1=v1; k2=v2"

# 按平台数字 appId 查,并指定 testtwo 环境
python scripts/query.py HLX32B141T1026801 --appid 3000170 --env testtwo --cookie "k1=v1; k2=v2"

# 输出原始 JSON
python scripts/query.py HLX34B160T1303448 --appid com.fuxi.x11mediatest --json

执行步骤(供 Claude 使用)

1. 确认参数

缺什么问什么:

  • VIN:要查询的车辆 VIN(必填)
  • appid:应用。可选。用户直接给包名/中文名/数字均可;不给则查询全部
  • 环境:默认 prod;如需 testtwo 让用户明确指定
  • Cookie:优先用已保存的;失效时引导用户按上文重新复制

2. 检查 Python 环境 & 安装依赖

python --version # 3.10+
pip install -r requirements.txt

3. 运行查询脚本

python scripts/query.py <VIN> [--appid <appid>] [--env <prod|testtwo>] [--cookie "<cookie>"]

4. 向用户报告结果

  • 查到数据:按表展示各行的包名、屏幕、当前/目标版本、升级状态、安装判定、事件时间
  • 未查到:说明该 VIN 在所选环境无该应用升级记录(多数属于未推送/未安装)

返回字段与安装判定

字段说明
code0 成功;240420 登录失效
currentInternalVersion当前版本号(数字),0 表示未装
targetInternalVersion目标版本号
upgradeStatus升级状态码,50 = 升级成功
upgradeStatusName状态文字:升级成功、升级中、下载中、等待升级 等
screenName屏幕位置:中控 / 副驾 / 后排
appPackageName应用包名
eventTime事件时间

已安装判定upgradeStatus == 50currentInternalVersion > 0 → 已安装;否则未完成。

参数说明

参数必填说明
VIN目标车辆 VIN(17 位)
--appid应用:包名 / 中文名 / 平台数字 appId;包名自动转平台 appId;不传查全部
--env环境,prod(默认)或 testtwo
--cookie登录 Cookie,不传则读已保存的
--page-size每页条数(默认 20)
--json输出原始 JSON
--clear-cookie清除已保存的 cookie 后退出

故障排查

问题原因解决
code 240420Cookie 过期 / 未登录重新登录对应环境并复制最新 Cookie
未找到应用 xxx包名/应用名在该环境不存在用应用列表枚举接口确认,或直接用数字 appId
匹配到多个应用输入过于模糊改成完整包名,或直接给平台数字 appId
totalCount: 0该 VIN 无该应用升级记录属于未推送/未安装;可去掉 --appid 查全部