记录自己的探索和验证过程,分析方式:

  • Reqable
  • jadx-gui
  • apktool

参考信息

星星充电小程序仅展示近 2 个月订单,App 端订单保留有效期 12 个月,历史订单无法查看

应用页面

应用地图页面是原生的,我的、订单、站点等页面都是 WebView。
从文章里看到有 app-cdn.starcharge.com/wap/index.html 这个页面,浏览器直接访问确认是应用的 WebView。
具体有哪些页面可用,可以在 js 文件搜索 path: "*" 关键字,下面是一些常用的:

有的页面需要 userId 和 token 参数,它们需要登录后抓包获取。
页面跳转是用 jsbridge 呼唤 Java 框架的 frameShowPage 方法来实现,搜索这个关键字查看参数构成。

后端接口

  • 充电订单
    pagecount 可以超过 10
GET /apph5/webApiV2/type/charge/record/list?pagecount=10&page=1&orderType=0&statusType=0&nonce=ceafec43-ff30-4295-a736-67996aa1014c&userId=USERID HTTP/1.1
Host: gateway.starcharge.com
Authorization:
timestamp: 1763982179485
signature: A2BFCD1C62BCA26508
  • 订单详情
GET /app/v2/apiV2/charge/order/detail?chargeId=20251030222814512787&timestamp=1763998514187&userId=USERID&verify=VERIFY HTTP/1.1
Host: gateway.starcharge.com
appversion: 8.0.0.0
x-ca-signature: 30460221009AEC901529C7AC653FAEBA4127B02BC
x-ca-timestamp: 1763998514187
  • 充电报告
    响应包含耗时、充电量、SOC 变化、峰值功率、打败用户百分位;
    appversion 必填,X-Ca-Signature 暂时算不来
POST /app/v2/apiV2/charging/report/simple HTTP/1.1
Host: gateway.starcharge.com
appversion: 8.0.0.0
x-ca-signature: 3046022100C386F549E03F1C67FC375E3F3584C85DCC4C0
x-ca-timestamp: 1763985034391
 
orderId=ORDERID&timestamp=1763985034391&userId=USERID&verify=VERIFY
  • 电站检索
    需要 X-Ca-Signature
POST /app/apiV2/stubGroup/list/query HTTP/1.1
Host: gateway.sccncdn.com
appVersion: 8.0.0.0
X-Ca-Signature: 30450221009E2E9579781A123537E0971E7FA3176A150A32
X-Ca-Timestamp: 1763998507477
 
lat=31.2&lng=121.2&orCityCode=310100&orderType=1&page=1&pagecount=30&radius=10000&searchScene=2&stubGroupTypes=0&userId=USERID&verify=VERIFY

接口签名

向 gateway 发送的 API 请求都带有 timestamp & signature 两个参数做简单的完整性校验。
好在计算生成逻辑均在前端完成,打开应用页面可以走浏览器调试,在 app.js 中搜索 headers.signature 看压缩源码。

将为空的 userId=timestamp 加入到 Query Params 后按 Key 升序排列,取大写 MD5 的前 18 位。写成一行 Python 就是这样
lambda d: hashlib.md5("&".join(f"{k}={v}" for k, v in sorted(d.items())).encode()).hexdigest()[:18].upper().

timestamp 有约 2 分钟的有效期,即用即生成。

另外 x-ca-signature 这个参数需要用到一个加密密钥,暂时脱不来壳,先不弄了