本帖最后由 话痨司机啊 于 2023-3-19 15:23 编辑
前言
蓝光影视还是不错的网站(www.lgyy.vip),电影电视剧都还算高清。原先的代码已经不能用了,新的蓝光影视加入了反调试和m3u8地址加密;以下为更新后的代码。
声明
软件仅供学习交流使用,禁止商业使用,禁止用来做危害网络安全的事情,因错误使用造成的危害由使用者负责。
使用方法
解压缩后文件夹内urls.txt,打开后每行添加一个地址即可按顺序下载
注意
本人非代码使用者,只是写出来,未经测试,遇到bug请平台留言,欢迎各位互相交流,共同进步。
下载
- 一共是两个版本,源码和打包好的程序,修改完地址双击程序运行即可。
- 运行环境Python3.913 && win10
点此下载 提取码:f9qD
核心代码:
[Python] 纯文本查看 复制代码 import base64
import json
import re
import time
from pathlib import Path
from urllib import parse
import requests
from hm3u8dl_cli import m3u8download
from loguru import logger
from lxml import etree
from urllib3 import disable_warnings
disable_warnings()
if not Path('logs').exists(): Path('log').mkdir(parents=True, exist_ok=True)
logger.add(f'logs/bluelog_{time.strftime("%Y%m%d_%H%M%S", time.localtime())}.log', level='INFO')
class BlueSpider:
def __init__(self, url):
self.url = url
self.headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36 Edg/111.0.1661.44',
'Host': 'www.lgyy.vip'
}
def get_html(self):
res = requests.get(self.url, headers=self.headers, verify=False)
res.encoding = 'utf-8'
return res.text
def parse_html(self, html):
# 解析网页,获取所有的标签
logger.info('开始解析网页')
selector = etree.HTML(html)
# 所有的标签
tags = selector.xpath('//div[@class="player-box-main"]//script/text()')
for i in tags:
if i.startswith('var player_aaaa'):
# 将Unicode转换为中文
_unicode = i.encode('utf8')
rx = _unicode.decode("unicode_escape")
rx = parse.unquote(rx)
rx = json.loads(rx.replace('var player_aaaa=', ''))
title = rx.get('vod_title')
_url = rx.get('url')
return title, _url
# 再次请求
def get_html_again(self, url):
url = f'https://www.lgyy.vip/static/player/ffzy.php?url={url}'
response = requests.request("GET", url, headers=self.headers, verify=False)
base64_url = re.findall(r'var\surl.*?;', response.text)[1]
return base64_url[12:-2]
def decode_url(self, _url):
logger.info(f'开始解析{_url}')
xz = base64.b64decode(bytes(_url[8:], encoding='utf-8'))
logger.info(f'解析完成后地址{xz.decode()[8:-8]}')
return xz.decode()[8:-8]
def downlaod_m3u8(self, title, m3u8_url):
logger.info(f'准备下载{title}')
m3u8download(m3u8_url, title)
logger.info(f'下载完成!')
@logger.catch
def run(self):
title, _url = self.parse_html(self.get_html())
base64_url = self.get_html_again(_url)
m3u8_url = self.decode_url(base64_url)
self.downlaod_m3u8(title, m3u8_url)
if __name__ == '__main__':
# 测试
target_url = "https://www.lgyy.vip/vodplay/84617-1-1.html"
BlueSpider(target_url).run()
效果图:
|