Tiktok 弹幕游戏直播互动数据获取方案

Tiktok 弹幕游戏直播互动数据获取方案

  • 背景介绍
  • 服务端方案介绍
    • TikTok-Live-Connector 介绍
    • TikTok-Live-Connector 原理
    • TikTok-Live-Connector 优点
    • TikTok-Live-Connector 缺点
    • TikTok-Live-Connector 使用步骤
  • 客户端方案介绍
    • TiktokLiveTool-RIDA 介绍
    • TiktokLiveTool-RIDA 原理
    • TiktokLiveTool-RIDA 优点
    • TiktokLiveTool-RIDA 缺点
    • TiktokLiveTool-RIDA 使用步骤
  • 总结

背景介绍

TikTok 是一个全球流行的短视频社交平台,拥有数亿的用户和创作者。TikTok 直播是 TikTok 的一个重要功能,让用户可以实时与主播互动,发送评论和礼物,参与各种活动和挑战。

现在有一种新的游戏直播,观众可以通过评论与游戏产生互动,这相比于只能观看的直播来说,大大增强了观众的参与度。

这种直播效果很好,但在开发的过程中,最重要的一个问题就是如何实时获取直播互动数据,包括:

  • 观众进入直播间
  • 观众关注了主播
  • 观众发布了评论
  • 观众送了礼物
  • 观众给直播进行了点赞
  • 观众分享了直播
  • 当前直播观看人数

目前行业内基本有 2 种技术方案,下面分别进行介绍。

服务端方案介绍

服务端方案目前主要用的是:https://github.com/zerodytrash/TikTok-Live-Connector 这个开源库。

TikTok-Live-Connector 介绍

TikTok-Live-Connector 是一个 Node.js 库,可以通过连接 TikTok 的内部 WebCast 推送服务,实时接收 TikTok 直播的事件,如评论,礼物等。

它包括以下几个主要功能:

  • 它可以通过用户名(uniqueId)连接到 WebCast 服务,无需凭证。这样可以连接到自己或其他主播的直播聊天。
  • 它可以跟踪多种事件,如成员加入,订阅,观众在线人数,关注,分享,评论,点赞等数据。
  • 它还可以通过提供会话 ID(sessionID),发送自动消息到聊天中。

TikTok-Live-Connector 原理

TikTok-Live-Connector 是一个非官方的逆向工程项目,它通过分析 TikTok 客户端和服务器之间的通信协议,模拟了 WebCast 推送服务的连接过程。

具体来说,它包括以下几个步骤:

  • 通过调用 TikTok 的 API 接口,获取直播间的信息,如 roomId 和 webcastId
  • 通过使用 WebSocket 协议,建立与 WebCast 推送服务的连接,并发送认证信息
  • 通过监听 WebSocket 消息,解析并处理不同类型的事件数据,并触发相应的回调函数
  • 通过发送 WebSocket 消息,向 WebCast 推送服务发送聊天消息或其他指令

TikTok-Live-Connector 优点

TikTok-Live-Connector 的优点主要有:

  • 它可以实时获取 TikTok 直播互动数据
  • 它可以无需凭证地连接到任何主播的直播聊天,并发送自动消息
  • 它是一个开源项目,在 GitHub 上有完整的文档和示例代码

TikTok-Live-Connector 缺点

TikTok-Live-Connector 作为一个非官方的逆向工程项目,也有一些缺点:

  • 它可能存在一些风险和局限性,例如被 TikTok 检测到并封禁账号或 IP 地址
  • 它可能随着 TikTok 协议或 API 接口的变化而失效或出错
  • 依赖不开源的签名服务,稳定性不可控

TikTok-Live-Connector 使用步骤

  1. 准备一台 linux 服务器,安装 nodejs 环境(也可以用其他语言版本)
  2. 通过 npm 安装 TikTok-Live-Connector
    npm i tiktok-live-connector
  3. 在代码中调用
const { WebcastPushConnection } = require('tiktok-live-connector');

// Username of someone who is currently live
let tiktokUsername = "officialgeilegisela";

// Create a new wrapper object and pass the username
let tiktokLiveConnection = new WebcastPushConnection(tiktokUsername);

// Connect to the chat (await can be used as well)
tiktokLiveConnection.connect().then(state => {
    console.info(`Connected to roomId ${state.roomId}`);
}).catch(err => {
    console.error('Failed to connect', err);
})

// Define the events that you want to handle
// In this case we listen to chat messages (comments)
tiktokLiveConnection.on('chat', data => {
    console.log(`${data.uniqueId} (userId:${data.userId}) writes: ${data.comment}`);
})

// And here we receive gifts sent to the streamer
tiktokLiveConnection.on('gift', data => {
    console.log(`${data.uniqueId} (userId:${data.userId}) sends ${data.giftId}`);
})

// ...and more events described in the documentation below

客户端方案介绍

客户端方案主要是一个通过拦截 websocket 协议获取直播互动数据的拦截插件,以下简称为 TiktokLiveTool-RIDA,即 Tiktok Live Tool Real-time Interactive Data API

TiktokLiveTool-RIDA 介绍

TiktokLiveTool-RIDA 是一个基于油猴浏览器扩展开发的工具,通过拦截 TikTok 直播的 WebSocket 协议,实时接收 TikTok 直播的互动数据。

它包括以下几个主要功能:

  • 实时获取直播互动数据,如观众进入直播间,关注,点赞,分享,评论,送礼物,观众在线人数等
  • 自动检测直播状态,停播后会自动刷新页面,直播重新开启后会自动获取数据

TiktokLiveTool-RIDA 原理

TiktokLiveTool-RIDA 是一个基于油猴浏览器扩展开发的工具,它通过拦截 TikTok 客户端和服务器之间的 WebSocket 通信协议,实时获取直播间的互动数据。

TiktokLiveTool-RIDA 优点

TiktokLiveTool-RIDA 的优点主要有:

  • 实时获取直播互动数据,如观众进入直播间,关注,点赞,分享,评论,送礼物,观众在线人数等
  • 整个方案完全不依赖第三方,自主可控,稳定可靠
  • 只要 Tiktok 还提供网页版的直播功能,此方案就不会失效

TiktokLiveTool-RIDA 缺点

TiktokLiveTool-RIDA 当然也有一些缺点:

  • 它需要在 windows 系统的 chrome 浏览器上使用,比较占系统资源

TiktokLiveTool-RIDA 使用步骤

  1. 准备一台 windows 服务器,安装 chrome 浏览器,安装油猴浏览器扩展,安装油猴脚本
  2. 打开 chrome,登录一个 tiktok 账号,然后打开 tiktok 直播间
  3. 油猴脚本会自动获取直播互动数据,通过 API 提交到你的服务器上
  4. 游戏通过 API 从服务器上获取到直播互动数据,进行使用

总结

本文介绍了目前主要的获取 Tiktok 直播互动数据的原理和方案,一个是开源方案但依赖第三方签名服务器,另一个是客户端方案,可以根据自己的情况选择使用,或两个方案同时使用来增加稳定性。

本文会持续更新,欢迎评论沟通。

你可能感兴趣的:(Tiktok,互动游戏直播,游戏,chrome,websocket)