自己开发软件实现网站抓取m3u8链接
几天前一个同学说想下载一个网站的视频找不到连接,问我有没有什么办法,网站抓取m3u8链接 网页抓取m3u8链接。当时一听觉得应该简单,于是说我抽空看看。然后就分析目标网页,试图从网页源码里找出连接,有的源代码直接有,但是有的没有, F12调出开发者工具,进NetWrok看到网页是通过ajax发起xhr请求拿的视频连接,怪不得页面元素里没有下载地址,请求的是m3u8格式文件,查了一下这是一种分片的流媒体文件,然后到处找下载这种格式文件的工具,都不是很理想。很多都是直接下了分片后的ts文件,但是这个网站的是加了密的,不能直接播放,最后找到ffmpeg这个视频插件神器,视频转码、剪切、合并、播放都不在话下,还支持多平台。 ffmpeg FFmpeg介绍和入门 ffmpeg开 FFmpeg官方网站 有了神器何不自己写个工具来下载呢,准备动手时首先就被连接怎么获取这个问题给拦住了, 数据不在网页元素里, 拦截网页所有请求肯定就拿到了。筛选后得到三种方案: 首先试了WebBrowser,目标网站直接打不开网页,让换谷歌浏览器,修改了UserAgent可以打开,但是网页显示不全,放弃 。最后用C#Sharp测试达到了预期目标, 然后就是写代码了: 视频地址获取只要继承集成默认的抽象类 DefaultRequestHandler就可以了.
public class MyRequestHandler : DefaultRequestHandler{public override CefReturnValue OnBeforeResourceLoad(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, IRequestCallback callback){//拿到url后再判断下是不是视频文件string url = request.Url;} }
然后在初始化浏览器时指定下就行了。
chromeBrowser.RequestHandler = new MyRequestHandler(callback);
这里我是把url中的文件名提取出来,然后判断扩展名来判断是不是视频文件,不知道有没有更通用的方法。判断ResourceType == ResourceType.Media是不行的,很多时候这个值返回的是xhr。
FFmpeg部分就是直接命令行调用下,有时间再研究下这个神器的lib方式。
以下是折腾了几天出来的结果。
浏览器界面,解析m3u8链接后 可以看到需要下载的视频文件数量。 点击 开始下载按钮,来到如下界面。 可以在这里进行下载,播放等操作,界面美观,功能齐全 不管是网页解析m3u8链接, 还是网页批量下载等 如果需要下载一整部电视剧或者动漫,可以直接解放双手。 下载支持分片选择下载删除特定项目。 实时显示下载进度, 更新下载的数据大小。 一般情况下ts文件不用去下载,直接下m3u8就可以了,程序会自动分析ts分片文件全部下载完后自动合成一个mp4文件。
星尘库m3u8下载器下载地址:星尘库M3U8下载器编辑https://sky.lanzouv.com/b0kn8uhti
软件下载:链接:星尘库M3U8下载器 提取码:6666 如果运行不了,请下载并安装NET Framework 4.6.1
相关文章:

自己开发软件实现网站抓取m3u8链接
几天前一个同学说想下载一个网站的视频找不到连接,问我有没有什么办法,网站抓取m3u8链接 网页抓取m3u8链接。当时一听觉得应该简单,于是说我抽空看看。然后就分析目标网页,试图从网页源码里找出连接,有的源代码直接有,但是有的没有…...
[Python3] 多模式字符串搜索 `Aho-Corasick`
ahocorasick.Automaton 是 Python 中 pyahocorasick 库提供的一个类,用于实现 Aho-Corasick 自动机。Aho-Corasick 算法是一种用于精确或近似多模式字符串搜索的高效算法。 通过 pip install pyahocorasick 安装 pyahocorasick 库。 并且,该模块是用 C 编…...
4 Types of Kaggle Competitions
1---Featured Competitions🤑🤑 These are comprehensive Machine Learning challenges posed by difficult, often business-oriented predictive problems. For example, 1⃣️Using customers history of buying insurance to predict the price t…...
【STM32】stm32中GPIO_ReadInputDataBit()是什么意思
GPIO_ReadInputDataBit()函数用于读取指定GPIO端口的某一引脚上的电平状态,并返回该引脚的电平是高电平(1)还是低电平(0)。 在STM32单片机中,GPIO(General-Purpose Input/Output)端…...
Study--Oracle-07-ASM相关参数(三)
一、ASM初始化参数 1、ASM全量参数,见附件 2、ASM重要参数 无需求不需要调整 3、ASM权限 ASM的三大系统权限包括SYSDBA、SYSOPER和SYSASM。 SYSDBA(系统管理员):这是最高级别的权限,允许用户执行所有的数据库管理任务,包括启动和关闭数据库,以及执行…...

【STM32嵌入式系统设计与开发拓展】——12_Timer(定时器中断实验)
目录 1、什么是定时器?定时器用于测量时间间隔,而计数器用于计数外部事件的次数 2、定时器的主要功能和用途?3、定时器类型?4、定时器的编写过程5、代码分析定时器计算?计算过程周期(arr)&#…...

iPhone 17系列取消17 Plus版本?新一代苹果手机迎来新变革
随着科技的飞速发展,苹果公司再次准备刷新我们的期待,即将推出的iPhone 17系列携带着一系列令人兴奋的升级。今年,苹果打破了常规,将四款新机型带入市场——iPhone 17、17 Pro、17 Pro Max,以及一款全新的成员…...

Bootstrap实现dialog上一步下一步多个弹窗交互
Bootstrap实现dialog上一步下一步多个弹窗交互 版本介绍: Bootstrap v3.3.7jQuery v3.5.1 一、功能介绍 重新设置bootstrap主题色内容区以card形式展示,纯js实现分页功能共两步骤,第一步选择模板,第二步进行其他操作步骤一内的按…...

iOS实际开发中使用数据驱动页面布局
引言 在实际的APP开发中,我们通常会首先根据设计团队提供的视觉设计UI来构建我们的应用页面。这些设计通常是最全面和理想化的状态,因为设计师并不需要考虑用户的实际操作和交互。然而,如果我们仅仅根据这些设计进行硬编码,会在应…...

后端开发刷题 | 笔试
Linux 中,下面哪个选项不是 inode 中记录的数据() A 最后一次读取时间 B 最近修改的时间 C 该文件的实际内容 D 该文件的容量 正确答案:C 解析:储存文件的元信息,比如文件的创建者、文件的创建日期、文件的…...

ROS2入门到精通—— 2-8 ROS2实战:机器人安全通过狭窄区域的方案
0 前言 室内机器人需要具备适应性和灵活性,以便在狭窄的空间中进行安全、高效的导航。本文提供一些让机器人在狭窄区域安全通过的思路,希望帮助读者根据实际开发适当调整和扩展 1 Voronoi图 Voronoi图:根据给定的一组“种子点”࿰…...

STM32自己从零开始实操10:PCB全过程
一、PCB总体分布 分布主要参考有: 方便供电布线。方便布信号线。方便接口。人体工学。 以下只能让大家看到各个模块大致分布在板子的哪一块,只能说每个人画都有自己的理由,我的理由如下。 还有很多没有表达出来的东西,我也不知…...
折线图时间统计
1、查询本月的数据 2、查询最近一个月数据 1、查询本月数据 Date startTime DateUtil.getStartDayOfMonth();Date endTime DateUtil.getEndDayOfMonth();//获取日期//[2024-07-01, 2024-07-02, 2024-07-03, 2024-07-04, 2024-07-05, 2024-07-06, 2024-07-07, 2024-07-08, 20…...
Prompt工程:与AI聊天机器人更好地交流
Prompt工程:与AI聊天机器人更好地交流 1. 清楚地说明你想要什么2. 告诉AI它现在是谁3. 一步一步来4. 给AI一些例子5. 让AI检查自己的回答6. 把AI当作你的小助手7. 让AI帮你想主意8. 让AI告诉你它需要知道什么9. 教AI一步一步思考结语 大家好!今天我们来聊聊如何跟AI聊天机器人更…...

BGP之选路MED
原理概述 当一台BGP路由器中存在多条去往同一目标网络的BGP路由时,BGP协议会对这些BGP路由的属性进行比较,以确定去往该目标网络的最优BGP路由。BGP路由属性的比较顺序为Preferred Value属性、Local Preference属性、路由生成方式、AS_Path属性、Origin属…...
KunDB4.0:安全能力与Oracle兼容性提升,支持跨系统多租户部署
KunDB是星环科技自主研发的分布式交易型数据库,高度兼容Oracle和MySQL,提供数据强一致、高可用、高性能、高扩展、应用透明等能力,可在云上和物理机上容器化部署运行,一站式解决企业数据存储、管理、计算与安全性问题。 过去半年…...
JVM的 6 种垃圾回收算法
JVM的垃圾回收(Garbage Collection, GC)算法,在面试八股文时偶尔会被问到,了解一些常见的垃圾回收算法有利于面试时吊打面试官。 以下是JVM常见的几种垃圾回收算法的介绍: 1. 标记-清除算法(Mark-Sweep&a…...

【SOC 芯片设计 DFT 学习专栏 -- DFT OCC 与 ATPG的介绍】
请阅读【嵌入式及芯片开发学必备专栏】 请阅读【芯片设计 DFT 学习系列 】 如有侵权,请联系删除 转自: 简矽芯学堂 简矽芯学堂 2024年01月18日 09:00 陕西 文章目录 OCC 介绍Fast ScanFull chip ATPGPartition ATPGHierarchical ATPG OCC 介绍 OCC&am…...
自动驾驶-机器人-slam-定位面经和面试知识系列03之C++STL面试题(01)
这两天有点忙耽搁了,抱歉!!! 这个博客系列会分为C STL-面经、常考公式推导和SLAM面经面试题等三个系列进行更新,基本涵盖了自己秋招历程被问过的面试内容(除了实习和学校项目相关的具体细节)。…...
红狮金业解读:分析高价位黄金的后续投资吸引力
在全球经济格局不断变化的背景下,黄金作为传统的避险资产一直备受投资者关注。近期,金价持续走高,引发了市场对黄金是否仍然是优质资产配置的讨论。本文红狮启富将从长期需求、价格驱动因素的变化以及汇率影响三个角度,深入分析黄…...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》
引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...
【Linux】C语言执行shell指令
在C语言中执行Shell指令 在C语言中,有几种方法可以执行Shell指令: 1. 使用system()函数 这是最简单的方法,包含在stdlib.h头文件中: #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...
电脑插入多块移动硬盘后经常出现卡顿和蓝屏
当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时,可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案: 1. 检查电源供电问题 问题原因:多块移动硬盘同时运行可能导致USB接口供电不足&#x…...
Python 包管理器 uv 介绍
Python 包管理器 uv 全面介绍 uv 是由 Astral(热门工具 Ruff 的开发者)推出的下一代高性能 Python 包管理器和构建工具,用 Rust 编写。它旨在解决传统工具(如 pip、virtualenv、pip-tools)的性能瓶颈,同时…...

CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)
漏洞概览 漏洞名称:Apache Flink REST API 任意文件读取漏洞CVE编号:CVE-2020-17519CVSS评分:7.5影响版本:Apache Flink 1.11.0、1.11.1、1.11.2修复版本:≥ 1.11.3 或 ≥ 1.12.0漏洞类型:路径遍历&#x…...

【从零开始学习JVM | 第四篇】类加载器和双亲委派机制(高频面试题)
前言: 双亲委派机制对于面试这块来说非常重要,在实际开发中也是经常遇见需要打破双亲委派的需求,今天我们一起来探索一下什么是双亲委派机制,在此之前我们先介绍一下类的加载器。 目录 编辑 前言: 类加载器 1. …...
MySQL 主从同步异常处理
阅读原文:https://www.xiaozaoshu.top/articles/mysql-m-s-update-pk MySQL 做双主,遇到的这个错误: Could not execute Update_rows event on table ... Error_code: 1032是 MySQL 主从复制时的经典错误之一,通常表示ÿ…...

HTTPS证书一年多少钱?
HTTPS证书作为保障网站数据传输安全的重要工具,成为众多网站运营者的必备选择。然而,面对市场上种类繁多的HTTPS证书,其一年费用究竟是多少,又受哪些因素影响呢? 首先,HTTPS证书通常在PinTrust这样的专业平…...
Vuex:Vue.js 应用程序的状态管理模式
什么是Vuex? Vuex 是专门为 Vue.js 应用程序开发的状态管理模式 库。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。 在大型单页应用中,当多个组件共享状态时,简单的单向数据流…...