TamperMonkey脚本开发_无限制视频提取

背景

已购课程下载 ,在提取m3u8视频时,视频缓存使用ASE加密 以及VI偏移量等等,由于对这方面了解并不多.不知道如何提取到真实的地址

通过几种方式 嗅探 抓包 控制台监控 都无法获取到 IDM的视频下载由于法律原因无法下载该ts文件 但是这些ts都是分段的 就算下载了 我自己也无法有好的方案提取

分析

在这里插入图片描述
查看这个请求地址 token 以及一串编码 好像是base64
在这里插入图片描述
解码查看也没什么有用的信息 关键一获取就再打开就会直接

the source host is forbidden

方案放弃

结果

了解到凡是网页视频 在谷歌底层下必定能获取到二进制流文件 原理基本就是通过缓冲的数据提取出来就能直接获得
在greasyFork 找到了无限制下载器 感谢这位老哥的分享@dabaisuv

获取到视频二进制流和音频二进制流 转码都为.MP4文件

再通过ffmpe的命令进行合成

自动批量

这样的脚本只能实现单个视频的下载 我的需求需要进行500个视频 平均每个视频时长半小时的 如果进行手动操作 必将是一个流水线般的工作

由于个人对前端了解不是很多 jQuery也无多的了解 使用纯dom方式编写脚本

个人以拙劣的编写技术 抛砖引玉

// ==UserScript==
// @name         Download Water
// @namespace    使用说明网址
// @version      2.0
// @description  自动(描述)
// @author       zavay
// @match        *://*/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=baidu.com
// @grant        none
// ==/UserScript==

(function() {
    
    
    'use strict';
    // }
    /**
     * 1.首次执行
     */
    console.log('开始执行!');
    //首次加载
    document.querySelector(".chapter_v_1471648 i").click();
    //自动播放视频
    document.querySelector("video").autoplay = true;
    //倍速 10倍速
    //document.querySelector("#qq_player_html5_api").playbackRate = 10;

    //运行第几个视频
    let classNum = 1 ;
    console.log("正在播放第"+classNum+"个课~");


    /**
     * 2.定时器用来循环判断进度条 缓冲完毕就点击下一章
     */
     let DSQ = window.setInterval(function(){
    
    
        //监控缓冲进度条
        let load = document.querySelector(".vjs-load-progress").style.width;
        console.log("缓冲进度: "+load);
        //当缓冲完毕时
        if(load == "100%"){
    
    
            //点击下一章
            document.querySelector(".chapter_tool .c1").click();

        }else{
    
    
            //改动进度值的时候需要暂停才能移动
            //所以我们先来个暂停
            //暂停
            //document.querySelector("video").pause();
            if(document.querySelector("video").paused === false){
    
    
                //暂停
                document.querySelector(".vjs-control-bar button").click();
            }
            //获取视频总时长
            let allTime = document.querySelector("video").duration
            //console.log(document.querySelector("video").paused);

            //改动进度值
            let hcNStr = load.split("%")[0]; //20%
            let jdN = parseInt(+hcNStr-1);//15
            let buffBFB = jdN*0.01;
            let buffTime = parseInt(allTime*buffBFB);


            let jdNStr = jdN+"%";
            console.log("跟上进度"+jdN);

            if(document.querySelector("video").paused === true){
    
    

                //跟进度 跟上一点缓冲时间
                document.querySelector("video").currentTime = buffTime;

               //document.querySelector(".vjs-slider-bar").style.width = jdNStr;

                //跟上进度之后然后恢复播放
                document.querySelector(".vjs-control-bar button").click();

            }
        }

    },10000);



    /**
     * 3.监听器用来 点击之后打印第几门课 并播放
     */
    //监听器方法
    let JTQmethod =function(){
    
    
        //第几个视频了
        classNum++;
        console.log("正在播放第"+classNum+"个课~");
        // //点击播放按钮
        // document.querySelector(".vjs-button-icon").click();
        //自动播放视频
        document.querySelector("video").autoplay = true;
    }
    //监听器执行
    document.querySelector(".chapter_tool .c1").addEventListener('click',JTQmethod);


})();

猜你喜欢

转载自blog.csdn.net/zavay/article/details/127249609
今日推荐