記錄一下爬取微信小程式視訊的過程!
阿新 • • 發佈:2020-12-12
一個老年朋友在微信小程式中學習彈鋼琴,昨天他告訴我,他喜歡的一個老師即將下線,以後看不到他的視訊,希望我能下載儲存。好的我試試吧!
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合併工具",軟體很小,很方便。
自此大功告成。