首页 > 其他分享 >央视频解析播放链接

央视频解析播放链接

时间:2024-12-10 14:31:32浏览次数:8  
标签:解析 get m3u8download Crypto Vn Jn import 播放 链接

import random
import re
import time
import requests
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad
# from m3u8download_hecoter import m3u8download

def get_cKey_python(vid,tm,appVer,guid,platform):
    def get_qn(Vn):
        Jn = 0
        for Mr in range(len(Vn)):
            Xn = ord(Vn[Mr])
            Jn = (Jn << 5) - Jn + Xn
            Jn &= 0xFFFFFFFF
        return Jn

    Kn = bytes.fromhex("4E2918885FD98109869D14E0231A0BF4") # 固定
    Wn = bytes.fromhex("16B17E519DDD0CE5B79D7A63A4DD801C") # 固定

    sr = "mg3c3b04ba" #固定
    Nn = "https://w.yangshipin.cn/"
    Fn = f"|{vid}|{tm}|{sr}|{appVer}|{guid}|{platform}|{Nn}|mozilla/5.0 (windows nt ||Mozilla|Netscape|Win32|"
    qn = get_qn(Fn)
    Yn = f"|{qn}" + Fn
    # print(Yn)
    cryptor = AES.new(key=Kn,mode=AES.MODE_CBC,iv=Wn)
    cKey = '--01' + cryptor.encrypt(pad(Yn.encode(),16)).hex().upper()

    return cKey

