使用Fiddler Classic抓包工具批量下载音频资料
1. 通过F12开发者工具,下载音频文件
浏览器打开音频列表->F12快捷键->网络->媒体,播放一个音频文件,右边媒体下生成一个音频文件,右击“在新标签页中打开”,可以下载这个音频文件。

2.通过Fiddler Classic抓包工具批量下载音频资料
每播放一个音频文件,页面就会向服务端发送一个get请求。浏览器打开get请求的URL地址,可下载这个音频文件。

播放了多个音频文件,页面发送多个get请求,我们现在通过Fiddler Classic抓包工具获取这多个get请求的URL地址,然后通过程序批量下载这些文件。

1) 下载Fiddler Classic工具,下载地址:Download Fiddler Web Debugging Tool for Free by Telerik
2)开启接收https请求
Fiddler Classic默认不接收https请求,需要开启一下。 Tools->Options->HTTPS

3)点击左下角,开启/关闭抓包。 显示“Capturing”为开启状态,显示空白为关闭状态。



4)点击“Remove all” 可清理抓取到的所有请求。

5)Fiddler Classic开启抓包-> 播放音频


Fiddler Classic抓取到音频播放的get请求,其中“audio/mp4”格式的请求数据,为想要获取到的url请求地址。

6)将播放音频抓到的所有地址,复制粘贴到excel表格中

7)通过程序过滤出“audio/mp4”格式的请求,并发送get请求,自动下载音频文件。
下图是创建的winform界面:

