简介:发现一个可用的官方战力接口

最近在开发王者荣耀相关的数据工具时,我发现了一个可以直接使用的官方战力查询接口。这个接口来自王者营地,能够准确获取英雄的战力排名数据。下面分享具体的调用方法和实现代码。

接口详情与直接调用方法

基础请求信息

POST https://kohcamp.qq.com/honor/ranklist
Content-Type: application/json

完整可用的请求示例

这是我实际测试可用的请求代码:

<?php
// 王者营地战力接口调用示例
$curl = curl_init();

curl_setopt_array($curl, array(
   CURLOPT_URL => 'https://kohcamp.qq.com/honor/ranklist',
   CURLOPT_RETURNTRANSFER => true,
   CURLOPT_ENCODING => '',
   CURLOPT_MAXREDIRS => 10,
   CURLOPT_TIMEOUT => 0,
   CURLOPT_FOLLOWLOCATION => true,
   CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
   CURLOPT_CUSTOMREQUEST => 'POST',
   CURLOPT_POSTFIELDS =>'{
    "recommendPrivacy": "0",
    "areaId": "1",
    "adcode": "210400",
    "roleId": "2120721615",
    "heroId": "168"
}',
   CURLOPT_HTTPHEADER => array(
      'token: KPRHXTLQWnM_lCCWYNKc7NJ7halQJCR-Mgq1ipnr9umnn7FTaThAEm8yBcEgbPilNiwWStr38oxJmJHMxA_Z8BvIeD0Akj',
      'userId: 538599124',
      'User-Agent: Apifox/1.0.0 (https://apifox.com)',
      'Content-Type: application/json',
      'Accept: */*',
      'Host: kohcamp.qq.com',
      'Connection: keep-alive'
   ),
));

$response = curl_exec($curl);
curl_close($curl);
echo $response;
?>

参数配置说明

请求头参数

  • token: 认证令牌(自己抓包获取)
  • userId: 用户ID(同上)

请求体参数

{
    "recommendPrivacy": "0",
    "areaId": "1",          // 可填1,2,3,4 分别对应qq安卓,ios安卓,qq微信,ios微信
    "adcode": "210400",     // 行政区划代码
    "roleId": "2120721615", // 自己的roleId(抓包获取)
    "heroId": "168"         // 英雄ID:168代表韩信
}

如何获取自己的参数

1. 获取英雄ID(heroId)

这个有官方接口:

https://pvp.qq.com/web201605/js/herolist.json

常见英雄ID参考:

  • 168: 韩信
  • 144: 程咬金
  • 123: 吕布
  • 107: 赵云
  • 190: 诸葛亮

2. 获取areaId对应关系

  • “1”: 安卓QQ区
  • “2”: 苹果QQ区
  • “3”: 安卓微信区
  • “4”: 苹果微信区

3. 获取adcode(行政区划代码)

可以根据需要查询的城市修改:

  • 110000: 北京市
  • 310000: 上海市
  • 440300: 深圳市
  • 210400: 抚顺市(示例中使用)

接口返回数据解析

成功调用后会返回JSON格式数据:

{
    "result": 0,
    "returnCode": 0,
    "returnMsg": "",
    "data": {
        "list": [
            {
                "rankNo": 1,//排行名次
                "roleId": "2754841645",//这个人的roleId
                "roleIcon": "https://thirdqq.qlogo.cn/ek_qqthird/AQKE09RBBysP5iaMU0vkysEjlIFobq1O7L4iafAYMddSw5QZdHdbyUFD7qvy1ORiaAAWQTbS4nWJial6glweWicuMGtobkyvMT6NmibGEJBTjWl0bL7u3f1cI/100",//头像
                "roleName": "人间难寻绝色",//游戏昵称
                "roleJobName": "传奇王者",//游戏段位
                "rankValue": "13017",//榜单分数
                "rankChange": "0",
                "rankValChange": "0",
                "userId": "1898030525",
                "userName": "我211低调",//用户名
                "serverId": 1380,
                "openid": "",
                "areaId": 1,//大区
                "isHide": false
            }]
    }
}

封装成可复用的函数

<?php
/**
 * 获取王者荣耀英雄战力数据接口
 */
header('Content-Type: application/json; charset=utf-8');

