记录一下爬取微信小程序视频的过程!
一个老年朋友在微信小程序中学习弹钢琴,昨天他告诉我,他喜欢的一个老师即将下线,以后看不到他的视频,希望我能下载保存。好的我试试吧!
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合并工具",软件很小,很方便。
自此大功告成。