童年原是一生最美妙的阶段,那时的孩子是一朵花,也是一颗果子,是一片懵懵懂懂的聪明,一种永远不息的活动,一股强烈的欲望。——巴尔扎克
现在位置:首页 > 资源宝库 > 技术教程 > 看菜鸡如何搞定50块钱1条的视频

看菜鸡如何搞定50块钱1条的视频

绿色资源网  技术教程  2021-9-29  246  0评论
    <link rel="stylesheet" href="https://csdnimg.cn/release/blogv2/dist/mdeditor/css/editerView/ck_htmledit_views-1a85854398.css">

仅限于学习交流,请勿用于非法用途,否则产生的后果与本人无关!

还有,年轻人请培养高尚的情操

周末晚上,看到群里这么一条消息

 心想这他喵的什么娇贵视频,还值50块钱1条,所以就好奇点击了链接看了下

好家伙,差点流鼻血了

 这少儿不宜的画面,,,,,,

后来发布这个信息的兄弟马上就被群主给踢了,给群主点赞,哈哈哈哈

随便点点发现基本上都是会员才能观看,比较好奇,想着看能不能找找什么bug之类的,就有了下面的故事

首先是要登录,这里就随便注册了一个账号(这里注册账号是需要用到邮箱,但是他没有进行验证,因此随便输入个邮箱便完成了注册)

发现基本上都是要充钱才能观看:

点击试看也只有大约30秒左右的时间:

然后在点击试看的时候抓包发现有趣的参数:

 这里有个segments,据我所知,中文意思是片段,那就把它改空,然后发过去

我去,就很离谱。。。。。

好的,50块钱1条的视频就免费搞定了。

我以为我要收工了,突然发现,这是没有下载链接的,想到最近学习的爬虫,就兴趣来了研究研究是如何下载

百度一下发现这种是动态加载ts文件来显示,请求完不停的加载ts片段来执行播放动作

 因此重新编辑请求重发,修改segments参数

 可以看到响应的文件大小不一样了,已经加载出了全部的ts 片段地址

但是下载单个ts文件后发现内容被加密了,无法直接播放,可以看出这里是加密了的,但是这里的key的地址却暴露了

 接着就是批量下载并解密,然后将所有的解密后ts文件进行合并

# 作者:juju
# 日期:2021/9/27 18:57
import os
import requests
from Cryptodome.Cipher import AES

def get_ts_key(url):
    # 获取ts片段和key
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.2; Win64; x64; rv:92.0) Gecko/20100101 Firefox/92.0',
        'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
        'Accept-Language': 'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2',
        'Connection': 'keep-alive',
        'Upgrade-Insecure-Requests': '1',
        'Sec-Fetch-Dest': 'document',
        'Sec-Fetch-Mode': 'navigate',
        'Sec-Fetch-Site': 'none',
        'Sec-Fetch-User': '?1',
    }
    response = requests.get(url=url, headers=headers)
    return response.content

if __name__ == '__main__':

    url = '*********************************'
    # 解析获取的m3u8文件
    with open(r'C:\Users\juju\Desktop\result.txt', 'rb+') as f:
        txt = f.readlines()
        f.close()
    os.chdir(r'C:\Users\juju\Desktop\new')
    urls = []
    key = ''
    # 下载key并初始化解密
    for line in txt:
        # print(type(line))
        if 'URI' in line.decode():
            key = line.decode().split(',')[1].split('"')[1]
            key = get_ts_key(url+key)
            cryptor = AES.new(key=key, mode=AES.MODE_CBC)
            break
    # 提取全部ts链接
    for line in txt:
        if line.decode()[0] == '/':
            urls.append(line.decode().replace('\r\n', ''))
    # 将全部提取的ts链接写到本地
    for i, line in enumerate(urls[:40]):
        with open(str(i + 1) + '.ts', 'wb') as file:
            file.write(cryptor.decrypt(get_ts_key(url+line)))  # 将解密后的视频写入文件
            print('正在写入第{}个文件'.format(i + 1))
    # 将全部ts片段写入本地mp4文件
    target = open(r'C:\Users\juju\Desktop\new.mp4', "ab+")
    # 依次将数据写入目标文件
    for i, temp in enumerate(os.listdir(r'C:\Users\juju\Desktop\new')):
        print('正在合并第{}个文件'.format(i + 1))
        temp_file = open(str(i+1) + '.ts', "rb+")
        target.write(temp_file.read())
        temp_file.close()
    target.close()

因为只是测试代码,所以就限定了部分片段

 

 

可以看到全部已经合成完毕

结束

本次记录仅用来探讨学习相关技术,请勿从事其他非法活动。

评论一下 分享本文 联系站长
绿色资源网
看完文章就评论一下!
挤眼 亲亲 咆哮 开心 想想 可怜 糗大了 委屈 哈哈 小声点 右哼哼 左哼哼 疑问 坏笑 赚钱啦 悲伤 耍酷 勾引 厉害 握手 耶 嘻嘻 害羞 鼓掌 馋嘴 抓狂 抱抱 围观 威武 给力
提交评论

清空信息
关闭评论