def get_flowid():
    """flowid = `${(new Date).getTime().toString(36)}_${Math.random().toString(36).replace(/^0./, "")}`"""
    def baseN(num, b):
        return ((num == 0) and "0") or \
               (baseN(num // b, b).lstrip("0") + "0123456789abcdefghijklmnopqrstuvwxyz"[num % b])
    flowid = baseN(int(time.time()*1000),36) + '_' + baseN(int(str(random.random()).replace('0.','')), 36)
    return flowid

def get_signs(url):
    headers = {
        'user-agent':"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36 Edg/100.0.1185.44",
        'referer':'https://w.yangshipin.cn/'
    }

    guid = 'l29u6mj9_e5kopm32to5'
    platform = '4330701' # 视频平台 web: 4330701 app:4330303
    vid = re.findall('vid=(.+)',url)[0].split('&')[0]
    defn = 'fhd' # 清晰度
    charge = '0'
    defaultfmt = 'auto'
    otype = 'json'
    defnpayver = '1'  # app:defnpayver=5
    appVer = '0.2.0' # app:V8.7.1034.4247
    sphttps = '1' # app:0
    sphls = '1'# app:2
    spwm = '4' # app:2
    dtype = '3'
    defsrc = '2' # app:3
    encryptVer = '8.1' # app:4.2
    sdtfrom = '4330701' # app:v5028
    tm = str(int(time.time()))# 1650635739
    cKey = get_cKey_python(vid=vid,tm=tm,appVer=appVer,guid=guid,platform=platform)
    flowid = get_flowid()

    infourl = f"https://playvv.yangshipin.cn/playvinfo?&guid={guid}&platform={platform}&vid={vid}&defn={defn}&charge={charge}&defaultfmt={defaultfmt}&otype={otype}&defnpayver={defnpayver}&appVer={appVer}&sphttps={sphttps}&sphls={sphls}&spwm={spwm}&dtype={dtype}&defsrc={defsrc}&encryptVer={encryptVer}&sdtfrom={sdtfrom}&cKey={cKey}&flowid={flowid}"
    # print(infourl)
    response = eval(requests.get(url=infourl,headers=headers).text)
    ############################################
    vi = response['vl']['vi'][0]

    fn = vi['fn']

    fvkey = vi['fvkey']
    title = vi['ti']

    baseurl = vi['ul']['ui'][0]['url']
    # playurl = f"{baseurl}{fn}?sdtfrom={sdtfrom}&guid={guid}&vkey={fvkey}&platform=2"
    playurl_app = f"{baseurl}{fn}?vkey={fvkey}" # 这里其实有这个就够了,其他没用
    print(title,playurl_app)
    # m3u8download(title=title,m3u8url=playurl_app)

if __name__ == '__main__':
        url = "https://w.yangshipin.cn/video?type=0&vid=w000083fyib"
        get_signs(url)

 

 

来源:https://blog.csdn.net/qq_44223394/article/details/124376146

 

标签:解析,get,m3u8download,Crypto,Vn,Jn,import,播放,链接
From: https://www.cnblogs.com/xuchunlin/p/18597299

相关文章

  • ISUP协议视频平台EasyCVR视频汇聚平台国标GB28181协议接入不能播放是什么原因?
    在现代视频监控系统中,确保视频流的稳定播放是至关重要的。ISUP协议视频平台EasyCVR提供了多种协议支持和配置选项以满足不同用户的需求。然而,用户在使用过程中可能会遇到一些技术问题,比如国标协议接入时无法播放视频的情况。本文将详细介绍如何诊断和解决这类问题。通过这些步骤,......
  • 深入源码解析:Spring Boot 如何加载 Servlet 、Filter 与 Listener
     我们知道,SpringBoot是在SpringMVC的基础上进行了封装,以简化开发者的工作量。尽管如此,SpringBoot的底层架构依然离不开SpringMVC的核心组件,如Servlet、Filter、Listener,以及RequestMappingHandlerMapping和RequestMappingHandlerAdapter等。 在传统的Spring......
  • Windows平台Unity3D下如何低延迟低资源占用播放RTMP或RTSP流?
    技术探讨自2017年我们发布跨平台的低延迟Unity下的RTSP|RTMP直播播放器后,Unity下的直播体验有了质的提升,特别是RTMP,从大家认知里面的几秒钟,直接缩减到100-300ms,满足了绝大多数场景下低延迟的技术诉求。今天就Unity下的RTSP|RTMP的低延迟播放,从以下几个维度,抛砖引玉,做个探讨: ......
  • Java 架构师面试题解析(2024 年版)
    在当今竞争激烈的技术领域,成为一名Java架构师需要具备深厚的技术功底和丰富的实践经验。为了帮助大家更好地准备Java架构师面试,本文整理了一些2024年常见的面试题及答案解析。一、基础篇1.谈谈你对面向对象编程三大特性的理解?封装:将数据和操作封装在类中,通过访问修......
  • HTTP 常见状态码解析
    HTTP常见状态码解析文章目录HTTP常见状态码解析一、引言二、1XX信息性状态码(一)100Continue(二)101SwitchingProtocols三、2XX成功状态码(一)200OK(二)201Created(三)204NoContent四、3XX重定向状态码(一)301MovedPermanently(二)302Found(曾经也叫302MovedTempor......
  • python给excel单元格批量生成超链接(panda+openpyxl)
    最近做些数据处理,要给Excel表单元格根据规则批量生成超链接,VBA看起来好麻烦,就还是用python处理了,选了一圈发现panda+openpyxl能较好满足需求。我需要根据表格1的【代码】【名称】列,调用函数生成链接到新表格的【链接1】【链接2】列:源文件:目标文件(含有链接):直接上代码。......
  • 大模型训练实战经验总结:从入门到精通,全方位解析模型训练中的关键步骤与技巧
    在当今AI技术飞速发展的背景下,定制化大模型的自主训练已成为满足特定行业需求、保障数据安全、提升模型应用效能的关键途径。本文将深度剖析这一过程的核心价值与实践智慧,从数据隐私保护、模型透明度增强,到数据预处理的精细操作,特别是数据配比在维持模型通用性与垂类能力平......
  • html哪个标签属性可以通过预解析DNS?
    <linkrel="dns-prefetch"href="//example.com">可以用来预解析DNS。这个标签放在HTML的<head>部分,告诉浏览器在空闲时间预先解析指定域名的DNS记录。这样,当用户实际点击指向该域名的链接时,DNS解析已经完成,可以加快页面加载速度。例如,如果你的页面有很多链接指向exa......
  • 说说如果a链接href=""(空)时点击时会有什么表现?
    当一个<a>链接的href属性为空字符串(href="")时,点击它的表现取决于浏览器以及一些细微的差别,但总体来说,它不会像正常的链接那样跳转到新的页面或资源。具体表现可能有以下几种:刷新当前页面:这是最常见的行为。点击链接会重新加载当前页面,就像你点击了浏览器的刷新按钮一样。......
  • 在a标签中,怎样防止链接跳转?
    在a标签中防止链接跳转,你可以使用以下几种方法:#(Hash/Anchor):这是最简单的方法。将href属性设置为#或javascript:void(0);。#:这会在点击链接时跳转到页面顶部,如果页面没有锚点,则不会有任何可见的变化。如果链接指向一个页面内的锚点(例如#section1),则会跳转到该锚......