手机版
  • 您还未登录,请
  • 发布时间:2026-06-19 16:12:14
    浏览 8    回复 0
    号不要了
    会员

    acfan的视频详情接口请求及解密算法

    几年没登录葫芦侠,粗略看了一下又冷清不少。

    另外,本帖所针对的不是Acfun,而是更为人知的Acfan(就是你懂的那个[勉强])
    ——————————
    接口路径:/api/video/getVideoById
    请求方法:GET
    响应格式:JSON(加密)

    GET参数:
    videoId | acfan的视频id | 整数型
    _t | 当前毫秒级时间戳 | 整数型

    请求头:
    User-Agent | 用户代理 | 随便找一个就行
    aut | 用户token | 抓包获取
    deviceid | 加密设备id | 抓包获取
    device | 设备类型 | Android
    appversion | 应用版本 | 1.9.6
    user-mark | 用户标记 | xhp
    t | 毫秒时间戳 | 同_t
    s | sign,用于验证请求是否合法 | 下面教程给算法
    sid | 会话id | 抓包获取,作用未知
    referer | 来源页 | 填视频页地址就行

    ————————————————
    请求头部分:

    s参数生成:
    取当前毫秒时间戳的第4到8位(共5位数字),对这5位数字用MD5加密,结果即为s的值
    例:时间戳1741881600000,取18816,md5后得到5d41402abc4b2a76b9719d911017c592

    ——————————————
    响应体部分:

    结构:{"code":200,"msg":"success","encData":"base64加密数据"}
    注意如果code是301则意味着token过期

    解密:
    算法AES-128-CBC,密钥是token[2:18](aut参数的第3到18位),IV和密钥一样,填充PKCS7,数据先base64解码再解密

    python代码:
    key = token[2:18].encode()
    encdata = base64.b64decode(encdata_b64)
    cipher = AES.new(key, AES.MODE_CBC, key)
    plaintext = unpad(cipher.decrypt(encdata), AES.block_size)
    data = json.loads(plaintext.decode())

    所有评论(0)
    请文明发表评论,恶意辱骂/诽谤,发布广告者封号处理
    反馈意见