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

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

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

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

 心想这他喵的什么娇贵视频,还值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()



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

 

 

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

结束

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

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 13
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值