// 获取请求参数
$roleId = isset($_GET['roleId']) ? $_GET['roleId'] : (isset($_POST['roleId']) ? $_POST['roleId'] : '');
$heroId = isset($_GET['heroId']) ? $_GET['heroId'] : (isset($_POST['heroId']) ? $_POST['heroId'] : '');
$areaId = isset($_GET['areaId']) ? $_GET['areaId'] : (isset($_POST['areaId']) ? $_POST['areaId'] : '');
$adcode = isset($_GET['adcode']) ? $_GET['adcode'] : (isset($_POST['adcode']) ? $_POST['adcode'] : '');
$token = isset($_GET['token']) ? $_GET['token'] : (isset($_POST['token']) ? $_POST['token'] : '');
$userId = isset($_GET['userId']) ? $_GET['userId'] : (isset($_POST['userId']) ? $_POST['userId'] : '');

// 验证必需参数
$requiredParams = ['roleId', 'heroId', 'areaId', 'adcode', 'token', 'userId'];
$missingParams = [];

foreach ($requiredParams as $param) {
    if (empty($$param)) {
        $missingParams[] = $param;
    }
}

// 如果有缺失参数,返回错误
if (!empty($missingParams)) {
    echo json_encode([
        'code' => 400,
        'message' => '参数缺失',
        'data' => [
            'missing_params' => $missingParams,
            'required_params' => $requiredParams
        ]
    ]);
    exit;
}

/**
 * 获取王者荣耀英雄战力数据
 * @param string $roleId 游戏角色ID
 * @param string $heroId 英雄ID
 * @param string $areaId 大区
 * @param string $adcode 城市代码
 * @param string $token API认证令牌
 * @param string $userId 用户ID
 * @return array 返回解析后的数据
 */
function getHeroPowerData($roleId, $heroId, $areaId, $adcode, $token, $userId) {
    
    $postData = json_encode([
        "recommendPrivacy" => "0",
        "areaId" => $areaId,
        "adcode" => $adcode,
        "roleId" => $roleId,
        "heroId" => $heroId
    ]);
    
    $headers = [
        'token: ' . $token,
        'userId: ' . $userId,
        'User-Agent: Apifox/1.0.0 (https://apifox.com)',
        'Content-Type: application/json',
        'Accept: */*',
        'Host: kohcamp.qq.com',
        'Connection: keep-alive'
    ];
    
    $ch = curl_init();
    curl_setopt_array($ch, [
        CURLOPT_URL => 'https://kohcamp.qq.com/honor/ranklist',
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_POST => true,
        CURLOPT_POSTFIELDS => $postData,
        CURLOPT_HTTPHEADER => $headers,
        CURLOPT_TIMEOUT => 10
    ]);
    
    $response = curl_exec($ch);
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    $curlError = curl_error($ch);
    curl_close($ch);
    
    if ($curlError) {
        return [
            'code' => 500,
            'message' => '请求失败: ' . $curlError,
            'data' => null
        ];
    }
    
    $result = json_decode($response, true);
    
    if (json_last_error() !== JSON_ERROR_NONE) {
        return [
            'code' => 500,
            'message' => 'JSON解析失败: ' . json_last_error_msg(),
            'data' => $response
        ];
    }
    
    return [
        'code' => 200,
        'message' => 'success',
        'data' => $result
    ];
}

// 调用函数并输出结果
$result = getHeroPowerData($roleId, $heroId, $areaId, $adcode, $token, $userId);
echo json_encode($result, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
?>

注意事项和使用建议

1. 接口稳定性

  • 这个接口目前稳定可用
  • 但官方可能会随时调整
  • 建议做好错误处理

2. 请求频率限制

  • 不要过于频繁调用
  • 建议间隔5秒以上
  • 避免被服务器限制

3. 数据准确性

  • 数据来源官方,准确度高
  • 战力数据每天更新
  • 排名数据实时变化

实际应用场景

1. 个人战力查询工具

可以基于此接口开发微信小程序或网页工具,方便玩家查询自己的英雄战力。

2. 战队数据分析

为战队管理开发数据分析工具,了解队员的英雄战力情况。

3. 游戏数据统计

收集和分析不同英雄的战力分布情况。

4. 排名监控

监控特定英雄的排名变化趋势。

常见问题解答

Q: 这个接口需要付费吗?
A: 完全免费,直接调用即可。

Q: token会过期吗?
A: 当前提供的token长期有效,但建议获取自己的token。

Q: 可以商用吗?
A: 个人学习和研究使用没问题,商用需考虑腾讯相关政策。

Q: 如何获取更多英雄的ID?
A: 可以通过网络搜索"王者荣耀英雄ID对照表"获取完整列表。

总结

这个王者营地战力查询接口非常实用,可以直接获取到官方权威的战力数据。通过简单的HTTP请求就能获得详细的英雄战力排名信息,对于开发王者荣耀相关的工具或进行数据分析很有帮助。

如果你在调用过程中遇到问题,或者发现了更好的使用方法,欢迎交流讨论!

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