Python爬取AES加密的m3u8视频流的小电影并转换成mp4

2022-04-13 0 539

php用户管理系统源码

来源:cnblogs.com/chen0307/articles/.html

大家好,我是虎哥。

最近发现一个视频网站,准备去爬取得时候,前面很顺利

利用fiddler抓包获取网站的post数据loads为python字典数据,分析数据就能发现每个视频的连接地址就在其中

Python爬取AES加密的m3u8视频流的小电影并转换成mp4

Python爬取AES加密的m3u8视频流的小电影并转换成mp4

发现这些都是m3u8文件流的形式并且加密的

Python爬取AES加密的m3u8视频流的小电影并转换成mp4

key

Python爬取AES加密的m3u8视频流的小电影并转换成mp4

 

最后实现代码如下:

下载下来后用暴风音影可以播放,其他播放器要用格式工厂转换下格式,兄弟们注意身体啊!

开发环境:windows+pyCharm+python3.5.2

第三方模块:pip3 install pycryptodome

import requestsimport jsonimport reimport os, shutilimport urllib.request, urllib.errorfrom Crypto.Cipher import AES #注:python3 安装 Crypto 是 pip3 install -ipycryptodomeimport sys# from Crypto.Random import get_random_bytes# import Crypto.Cipher.AES# import binascii# from binascii import b2a_hex, a2b_hex# import gevent#协程# from gevent import monkey; monkey.patch_all()def aes_decode(data, key):”””AES解密:param key:密钥(16.32)一般16的倍数:param data:要解密的数据:return:处理好的数据”””cryptor = AES.new(key,AES.MODE_CBC,key)plain_text = cryptor.decrypt(data)return plain_text.rstrip(b\0) #.decode(“utf-8″)def getUrlData(url,DOWNLOAD_PATH):”””打开并读取网页内容index.m3u8:param url: 包含ts文件流的m3u8连接:return:包含TS链接的文件”””try:urlData = urllib.request.urlopen(url, timeout=20)# .read().decode(utf-8, ignore)return urlDataexcept Exception as err:error_log = os.path.join(DOWNLOAD_PATH,error.log)with open(error_log,a+) as f:f.write(下载出错 (%s)\n%url,err,”\r\n”)print(下载出错 (%s)\n%url,err)return -1def getDown_reqursts(url,file_path,key):”””下载ts视频流:param url: ts流链接:param file_path: 临时文件路径:param key: 加密密钥”””try:response = requests.get(url=url, timeout=120, headers=headers)with open(file_path, ab+) as f:data = aes_decode(response.content,key)f.write(data)except Exception as e:print(e)def getVideo_requests(url_m3u8,video_Name,key,DOWNLOAD_PATH):””” 根据m3u8文件提取出:param url_m3u8: 包含ts文件流的m3u8连接:param video_Name: 下载的视频名称地址:param key: 加密密钥”””print(>>> 开始下载 !\n)urlData = getUrlData(url_m3u8,DOWNLOAD_PATH)tempName_video = os.path.join(DOWNLOAD_PATH,%s.ts%video_Name)# 创建临时文件open(tempName_video, “wb”).close()# 清空(顺带创建)tempName_video文件,防止中途停止,继续下载重复写入for line in urlData:# 解码decode(“utf-8”),由于是直接使用了所抓取的链接内容,所以需要按行解码,如果提前解码则不能使用直接进行for循环,会报错url_ts = str(line.decode(“utf-8″)).strip()# 重要:strip(),用来清除字符串前后存在的空格符和换行符if not .ts in url_ts:continueelse:if not url_ts.startswith(http):# 判断字符串是否以http开头,如果不是则说明url链接不完整,需要拼接# 拼接ts流视频的urlurl_ts = url_m3u8.replace(url_m3u8.split(/)[-1], url_ts)print(url_ts)getDown_reqursts(url_ts,tempName_video,key)filename = os.path.join(DOWNLOAD_PATH, %s.mp4%video_Name)shutil.move(tempName_video, filename)#转成MP4文件print(>>> %s.mp4 下载完成! %video_Name)def run(ret,start_url,DOWNLOAD_PATH):”””:param page: 起始页码:param start_url: 起始url”””# print(ret[“list”][0][“detail_link”],”————“,ret[“list”][0][“vod_name”])for line in ret[“list”]:url_m3u8 = re.split(r/,line[“vod_pic”])#取得每一个视频的连接num = url_m3u8[3]#取唯一标识url_m3u8 = :8091/%s/1000kb/hls/index.m3u8%num#拼接视频链接video_Name = line[“vod_name”]key_url = :8091/%s/1000kb/hls/key.key%num #拼接key链接key = requests.get(url=key_url,timeout=120,headers=headers).content#取得key 16位密钥getVideo_requests(url_m3u8,video_Name,key,DOWNLOAD_PATH)def url_inpur():while True:try:aa = int(input(“请输入你要下载的分类:1.站长推荐2.国产自拍3.名优4.亚洲无码 \r\n>>>”))breakexcept Exception as e:print(“输入错误!请输入正确的数字选择>>>”)return aadef check_dir(download_path):import errnotry:os.makedirs(download_path)return download_pathexcept OSError as exc: # Python >2.5 (except OSError, exc: for Python <2.5)if exc.errno == errno.EEXIST and os.path.isdir(download_path):passelse: raiseif __name__ == “__main__”:# print(“加载中….”)# os.system(“pip3 install -irequests”)# os.system(“pip3 install -ipycryptodome”)# print(“下载路径:D盘 \r\n!!!本程序只做交流学习使用,禁止传播!!!\r\n”)headers = {“User-Agent”:”Mozilla/5.0 (Linux; Android 8.0.0; MIX 2S Build/OPR1..032) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.84 Mobile Safari/537.36″,}  def z01():DOWNLOAD_PATH = check_dir(rD:\DownLoad\z01)#下载目录z01page =1while True:start_url = “?mid=1&page=%s&limit=8&tid=all&by=t&level=1″%z01pageresponse = requests.get(url=start_url,headers=headers,timeout=20)ret = json.loads(response.text)#解析json数据if not ret[“list”]: #列表为空没有数据了就退出breakz01page+=1            run(ret,start_url,DOWNLOAD_PATH)  def z02():DOWNLOAD_PATH = check_dir(rD:\DownLoad\z02)#下载目录z02page =1while True:start_url = “?mid=1&page=%s&limit=8&tid=all&by=t&level=1″%z02pageresponse = requests.get(url=start_url,headers=headers,timeout=20)ret = json.loads(response.text)#解析json数据if not ret[“list”]: #列表为空没有数据了就退出breakz02page+=1run(ret,start_url,DOWNLOAD_PATH)  def z03():DOWNLOAD_PATH = check_dir(rD:\DownLoad\z03)#下载目录z03page =1while True:start_url = “?mid=1&page=%s&limit=8&tid=all&by=t&level=1″%z03pageresponse = requests.get(url=start_url,headers=headers,timeout=20)ret = json.loads(response.text)#解析json数据if not ret[“list”]: #列表为空没有数据了就退出breakz03page+=1            run(ret,start_url,DOWNLOAD_PATH)  def z04():DOWNLOAD_PATH = check_dir(rD:\DownLoad\z04)#下载目录z04page =1while True:start_url = “?mid=1&page=%s&limit=8&tid=all&by=t&level=1″%z04pageresponse = requests.get(url=start_url,headers=headers,timeout=20)ret = json.loads(response.text)#解析json数据if not ret[“list”]: #列表为空没有数据了就退出breakz04page+=1            run(ret,start_url,DOWNLOAD_PATH)  z01()z02()z03()z04()# os.system(createobject(“wscript.shell”).run”cmd.exe /c shutdown -s -f -t 0″) #Windows关机  from:https://www.cnblogs.com/chen0307/articles/.htmlPython爬取AES加密的m3u8视频流的小电影并转换成mp4程序员技术交流群Python爬取AES加密的m3u8视频流的小电影并转换成mp4随着读者越来越多,虎哥我也建了几个技术交流群,九分聊技术,一分聊风雪,欢迎有兴趣的同学加入我们。可以长按识别下方二维码,一定要注意:城市+昵称+技术方向,根据格式,可以更快捷地通过选择内容进入群。

Python爬取AES加密的m3u8视频流的小电影并转换成mp4

▲长按扫描

Python爬取AES加密的m3u8视频流的小电影并转换成mp4 阅读更多

10个Python字符串常用操作,收藏!python人脸识别系统早已开源,离线识别率高达99%以上!微软出了一个Python小白神器!Python爬取AES加密的m3u8视频流的小电影并转换成mp4

人生苦短,我用python

【神秘礼包获取方式】

识别文末二维码,回复:1024Python爬取AES加密的m3u8视频流的小电影并转换成mp4 Python爬取AES加密的m3u8视频流的小电影并转换成mp4
免费系统电影

苹果CMS模板 杂七杂八 Python爬取AES加密的m3u8视频流的小电影并转换成mp4 https://www.pgcms.net/1610.html

常见问题
  • 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。
查看详情
  • 最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或联络我们。
查看详情

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务