栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

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

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

看菜鸡如何搞定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:UsersjujuDesktopresult.txt , rb ) as f:
 txt f.readlines()
 f.close()
 os.chdir(r C:UsersjujuDesktopnew )
 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( rn , ))
 # 将全部提取的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:UsersjujuDesktopnew.mp4 , ab )
 # 依次将数据写入目标文件
 for i, temp in enumerate(os.listdir(r C:UsersjujuDesktopnew )):
 print( 正在合并第{}个文件 .format(i 1))
 temp_file open(str(i 1) .ts , rb )
 target.write(temp_file.read())
 temp_file.close()
 target.close()
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/267690.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号