伏特加2/vk-audio-token

用于获取适用于VK音频API的VK令牌的库。该库可以用于获取VK令牌,使其适用于VK音频API,因此可以搜索艺术家、歌曲、专辑,查询音频URI,将音频添加到“我的音频”等。该库支持Kate Mobile、Boom和VK官方客户端。(感谢YTKABOBR对Boom客户端的反汇编)


README

阅读此内容:俄语

此库的Python版本:vodka2/vkaudiotoken-python

此库获取VK令牌,适用于VK音频API,因此可以搜索艺术家、歌曲、专辑、查询音频URI、将音频添加到“我的音频”等。该库支持Kate Mobile、Boom和VK官方客户端。(感谢YTKABOBR对Boom客户端的反汇编)

实际上,VK API有两个版本,一个是Kate Mobile版本,另一个是官方客户端版本。Boom客户端使用的VK API与Kate相似,但有一些限制,并非所有方法都受支持。此外,它需要messages权限(他们扫描我们的消息吗?)有时会返回500错误。另一方面,它还支持除VK API以外的另一个API,并可能作为后备使用。

安装

composer require vodka2/vk-audio-token

... 或者简单地复制克隆的仓库到某处,并包含 src/autoloader.php。该库没有依赖项。

获取令牌

最简单的示例

<?php

use Vodka2\VKAudioToken\TokenFacade;

$login = "+71234567890";
$pass = "12345";

// print token and User-Agent
// setting User-Agent is mandatory when querying the API!
var_export(TokenFacade::getKateToken($login, $pass));

更高级的示例在 examples 目录中。从 example_simple.php 开始。

使用令牌

最简单的示例

<?php

define('TOKEN', 'token from previous example');
define('USER_AGENT', 'User-Agent from previous example');
$ch = curl_init();

curl_setopt($ch, CURLOPT_HTTPHEADER, array('User-Agent: '.USER_AGENT));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt(
    $ch,
    CURLOPT_URL,
    "https://api.vk.com/method/audio.getById?access_token=".TOKEN.
    "&audios=".urlencode("371745461_456289486").
    "&v=5.95"
);

echo json_encode(json_decode(curl_exec($ch)), JSON_PRETTY_PRINT)."\n\n";

usage 子目录中有更多示例,展示了如何使用不同的API方法使用获取到的VK令牌。更详细的VK API描述可在 https://vodka2.github.io/vk-audio-token/(目前正在开发中)找到。

CLI工具

还有一个更高级的CLI工具,它可以模拟Kate Mobile。

Usage: src/cli/vk-audio-token.php [options] vk_login vk_pass
       src/cli/vk-audio-token.php [options] non_refreshed_kate_token
Options:
-s file             - save GMS ID and token to the file
-l file             - load GMS ID and token from file
-g gms_id:gms_token - use specified GMS ID and token
-d file             - use droidguard string from file
                      instead of hardcoded one
-m                  - make microG checkin (default)
-o                  - old checkin with droidguard string
                      that may expire
                      with droidguard string is made
-t code             - use two factor authentication
                      pass GET_CODE to get code or
                      pass code received in SMS
-h                  - print this help

Docker

docker build -t vk-audio-tokens src/
docker run -t vk-audio-tokens:latest php src/cli/vk-audio-token.php -m vk_login vk_pass
docker run -t vk-audio-tokens:latest php src/examples/usage/example_kate.php token

双因素认证

支持为Kate和VK官方客户端提供基于短信的双因素认证,但是VK服务器有时不发送短信。如果您没有收到短信,可以使用 TwoFAHelper 类强制重新发送。请参阅 example_twofahelper.php

对于Boom客户端,库使用隐式流程授权,并向VK网站发出请求。VK服务器可能会调用您的电话,发送短信或向您的VK账户发送私信。您也可以自行验证客户端,并且只传递令牌和用户ID。

您还可以在VK账户设置中创建单独的密码,并用它们代替您的账户密码。

GMS凭证

在获取令牌时也会获取GMS凭证。有两种方法可以获取GMS凭证。

第一种方法是从根设备获取。令牌在 /data/data/com.google.android.gsf/shared_prefs/CheckinService.xml 文件中,ID在 /data/data/com.google.android.gms/shared_prefs/Checkin.xml 文件中。您可以安装 GMS Credentials 应用程序以查看它们。

第二种方法是自己执行Android Checkin。类 AndroidCheckin 是为此任务设计的。此类提供两种选项:使用droidguard字符串进行checkin和在 microG 项目中进行的checkin。请注意,获取到的凭证可能会过期。

对于第一个选项,你需要一个由 com.google.ccc.abuse.droidguard (即.apk) 生成的字符串。在 example_droidguard_str.php 文件中有一个这样的字符串,它可能会过期。当使用第二个选项时,会多出一个请求,PHP 需要启用套接字。

还可以拦截 Android Checkin 请求(在第一次启动时进行)并查看返回的 GMS ID 和令牌。

请为我买一些健康的俄罗斯饮料!

WMR — P778046516389

WMZ — Z828082159527

Yandex Money