From 1dcc774e04b9560c50a4c3c10e2c4489857ec39d Mon Sep 17 00:00:00 2001 From: ptjqfmxk9 <7162990@qq.com> Date: Sun, 17 Apr 2022 14:01:22 +0800 Subject: [PATCH] ADD file via upload --- get_m3u8.py | 100 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 get_m3u8.py diff --git a/get_m3u8.py b/get_m3u8.py new file mode 100644 index 0000000..9ff8aba --- /dev/null +++ b/get_m3u8.py @@ -0,0 +1,100 @@ +import selenium +import time +import requests +from requests import utils +from selenium import webdriver +from selenium.webdriver.common.by import By +from selenium.webdriver.chrome.options import Options + +# 创建Chrome浏览器的一个Options实例对象 +chrome_options = Options() + +# 设置chrome禁用图片的相关设置 +prefs = { + 'profile.default_content_setting_values': { + 'images': 2, # 屏蔽图片 + 'notifications': 2, # 屏蔽消息推送 + 'stylesheet': 2, # 屏蔽css + } +} +chrome_options.add_experimental_option("prefs", prefs) +chrome_options.add_experimental_option('excludeSwitches', ['enable-automation']) # 设置为开发者模式,避免被识别 +# chrome_options.add_argument('--headless') # 设置无界面模式 +driver = webdriver.Chrome(options=chrome_options) + + +# cookie转字典格式 +def cookie_to_dic(cookie): + cookie_dic = {} + cookie = cookie.split(';') + for i in cookie: + if i == '': + continue + split_list = i.split('=', 1) + cookie_dic[split_list[0]] = split_list[1] + return cookie_dic + + +# cookie处理 获取 vusession +def sign_in(): + login_headers = { + 'Referer': 'https://v.qq.com', + 'Cookie': 'RK=YX0UEQuQc+; ptcz=d40f025b92495b40d3fc0d5056517dfeebbff8614231422b7d7af2b8f0e60d41; ' + 'pgv_pvid=7446353280; tvfe_boss_uuid=be8e9187cfa98741; video_guid=c01ade079830ba3a; ' + 'video_platform=2; _video_qq_login_time_init=1648646719; o_cookie=7162990; pac_uid=1_7162990; ' + 'pgv_info=ssid=s4323616200; _qpsvr_localtk=0.8345327357280963; ptui_loginuin=2302701417; ' + 'main_login=qq; vqq_access_token=7F7983B57D98C209C86B1783E1CF23F3; vqq_appid=101483052; ' + 'vqq_openid=422AC6FAE31853765F1390B1D76838AA; vqq_vuserid=301208119; ' + 'vqq_vusession=9HlXh7gQNyHlCEYmO6m6zA..; vqq_refresh_token=B97EB39D777C6ED019A96E45C8D5D94F; ' + 'vqq_next_refresh_time=6600; vqq_login_time_init=1649577646; login_time_init=2022-4-10 16:0:45; ' + 'login_time_last=2022-4-10 16:0:46' # 这里把cookie替换成自己的cookie,别把引号删了!! + } + login = requests.get('https://access.video.qq.com/user/auth_refresh?vappid=11059694&vsecret' + '=fdf61a6be0aad57132bc5cdf78ac30145b6cd2c1470b0cfe&type=qq&g_tk=&g_vstk=521269673&g_actk' + '=1377228769&callback=jQuery191078097906786654_1649577660499&_=1649577660500', + headers=login_headers) # 这里把auth_refres换成自己的,别把引号删了!! + cookie = requests.utils.dict_from_cookiejar(login.cookies) + sign_headers = "RK=YX0UEQuQc+; ptcz=d40f025b92495b40d3fc0d5056517dfeebbff8614231422b7d7af2b8f0e60d41; " \ + "pgv_pvid=7446353280; tvfe_boss_uuid=be8e9187cfa98741; video_guid=c01ade079830ba3a; " \ + "video_platform=2; _video_qq_login_time_init=1648646719; o_cookie=7162990; pac_uid=1_7162990; " \ + "pgv_info=ssid=s4323616200; _qpsvr_localtk=0.8345327357280963; ptui_loginuin=2302701417; " \ + "main_login=qq; vqq_access_token=7F7983B57D98C209C86B1783E1CF23F3; vqq_appid=101483052; " \ + "vqq_openid=422AC6FAE31853765F1390B1D76838AA; vqq_vuserid=301208119; vqq_vusession= " + temp = cookie['vqq_vusession'] + sign_headers = sign_headers + temp + x_cookie = cookie_to_dic(sign_headers) + return x_cookie + + +def run_js(): + js0 = 'document.getElementsByClassName("txp_menuitem")[1].click()' # 切换清晰度 + js1 = 'return PLAYER._DownloadMonitor.context.dataset.title,' \ + 'PLAYER._DownloadMonitor.context.dataset.ckc?PLAYER._DownloadMonitor.context.dataset.currentVideoUrl:PLAYER' \ + '._DownloadMonitor.context.dataset.currentVideoUrl.replace(/:.*qq.com/g,' \ + '"://defaultts.tc.qq.com/defaultts.tc.qq.com") ' # 获取m3u8地址 + from_url = 'https://v.qq.com/x/cover/mzc00200iw8qib0.html' + driver.get(from_url) + cookie = sign_in() + + print("cookie:", cookie) + # set up cookie 将cookie导入网页 + for i in cookie: + name = i.strip(" ").strip("\n") + values = cookie[i].strip(" ").strip("\n") + print(name, ":", values) + driver.add_cookie({"name": name, "value": values}) + time.sleep(3) + print(driver.get_cookies()) + driver.refresh() + driver.execute_script(js0) + time.sleep(3) + print(driver.execute_script(js1)) + + +if __name__ == '__main__': + run_js() + + +# flask/fastapi +# 参考一些开源项目 +# 写一些解析各大网站视频/音乐的接口