|
|
功能介绍
简单快速提取当前页面或全部页面的M3U8链接
支持显示抓取结果,格式为:标题,链接
支持复制所有结果,格式为:标题,链接,可用于m3u8批量下载软件的模板
关键代码:
// 抓取当前页面M3U8链接
currentPageBtn.addEventListener('click', async () => {
setStatus('正在抓取当前页面链接...', true);
try {
// 获取当前活动标签页
const [tab] = await chrome.tabs.query({ active: true, currentWindow: true });
// 注入内容脚本并执行抓取
const results = await chrome.scripting.executeScript({
target: { tabId: tab.id },
function: findM3U8Links
});
// 结果 显示时去重
const m3u8Links = results[0].result;
...
// 在页面中查找M3U8链接的函数
function findM3U8Links() {
const m3u8Links = new Set();
// 查找所有可能的M3U8链接来源
const sources = [
// 1. 查找<script>标签中的M3U8链接
...Array.from(document.scripts).map(script => script.innerHTML),
// 2. 查找JSON数据
...Array.from(document.querySelectorAll('*')).map(el => el.innerHTML),
// 3. 查找视频标签
...Array.from(document.querySelectorAll('video source')).map(source => source.src),
// 4. 查找所有链接
...Array.from(document.querySelectorAll('a')).map(a => a.href)
];
// M3U8链接正则表达式
const m3u8Regex = /https?:\/\/[^\s"']+\.m3u8(?:\?[^\s"']*)?/gi;
// 在所有来源中搜索M3U8链接
sources.forEach(source => {
if (typeof source === 'string') {
const matches = source.match(m3u8Regex);
if (matches) {
matches.forEach(match => m3u8Links.add(match));
}
}
});
...
复制代码附件下载
https://xiaok.lanzoum.com/iQeYf3ae66af |
|