该界面的功能的实现:
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.OleDb;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using static System.Net.WebRequestMethods;namespace Test
{public partial class DownloadMP4 : Form{public DownloadMP4(){InitializeComponent();}private void Form2_Load(object sender, EventArgs e){tbxMP4.Text = "G:\\Downloads\\";}DataTable _dtExcel = null;List<RespondModel> _list = new List<RespondModel>();private void btnExcel_Click(object sender, EventArgs e){_dtExcel = GetExcelData();}private void btnMP4_Click(object sender, EventArgs e){if (_dtExcel == null) return;string httpUrl = "https://audiopay.cos.tx.xmcdn.com";if (_dtExcel.Rows?.Count > 0){_list = new List<RespondModel>();foreach (DataRow dr in _dtExcel.Rows){if (dr["Content-Type"].ToString().Contains("mp4")){if (_list.FindIndex(p => p.URL.Split('?').First().Split('/').Last() == dr["URL"].ToString().Split('?').First().Split('/').Last()) < 0){RespondModel mod = new RespondModel();mod.URL = httpUrl + dr["URL"].ToString();//mod.ContentType = "audio/mp4";_list.Add(mod);}}}}int i = 0;if (_list.Count > 0) {foreach (RespondModel resp in _list) {string fileName = tbxMP4.Text + DateTime.Now.ToString("yyyyMMddHHmmssfff") + ".mp4";GetPostContent(resp.URL, fileName);i += 1;progressBar1.Value = i * 100 / _list.Count;}}MessageBox.Show($"下载完成!文件数:{i}");}private DataTable GetExcelData(){OpenFileDialog ofd = new OpenFileDialog();ofd.Title = "选择Excel文件";ofd.InitialDirectory = System.Windows.Forms.Application.StartupPath + "\\";ofd.Filter = "Excel文件 (*.xlsx)|*.xlsx|Excel文件 (*.xls)|*.xls|所有文件 (*.*)|*.*";ofd.RestoreDirectory = true;if (ofd.ShowDialog() == DialogResult.OK){string fileName = ofd.FileName;tbxExcel.Text = fileName;string connectionString = $"Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source = '{fileName}';Extended Properties=Excel 8.0";if (fileName.Contains("xlsx")){connectionString = $"Provider=Microsoft.Ace.OleDb.12.0; Data Source = '{fileName}';Extended Properties=Excel 12.0";}OleDbConnection conn = new OleDbConnection(connectionString);conn.Open();DataTable dtNames = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });string sql = $"select * from [{dtNames.Rows[0]["TABLE_NAME"]}]"; //[Sheet1$]OleDbDataAdapter adapter = new OleDbDataAdapter(sql, conn);DataSet ds = new DataSet();adapter.Fill(ds);conn.Close();return ds?.Tables[0];}return null;}private HttpClient _httpClient;public void GetPostContent(string url, string localSavePath){try{ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(url);myRequest.Method = "GET";myRequest.ContentType = "application/x-www-form-urlencoded";myRequest.Proxy = null;// Get responseHttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();Stream responseStream = myResponse.GetResponseStream();Stream stream = new FileStream(localSavePath, FileMode.Create);byte[] bArr = new byte[1024];int size = responseStream.Read(bArr, 0, (int)bArr.Length);while (size > 0){stream.Write(bArr, 0, size);size = responseStream.Read(bArr, 0, (int)bArr.Length);}stream.Close();responseStream.Close();}catch (System.Exception ex){throw ex;}}}public class RespondModel{public string URL { get; set; }public string ContentType { get; set; }}
}
相关文章:
使用Fiddler Classic抓包工具批量下载音频资料
1. 通过F12开发者工具,下载音频文件 浏览器打开音频列表->F12快捷键->网络->媒体,播放一个音频文件,右边媒体下生成一个音频文件,右击“在新标签页中打开”,可以下载这个音频文件。 2.通过Fiddler Classic抓…...
QT开发:基于Qt实现的交通信号灯模拟器:实现一个带有倒计时功能的图形界面应用
介绍 本文将介绍如何使用Qt框架实现一个简单的交通信号灯控制程序。本程序包括一个图形界面,显示红、黄、绿三色信号灯,并通过定时器控制信号灯的切换。同时,我们还将实现一个带有按钮的界面,用于展示信号灯的状态。 1. 安装Qt开…...
【编程基础知识】网络I/O模型详解:从阻塞到异步
引言 网络I/O模型是网络编程的核心,它们决定了应用程序如何进行读写操作以与网络进行数据交换。了解不同的网络I/O模型对于设计高效、可扩展的网络应用程序至关重要。 一、阻塞I/O(Blocking I/O) 1. 定义 阻塞调用:当应用程序…...
yolo自动化项目实例解析(六)自建UI(主窗口、预览窗口)
前面我们大致把各个代码块梳理出来了,但是还是不知道从那块开始,我们这里主要先通过ui页面的元素去推理整个执行过程,我们首先需要知道ui功能里面有那些组件 qt设计师基础控件 Qt Designer 是一个图形界面设计工具,用于创建 Qt 应…...
Unity优质教程分类汇总 【持续更新中】
以下收录的均为作者自己看过的觉得比较好的教程 基础 Unity入门: https://www.bilibili.com/video/BV1HX4y1V71E?p13 生命周期 https://docs.unity.cn/cn/2022.3/uploads/Main/monobehaviour_flowchart.svg https://zhuanlan.zhihu.com/p/551294000 编程技巧…...
真正掌握left join on 和 where 的差别
总结 用 where 是先连接然后再筛选用 on 是先筛选再连接数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,然后再将这张临时表返回给用户。在使用left jion时,on和where条件的区别如下: on条件是在生成临时表…...
神经网络在多分类问题中的应用
作者简介:热爱数据分析,学习Python、Stata、SPSS等统计语言的小高同学~个人主页:小高要坚强的博客当前专栏:Python之机器学习本文内容:神经网络在多分类问题中的应用作者“三要”格言:要坚强、要努力、要学习 目录 1. 引言 2.数据构造 3.划分数据集 4.神经网络实现多…...
nginx的安装和使用
源码安装 1.环境准备:卸载其他方式安装的web应用,防止端口冲突 2.下载nginx源码包 wget https://nginx.org/download/nginx-1.20.2.tar.gz 3.源码编译安装 yum install -y gcc pcre-devel zlib-devel #安装依赖包 useradd -M -s /sbin/nologin ngi…...
js采用覆盖键、覆盖鼠标滑动事件实现禁止网页通过 ctrl + +/- 和 ctrl + 滚轮 对页面进行缩放
一、兼容电脑端的禁止通过 ctrl /- 和 ctrl 滚轮 对页面进行缩放 const keyCodeMap {// 91: true, // command61: true,107: true, // 数字键盘 109: true, // 数字键盘 -173: true, // 火狐 - 号187: true, // 189: true, // -};二、覆盖ctrl||command ‘’/‘-’ // 覆…...
某客户Oracle RAC无法启动故障快速解决
某日,9:50左右接到好友协助需求,某个客户Oracle RAC无法启动,并发过来一个报错截图,如下: 和客户维护人员对接后,远程登录服务端进行故障分析。 查看hosts信息,首先进行心跳测试,测…...
【计算机网络 - 基础问题】每日 3 题(二十八)
✍个人博客:Pandaconda-CSDN博客 📣专栏地址:http://t.csdnimg.cn/fYaBd 📚专栏简介:在这个专栏中,我将会分享 C 面试中常见的面试题给大家~ ❤️如果有收获的话,欢迎点赞👍收藏&…...
探索甘肃非遗:Spring Boot网站开发案例
1 绪论 1.1 研究背景 当前社会各行业领域竞争压力非常大,随着当前时代的信息化,科学化发展,让社会各行业领域都争相使用新的信息技术,对行业内的各种相关数据进行科学化,规范化管理。这样的大环境让那些止步不前&#…...
产品管理- 互联网产品(6):产品测试
可用性测试 招募有代表性用户作为测试代表参与者,评估某产品符合特定可用性及符合程度。以具有代表性的用户为测试样本。 测试中多关注用户表情与动作。多鼓励与测试的用户更多的操作以用户角度发现问题。同时要做好询问工作,耐心聆听用户的意见&#x…...
奖金高达 110 万元,Spatial Joy 2024 全球 AR 应用开发大赛启动
今年是AR应用开发大赛第三届,恰逢Rokid成立十周年,我们推出全新的大赛品牌“Spatial Joy”,引领开发者享受开发乐趣,为其打造充满挑战和惊喜的开发之旅,逐渐成为空间计算时代全球最大AR应用开发大赛。回顾大赛发展&…...
git add成功后忘记commit的文件丢了?
本文目标:开发人员,在了解git fsck命令用法的条件下,进行git add成功但由于误操作导致丢失的文件找回,达到找回丢失文件的程度。 文章目录 1 痛点2 解决方案3 总结/练习 1 痛点 开发过程中,分支太多(基线分…...
Python Web 开发中的DevOps 实践与自动化运维
Python Web 开发中的DevOps 实践与自动化运维 📚 目录 🔧 基础设施即代码(IaC) 使用 Terraform、AWS CloudFormation 实现基础设施即代码使用 Python 进行云服务资源的管理与自动化配置编写和部署基础设施的自动化脚本 …...
探索私有化聊天软件:即时通讯与音视频技术的结合
在数字化转型的浪潮中,企业对于高效、安全、定制化的通讯解决方案的需求日益迫切。鲸信,作为音视频通信技术的佼佼者,凭借其强大的即时通讯与音视频SDK(软件开发工具包)结合能力,为企业量身打造了私有化聊天…...
性能调优知识点(mysql)三
SQL底层执行原理 MySQL的内部组件结构:大体来说,MySQL 可以分为 Server 层和存储引擎层store两部分 Server层:主要包括连接器、查询缓存、分析器、优化器、执行器等,涵盖 MySQL 的大多数核心服务功能,以及所有的内置函数…...
TinyWebSever项目面试题整理
TinyWebSever项目面试题整理 1.为什么要做这样一个项目? 满足高并发和高性能需求:现代Web应用面对大量用户,Web服务器需要高效处理并发连接。比如通过线程池、非阻塞I/O、事件驱动机制(如epoll),Web服务器…...
维修保养记录接口-维修保养记录API-汽车接口
维修保养记录接口的使用主要涉及到API对接和在线查询两种方式。以下是详细的使用步骤和注意事项: 一、API对接 注册与申请: 首先,你需要在提供维修保养记录接口的平台(如挖数据平台、第三方数据服务商等)进行注册&…...
.Net框架,除了EF还有很多很多......
文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...
云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地
借阿里云中企出海大会的东风,以**「云启出海,智联未来|打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办,现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...
可靠性+灵活性:电力载波技术在楼宇自控中的核心价值
可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...
Python ROS2【机器人中间件框架】 简介
销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...
LeetCode - 199. 二叉树的右视图
题目 199. 二叉树的右视图 - 力扣(LeetCode) 思路 右视图是指从树的右侧看,对于每一层,只能看到该层最右边的节点。实现思路是: 使用深度优先搜索(DFS)按照"根-右-左"的顺序遍历树记录每个节点的深度对于…...
毫米波雷达基础理论(3D+4D)
3D、4D毫米波雷达基础知识及厂商选型 PreView : https://mp.weixin.qq.com/s/bQkju4r6med7I3TBGJI_bQ 1. FMCW毫米波雷达基础知识 主要参考博文: 一文入门汽车毫米波雷达基本原理 :https://mp.weixin.qq.com/s/_EN7A5lKcz2Eh8dLnjE19w 毫米波雷达基础…...
Spring AI Chat Memory 实战指南:Local 与 JDBC 存储集成
一个面向 Java 开发者的 Sring-Ai 示例工程项目,该项目是一个 Spring AI 快速入门的样例工程项目,旨在通过一些小的案例展示 Spring AI 框架的核心功能和使用方法。 项目采用模块化设计,每个模块都专注于特定的功能领域,便于学习和…...
Chrome 浏览器前端与客户端双向通信实战
Chrome 前端(即页面 JS / Web UI)与客户端(C 后端)的交互机制,是 Chromium 架构中非常核心的一环。下面我将按常见场景,从通道、流程、技术栈几个角度做一套完整的分析,特别适合你这种在分析和改…...
什么是VR全景技术
VR全景技术,全称为虚拟现实全景技术,是通过计算机图像模拟生成三维空间中的虚拟世界,使用户能够在该虚拟世界中进行全方位、无死角的观察和交互的技术。VR全景技术模拟人在真实空间中的视觉体验,结合图文、3D、音视频等多媒体元素…...
Unity中的transform.up
2025年6月8日,周日下午 在Unity中,transform.up是Transform组件的一个属性,表示游戏对象在世界空间中的“上”方向(Y轴正方向),且会随对象旋转动态变化。以下是关键点解析: 基本定义 transfor…...
