1. 程式人生 > 實用技巧 >記錄一下爬取微信小程式視訊的過程!

記錄一下爬取微信小程式視訊的過程!

一個老年朋友在微信小程式中學習彈鋼琴,昨天他告訴我,他喜歡的一個老師即將下線,以後看不到他的視訊,希望我能下載儲存。好的我試試吧!

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 + "\r\n" + str2;
                        string str3 = str2 + "\r\n";
                        vok.Add(str2);
                    }
                }
            }
            HashSet<string> hs = new HashSet<string>(vok); //此時已經去掉重複的資料儲存在hashset中

            foreach (string item in hs)
            {

                richTextBox1.Text =@"http://"+textBox1.Text+ item.ToString() + "\r\n" + richTextBox1.Text;
            }
        }

  3、拿到所有TS檔案真實下載地址,匯入迅雷開始下載。

4、百度找到一個ReNamer軟體可以批量改名,支援關鍵字前後刪除,正合適,去掉檔名無用字串,只保留順序字元。

5、百度找到一個“ts合併工具",軟體很小,很方便。

自此大功告成。