🚀 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 格式的文本。
- 关键:导出后不要点击退出登录,保持浏览器窗口开启。
2. 规范存放 Cookie 文件
- 将导出的文件重命名为
youtube_cookies.txt。 - 存放在 VideoLingo 的根目录下(例如:
/root/VideoLingo/youtube_cookies.txt)。
💻 三、 应用代码层:强制注入配置
修改 VideoLingo 底层调用 yt-dlp 的逻辑,确保其携带“通行证”和“伪装身份”。
1. 修改 core/_1_ytdlp.py
定位到 ydl_opts 字典部分,添加 cookiefile 和 user_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(理论覆盖这个就行,目前先这样写,后续测试后更新本文档。)