You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何批量检测随机生成的YouTube链接是否有效

批量检测YouTube随机链接有效性的实现方案

方案一:浏览器控制台快速检测(适合少量链接)

如果只是处理几十上百个链接,直接用浏览器开发者工具就能搞定,无需额外安装工具:

  1. 把所有要检测的YouTube链接整理成JavaScript数组格式:
const urls = [
  "https://www.youtube.com/watch?v=abc123",
  "https://www.youtube.com/watch?v=def456",
  // 在这里添加更多链接
];
  1. 打开Chrome/Firefox的开发者工具(快捷键F12),切换到Console标签页

  2. 粘贴以下代码并回车执行:

// 单个链接检测函数
async function checkUrl(url) {
  return new Promise((resolve) => {
    const iframe = document.createElement('iframe');
    iframe.style.display = 'none';
    document.body.appendChild(iframe);

    iframe.onload = () => {
      let isAvailable = true;
      try {
        const pageText = iframe.contentDocument.body.innerText;
        if (pageText.includes("this video isn't available")) {
          isAvailable = false;
        }
      } catch (e) {
        // 跨域无法读取内容时,默认视为有效链接(YouTube有效页面会触发跨域限制)
        isAvailable = true;
      }
      document.body.removeChild(iframe);
      resolve({ url, isAvailable });
    };

    iframe.onerror = () => {
      document.body.removeChild(iframe);
      resolve({ url, isAvailable: false });
    };

    iframe.src = url;
  });
}

// 批量检测,控制并发数避免浏览器卡顿
async function batchCheck(urls, concurrency = 3) {
  const results = [];
  let currentIndex = 0;

  async function processNext() {
    if (currentIndex >= urls.length) return;
    const url = urls[currentIndex++];
    const result = await checkUrl(url);
    results.push(result);
    console.log(result.isAvailable ? `✅ 有效: ${url}` : `❌ 无效: ${url}`);
    await processNext();
  }

  // 启动指定数量的并发任务
  await Promise.all(Array(concurrency).fill().map(processNext));

  // 整理结果并复制到剪贴板
  const validUrls = results.filter(r => r.isAvailable).map(r => r.url);
  const invalidUrls = results.filter(r => !r.isAvailable).map(r => r.url);

  console.log('\n=== 检测结果 ===');
  console.log('有效链接:', validUrls);
  console.log('无效链接:', invalidUrls);

  const resultText = `有效链接:\n${validUrls.join('\n')}\n\n无效链接:\n${invalidUrls.join('\n')}`;
  navigator.clipboard.writeText(resultText).then(() => {
    console.log('结果已复制到剪贴板,直接粘贴到记事本即可');
  });

  return results;
}

// 执行检测,并发数设为3可平衡速度与稳定性
batchCheck(urls, 3);

执行后,控制台会实时输出每个链接的检测结果,最后会把所有有效/无效链接复制到剪贴板,直接粘贴到Notepad++即可。

注意事项

  • 并发数不要设太高(建议3-5),否则浏览器可能会卡顿或阻止页面加载
  • 少数情况下跨域限制会导致判断不准,遇到标记为有效但实际无效的链接,手动验证即可

方案二:Node.js批量检测(适合大量链接)

如果要处理成百上千个链接,用Node.js结合无头浏览器更高效,还能自动把结果保存到文件:

  1. 先安装Node.js(官网下载即可),然后创建一个新文件夹,打开命令行执行:
npm init -y
npm install puppeteer
  1. 在文件夹里创建两个文件:
    • urls.txt:把所有要检测的链接放进去,每行一个
    • check-youtube.js:复制以下代码进去:
const puppeteer = require('puppeteer');
const fs = require('fs');

// 读取urls.txt里的链接
const rawUrls = fs.readFileSync('urls.txt', 'utf8').split('\n');
const urls = rawUrls.filter(url => url.trim() !== ''); // 过滤空行

// 单个链接检测逻辑
async function checkSingleUrl(browser, url) {
  const page = await browser.newPage();
  try {
    // 加载页面,设置超时避免卡住
    await page.goto(url, {
      waitUntil: 'domcontentloaded',
      timeout: 15000
    });

    // 检测页面是否包含指定无效文本
    const isUnavailable = await page.evaluate(() => {
      return document.body.innerText.includes("this video isn't available");
    });

    return { url, isAvailable: !isUnavailable };
  } catch (err) {
    console.log(`⚠️ 加载失败: ${url} - ${err.message}`);
    return { url, isAvailable: false };
  } finally {
    await page.close();
  }
}

// 批量检测主函数
async function batchCheckUrls() {
  console.log(`开始检测,共 ${urls.length} 个链接...`);
  
  // 启动无头浏览器
  const browser = await puppeteer.launch({
    headless: 'new',
    args: ['--no-sandbox', '--disable-setuid-sandbox'] // 解决部分系统的权限问题
  });

  const results = [];
  const concurrency = 5; // 并发数,可根据电脑性能调整

  // 分批次处理链接
  for (let i = 0; i < urls.length; i += concurrency) {
    const batchUrls = urls.slice(i, i + concurrency);
    const batchResults = await Promise.all(
      batchUrls.map(url => checkSingleUrl(browser, url))
    );
    results.push(...batchResults);

    // 打印当前批次结果
    batchResults.forEach(res => {
      console.log(res.isAvailable ? `✅ 有效: ${res.url}` : `❌ 无效: ${res.url}`);
    });
  }

  await browser.close();

  // 分离有效/无效链接并保存到文件
  const validUrls = results.filter(r => r.isAvailable).map(r => r.url);
  const invalidUrls = results.filter(r => !r.isAvailable).map(r => r.url);

  fs.writeFileSync('valid-urls.txt', validUrls.join('\n'));
  fs.writeFileSync('invalid-urls.txt', invalidUrls.join('\n'));

  console.log(`\n=== 检测完成 ===`);
  console.log(`有效链接已保存到 valid-urls.txt(共 ${validUrls.length} 个)`);
  console.log(`无效链接已保存到 invalid-urls.txt(共 ${invalidUrls.length} 个)`);
}

// 执行检测
batchCheckUrls();
  1. 在命令行执行以下命令开始检测:
node check-youtube.js

检测完成后,文件夹里会生成valid-urls.txt和invalid-urls.txt两个文件,直接打开就能看到分类好的链接。

注意事项

  • 不要设置过高的并发数,否则可能被YouTube限制IP
  • 如果遇到加载超时的情况,可以调整代码里的timeout参数(比如改成20000,单位毫秒)

内容的提问来源于stack exchange,提问作者Alex Jaquero

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 10:54:18