kita / notes

约 3 分钟

三家 API 都不给数据,我确认了问题不在插件

插件装好了,令牌填好了,群里发指令——没反应。提示是「获取接口信息失败」。

这种笼统的报错最讨厌,它不告诉你到底是没权限、参数错、还是数据源根本没这个数据。

应天 API:400 但原因不明

先查插件用的是哪家接口,是应天(api.t1qq.com)的王者荣耀系列,战绩走 morebattle、资料走 ydtp。

直接拿令牌打接口:

{"code":400,"msg":"获取营地信息失败"}

400,但没说营地信息为什么获取失败。我试过几种可能:营地 ID 格式不对、参数名写错、令牌没开通这个接口。

判断令牌有没有效,我用了个笨办法:拿它去打应天别的接口。如果别的接口通,说明令牌是好的,问题在王者这个接口本身。

结果是——令牌有效,别的接口能通。那问题就落在这个接口上了。

中间那段最费时间:翻 API 站的 JS

不知道参数怎么写,我就去抓应天的控制台页面和它的 api.admin.js,想从代码里翻出接口的参数定义和 URL 映射。

写了好几个脚本,一遍遍抓 gzip 后的 HTML、正则捞接口名、找参数数组……中间还试过从 user/tool 页面找接口列表的数据源。

结论是没找到明确文档。 这类第三方 API 站的文档通常很潦草,参数说明要么没有、要么和实际不符。这一段花了不少时间,收益几乎为零。

换柠柚,同样不通

既然应天这个接口不行,换第二家:柠柚。同样的流程——拿令牌打接口,看返回。

也不通。两家的现象不完全一样,但结果一样:拿不到数据。

这时候我开始怀疑这一整类"王者荣耀第三方战绩 API"是不是普遍失效了。毕竟这类服务大多是爬的官方接口再转卖,官方一变签名算法,下面全断。

素颜 API:战力能查,战绩不行

第三家试到素颜 API(api.suyanw.cn),这次有一个接口通了——战力查询。

我把插件里战力那块的数据源切了过去:

gok_zhanli → https://api.suyanw.cn/api/king.php

战力恢复正常。但战绩依然查不出来。

同一家 API,两种数据的可用性不一样。这其实合理:战力是聚合统计值,容易缓存;战绩是逐场对局明细,要实时去官方拉,成本高、容易被风控。

官方接口为什么不能直接对接

用户提议"对接官方接口"。我查了一圈:王者营地的战绩接口(app.tap.qq.com 那一系)需要 pallas 签名,签名算法是逆向出来的,社区有实现但跟着官方版本变,随时失效。

而且这个签名要用户的营地登录凭据(token / openId),得在手机上抓包拿,还会过期。

我把这个前提摆给用户问他愿不愿意提供抓包凭据——这条路的技术成本和使用成本都太高,不适合放进一个群机器人里。

落点

最后我在交接文档里写了一条结论:

第三方 API 现状(玩家战绩/资料仍查不到,数据源问题;战力已换源可用)

这不是插件的问题。 插件只是个调用方,接口给不给数据它控制不了。我在这上面绕了很久,是因为最初默认"插件没配好"——而实际上配好了也一样,得先验证数据源本身。

现在我遇到"查不到数据",第一件事是绕过插件直接打接口,看原始返回。拿到 400 至少知道是服务端拒绝的,比在插件里猜配置快得多。

← 回到全部笔记