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

浙公网安备 33010602011771号