zoukankan      html  css  js  c++  java
  • 记录一下爬取微信小程序视频的过程!

    一个老年朋友在微信小程序中学习弹钢琴,昨天他告诉我,他喜欢的一个老师即将下线,以后看不到他的视频,希望我能下载保存。好的我试试吧!

    1、打开小程序,一看是个直播的,不过可以回放。嗯,先弄到电脑上打开抓包分析一下。微信PC版登起,点开小程序.......没反映,打不开,百度,结果就是部分小程序不支持PC端打开,好另外想办法。

    2、突然想起我的iKuai软路由可以抓包,好的开始,进入路由开始对手机的IP进行抓包,然后用wireshark分析抓到包,好顺利得到m3u8的播放列表。打开列表一看,20秒一段,1分钟一个ts文件

    2644716208_1968568419_1.ts?start=0&end=372427&type=mpegts&resolution=544x960
    #EXT-X-PROGRAM-DATE-TIME:2020-09-28T10:27:04+08:00
    #EXTINF:2.025,
    2644716208_1968568419_1.ts?start=372428&end=756135&type=mpegts&resolution=544x960
    #EXT-X-PROGRAM-DATE-TIME:2020-09-28T10:27:06+08:00
    #EXTINF:2.007,
    2644716208_1968568419_1.ts?start=756136&end=1117283&type=mpegts&resolution=544x960
    #EXT-X-PROGRAM-DATE-TIME:2020-09-28T10:27:08+08:00
    #EXTINF:2.025,
    2644716208_1968568419_1.ts?start=1117284&end=1482567&type=mpegts&resolution=544x960
    #EXT-X-PROGRAM-DATE-TIME:2020-09-28T10:27:10+08:00
    #EXTINF:2.018,
    

      解析出来的下载连接重复名很多,打开VS,用C#筛选吧!直接WinFrom简单

      private void button1_Click(object sender, EventArgs e)
            {
                OpenFileDialog fileDialog = new OpenFileDialog();
    
                fileDialog.InitialDirectory = "C:\";    //打开对话框后的初始目录
                fileDialog.Filter = "文本文件|*.m3u8|所有文件|*.*";
                fileDialog.RestoreDirectory = false;    //若为false,则打开对话框后为上次的目录。若为true,则为初始目录
                if (fileDialog.ShowDialog() == DialogResult.OK)
                    label1.Text = System.IO.Path.GetFullPath(fileDialog.FileName);//将选中的文件的路径传递给TextBox “FilePath”
    
            }
    
            private void button2_Click(object sender, EventArgs e)
            {
                richTextBox1.Text = "";
                List<string> vok = new List<string>();
                if (label1.Text == null || label1.Text == "")
                {
                    MessageBox.Show("请先选择m3u8播放列表文件");
                }
                if (textBox1.Text == null || textBox1.Text == "")
                {
                    MessageBox.Show("请输入http连接");
                }
                else
                {
                    foreach (string str in System.IO.File.ReadAllLines(label1.Text, Encoding.Default))
                    {
                        if (str.Contains("?start"))
                        {
                            //删除?start后所有字符串(菜鸟级别)
                            string str2 = Regex.Unescape(str);
                            int index = str2.IndexOf("?start");
                            str2 = str2.Remove(index);
                            //richTextBox1.Text = richTextBox1.Text + "
    " + str2;
                            string str3 = str2 + "
    ";
                            vok.Add(str2);
                        }
                    }
                }
                HashSet<string> hs = new HashSet<string>(vok); //此时已经去掉重复的数据保存在hashset中
    
                foreach (string item in hs)
                {
    
                    richTextBox1.Text =@"http://"+textBox1.Text+ item.ToString() + "
    " + richTextBox1.Text;
                }
            }
    

      3、拿到所有TS文件真实下载地址,导入迅雷开始下载。

    4、百度找到一个ReNamer软件可以批量改名,支持关键字前后删除,正合适,去掉文件名无用字符串,只保留顺序字符。

    5、百度找到一个“ts合并工具",软件很小,很方便。

    自此大功告成。

  • 相关阅读:
    你是一直认为 count(1) 比 count(*) 效率高么?
    php 判断是不是https链接
    php 版本比较
    php 执行效率
    redis 队列缓存 + mysql 批量入库 + php 离线整合
    php 高并发下数据同步的问题
    一个合格的工程师的知识结构
    php 代码编写的格式
    php 四种基础算法 ---- 快速排序法
    php 四种基础算法 ---- 插入排序法
  • 原文地址:https://www.cnblogs.com/kismet82/p/14124763.html
Copyright © 2011-2022 走看看