分析与解码 YouTube 视频播放签名及 Token

学习笔记作者:admin日期:2025-06-24点击:4

摘要:通过 Python 尝试对 YouTube 视频播放地址中的签名参数 (s) 和 Token (stoken) 进行解码,包括 Base64 解码、Hex 解码和字符串变换等方法。

分析与解码 YouTube 视频播放签名及 Token

问题描述

      我们得到了一段类似于 YouTube 视频播放地址的签名参数和 Token:

url="\/2K1+xDWukEoK5zT6HE848JEcq7kKmSmypTItrLzU+56NywNcgNLxQGgrvk4gJ9x"
stoken="+ok5KChgWC2Qs34I8NfSq6vfVYehBEs3REEz13mvHKA="

      我们需要尝试解码这些参数。

解码尝试

  1. 清理 URL 参数:移除开头的 \/,得到清理后的字符串。
  2. Base64 解码:尝试标准 Base64 和 URL 安全 Base64 解码。
  3. Hex 解码:检查是否为十六进制字符串并解码。
  4. 字符串变换:尝试反转字符串、切片交换等 YouTube 签名还原方法。

Python 实现

import base64

# 输入参数
clean_url = "2K1+xDWukEoK5zT6HE848JEcq7kKmSmypTItrLzU+56NywNcgNLxQGgrvk4gJ9x"
stoken = "+ok5KChgWC2Qs34I8NfSq6vfVYehBEs3REEz13mvHKA="

# Base64 URLSafe 解码
def try_base64_urlsafe_decode(data):
    try:
        data += '=' * (-len(data) % 4)
        decoded = base64.urlsafe_b64decode(data)
        print("✅ Base64 URLSafe 解码结果:", decoded)
        return decoded
    except Exception as e:
        print("❌ Base64 URLSafe 解码失败:", str(e))
        return None

# Base64 标准解码
def try_base64_standard_decode(data):
    try:
        data += '=' * (-len(data) % 4)
        decoded = base64.b64decode(data)
        print("✅ Base64 标准解码结果:", decoded)
        return decoded
    except Exception as e:
        print("❌ Base64 标准解码失败:", str(e))
        return None

# Hex 解码
def try_hex_decode(data):
    try:
        if len(data) % 2 == 0:
            decoded = bytes.fromhex(data).decode('utf-8', errors='ignore')
            print("✅ Hex 解码结果:", decoded)
            return decoded
        else:
            print("❌ 不是有效的 Hex 字符串(长度不是偶数)")
            return None
    except Exception as e:
        print("❌ Hex 解码失败:", str(e))
        return None

# 字符串变换
def reverse_string(data):
    return data[::-1]

def slice_swap(data, n=2):
    return data[n:] + data[:n]

# 测试
try_base64_urlsafe_decode(clean_url)
try_base64_standard_decode(clean_url)
print("? 字符串反转尝试:", reverse_string(clean_url))
print("? 字符串切片交换尝试:", slice_swap(clean_url, 3))

# stoken 测试
try_base64_urlsafe_decode(stoken)
try_base64_standard_decode(stoken)

结果

      通过上述代码,我们成功对部分参数进行了 Base64 解码,但解码结果通常是二进制数据。对于字符串变换部分,尝试了反转和切片交换,但未发现明显有效的还原逻辑。

结论

      这些参数可能来源于 YouTube 的签名和 Token 系统,需要更复杂的还原逻辑(如模拟浏览器行为)。如果需要进一步帮助,请提供完整的请求地址或具体需求。

上一篇      下一篇