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

如何通过Puppeteer(C#)程序化点击YouTube播放按钮?

解决C# Puppeteer播放YouTube视频的问题

以下是修正后的完整代码,可解决页面打开后无法播放视频的问题:

using System;
using System.Threading.Tasks;
using PuppeteerSharp;

namespace SOYoutube
{
    class Program
    {
        static async Task Main(string[] args)
        {
            // 修正URL:必须包含完整HTTPS协议
            string youtubeUrl = "https://www.youtube.com/watch?v=dQw4w9WgXcQ";

            // 下载Chromium(首次运行自动执行)
            var browserFetcher = new BrowserFetcher();
            await browserFetcher.DownloadAsync();

            // 启动浏览器,配置自动播放权限
            await using var browser = await Puppeteer.LaunchAsync(new LaunchOptions
            {
                Headless = false,
                Args = new[] { "--autoplay-policy=no-user-gesture-required" } // 绕过YouTube的用户手势播放限制
            });

            // 打开新页面
            await using var page = await browser.NewPageAsync();

            // 导航到视频页,等待页面资源完全加载
            await page.GoToAsync(youtubeUrl, new NavigationOptions
            {
                WaitUntil = WaitUntilNavigation.Networkidle2
            });

            // 处理Cookie同意弹窗(部分地区访问会触发)
            try
            {
                await page.WaitForSelectorAsync("#accept-all-button", new WaitForSelectorOptions { Timeout = 5000 });
                await page.ClickAsync("#accept-all-button");
            }
            catch (TimeoutException)
            {
                // 无弹窗则跳过
            }

            // 等待播放按钮加载完成
            await page.WaitForSelectorAsync(".ytp-play-button", new WaitForSelectorOptions { Timeout = 10000 });
            
            // 点击播放按钮(若视频未自动播放)
            await page.ClickAsync(".ytp-play-button");

            // 保持浏览器打开以观察效果
            await Task.Delay(10000);

            // 关闭浏览器
            await browser.CloseAsync();
        }
    }
}

关键修改说明:

  • 补全URL协议:原代码缺少https://,Puppeteer无法正确解析导航地址,必须补充完整协议头。
  • 配置自动播放权限:添加启动参数--autoplay-policy=no-user-gesture-required,绕过YouTube默认的"需用户交互才能播放"限制。
  • 等待页面完全加载:设置WaitUntil = Networkidle2,确保页面所有静态资源加载完成后再执行后续操作。
  • 处理Cookie弹窗:针对部分地区的Cookie提示做异常捕获处理,避免弹窗阻塞后续流程。
  • 指定正确的播放按钮选择器:使用YouTube官方的播放按钮类.ytp-play-button,确保能精准定位播放控件。

如需播放特定视频,替换youtubeUrl为目标视频的完整链接即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 01:00:06