ChenfengDX
ChenfengDX
发布于 2026-01-08 / 12 阅读
0
0

VideoLingo 油管下载视频清障

🚀 WSL2 环境下 VideoLingo 下载 YouTube 视频全流程排雷指南

背景:在 WSL2 (Ubuntu) 环境下运行 VideoLingo,使用 Windows 宿主机的 Clash Verge 作为代理,下载 YouTube 视频时常遇到“网络不可达”或“机器人验证”等报错。本指南提供一套完整的、经过实战验证的解决方案。


🛠 一、 网络架构层:打通 WSL2 与宿主机代理

WSL2 与 Windows 宿主机网络隔离,必须手动配置才能让 WSL2 识别宿主机的 VPN 代理。

1. Clash Verge 客户端配置

  • 开启局域网连接:在 Clash Verge 设置中,将 “局域网连接” (Allow LAN) 开关打开(变蓝)。
  • 记录代理端口:确认端口设置(本案例中为 7897)。

2. Windows 防火墙放行

由于 WSL2 访问宿主机被视为局域网入站流量,必须放行对应端口。

  • 操作:以管理员身份运行 PowerShell,执行以下命令:
    New-NetFirewallRule -DisplayName "Allow WSL2 Proxy" -Direction Inbound -Action Allow -EdgeTraversalPolicy Allow -Protocol TCP -LocalPort 7897
    

3. WSL2 终端环境变量设置

在 WSL2 终端中,动态获取宿主机 IP 并设置代理变量。

  • 核心命令
    # 获取宿主机 IP 并设置代理
    export host_ip=$(grep -m 1 nameserver /etc/resolv.conf | awk '{print $2}')
    export http_proxy="http://${host_ip}:7897"
    export https_proxy="http://${host_ip}:7897"
    
  • 建议:将上述代码添加到 ~/.bashrc 文件末尾,实现开机自动配置。

🔐 二、 身份验证层:绕过 YouTube 机器人验证

即使网络通了,YouTube 也会通过 IP 和行为检测拦截自动化下载工具,报错 Sign in to confirm you’re not a bot

1. 导出“新鲜”的 Cookies

  • 推荐工具:Chrome 插件 Get cookies.txt LOCALLY
  • 核心步骤
    • 使用浏览器的 隐身模式/无痕窗口 登录 YouTube。
    • 使用插件导出 Netscape 格式的文本。
    • 关键:导出后不要点击退出登录,保持浏览器窗口开启。
  • 将导出的文件重命名为 youtube_cookies.txt
  • 存放在 VideoLingo 的根目录下(例如:/root/VideoLingo/youtube_cookies.txt)。

💻 三、 应用代码层:强制注入配置

修改 VideoLingo 底层调用 yt-dlp 的逻辑,确保其携带“通行证”和“伪装身份”。

1. 修改 core/_1_ytdlp.py

定位到 ydl_opts 字典部分,添加 cookiefileuser_agent

ydl_opts = {
    # ... 原有配置
    'cookiefile': '/root/VideoLingo/youtube_cookies.txt', # 必须使用绝对路径
    'user_agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
    # ... 原有配置
}

✅ 四、 验证成功

完成配置后,在终端运行:

conda activate videolingo
cd /root/VideoLingo
streamlit run st.py

此时下载 YouTube 视频应能看到正常的进度条跳动。

✅ 五、 补充技术

  • 如果再次出现cookie失效问题:直接隐身模式打开油管,启动 Get cookies.txt LOCALLY ,然后Export All Cookies 覆盖到VideoLingo根目录下的www.youtube.com_cookies.txt,(或youtube_cookies.txt)
    • www是默认导出名,VL自动生成的是:youtube_cookies.txt(理论覆盖这个就行,目前先这样写,后续测试后更新本文档。)

评论