仅限于学习交流,请勿用于非法用途,否则产生的后果与本人无关!
还有,年轻人请培养高尚的情操
周末晚上,看到群里这么一条消息
心想这他喵的什么娇贵视频,还值50块钱1条,所以就好奇点击了链接看了下
好家伙,差点流鼻血了
这少儿不宜的画面,,,,,,
后来发布这个信息的兄弟马上就被群主给踢了,给群主点赞,哈哈哈哈
随便点点发现基本上都是会员才能观看,比较好奇,想着看能不能找找什么bug之类的,就有了下面的故事
首先是要登录,这里就随便注册了一个账号(这里注册账号是需要用到邮箱,但是他没有进行验证,因此随便输入个邮箱便完成了注册)
发现基本上都是要充钱才能观看:
点击试看也只有大约30秒左右的时间:
然后在点击试看的时候抓包发现有趣的参数:
这里有个segments,据我所知,中文意思是片段,那就把它改空,然后发过去
我去,就很离谱。。。。。
好的,50块钱1条的视频就免费搞定了。
我以为我要收工了,突然发现,这是没有下载链接的,想到最近学习的爬虫,就兴趣来了研究研究是如何下载
百度一下发现这种是动态加载ts文件来显示,请求完不停的加载ts片段来执行播放动作
因此重新编辑请求重发,修改segments参数
可以看到响应的文件大小不一样了,已经加载出了全部的ts 片段地址
但是下载单个ts文件后发现内容被加密了,无法直接播放,可以看出这里是加密了的,但是这里的key的地址却暴露了
接着就是批量下载并解密,然后将所有的解密后ts文件进行合并
# 作者:juju# 日期:2021/9/27 18:57import osimport requestsfrom Cryptodome.Cipher import AESdef 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.contentif __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()
因为只是测试代码,所以就限定了部分片段
可以看到全部已经合成完毕
结束
本次记录仅用来探讨学习相关技术,请勿从事其他非法活动。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/121546.html
摘要:如何选择稳定的和实用的空间是每个消费者心中最满意产品。三网页制作上面两步做好之后最重要的就是如何规划好自己的网站做个好的网站。 现在制作一个网站已经越来越容易了,只要知道清晰的流程之后都是可以很快的建好一个企业或者个人网站的!免费的建站程序很多,下面听哥给你亮出来,建站一般来说分主要有这四步:申请域名、申请虚拟主机、制作网页,网站宣传推广! 一;域名注册 选个好的域名是一个成功网站的开...
摘要:租用海外服务器要多少钱关键在于你的网站类型像普遍的个人网站或是仅做展示型的企业网站,需要的配置不需要太高,早期可以使用海外云服务器,年下来可能也就一两千,再简单些的,几百元就能搞定。 近些年,互联网获客成本也越来越高,再加上新冠疫情对线下实体行业的严厉打击,线上获客成本中的海外服务器成本更加引人注意。影响到海外服务器租用价格的基本原因便是配置了,随后便是海外服务...
摘要:与类型库相比,设计模式是一个更为普遍的概念。是在年,由建筑设计大师亚力山大建筑的永恒之道描述模式是一条由三部分组成的通过规则它表示了一个特定环境一类问题和一个解决方案之间的关系。设计模式是在这方面开始探索的一块里程碑。 设计模式并非类库 为了方便地编写java程序,我们会使用类库,但设计模式不是类库。 与类型库相比,设计模式是一个更为普遍的概念。类库是由程序组合...
摘要:为啥你天天刷抖音一点都不烦,因为你觉得视频好看你有兴趣啊。比如我们说你玩是不是要开始搭建一个自己的网站,是不是可以自己写一个小的脚本来自动发消息给你的女朋友等等,通过这样的小例子来慢慢的培养自己的学习的兴趣。学习,切勿贪快贪多。 大家好,我是菜鸟哥! 周末啦,跟大家聊一下我们粉丝团的情况...
摘要:不过最大的好处就是用在流体布局上,可以通过计算得到元素的宽度。于是,就是浏览器滚动条的宽度大小如果有,如果没有滚动条则是左右都有一个滚动条宽度或都是被占用,主体内容就可以永远居中浏览器啦,从而没有任何跳动参考的使用 什么是calc()? calc()从字面我们可以把他理解为一个函数function。其实calc是英文单词calculate(计算)的缩写,是css3的一个新增的功能,用来...
阅读 2119·2023-04-26 02:19
阅读 1912·2021-11-19 09:40
阅读 1703·2021-09-29 09:35
阅读 3573·2021-09-29 09:34
阅读 4296·2021-09-07 10:16
阅读 5529·2021-08-11 11:14
阅读 3578·2019-08-30 15:54
阅读 1628·2019-08-30 15:53