进阶功能
代理与网络
配置代理、限速和网络相关选项
代理配置
# HTTP 代理
yt-dlp --proxy "http://127.0.0.1:7890" "URL"
# SOCKS5 代理
yt-dlp --proxy "socks5://127.0.0.1:1080" "URL"
# 设置环境变量(所有命令生效)
# Windows
set HTTP_PROXY=http://127.0.0.1:7890
set HTTPS_PROXY=http://127.0.0.1:7890
# Linux/macOS
export HTTP_PROXY=http://127.0.0.1:7890
export HTTPS_PROXY=http://127.0.0.1:7890import yt_dlp
ydl_opts = {
'proxy': 'http://127.0.0.1:7890',
# 或 'socks5://127.0.0.1:1080'
}
with yt_dlp.YoutubeDL(ydl_opts) as ydl:
ydl.download(["URL"])如果使用 Clash 等代理软件并开启了系统代理,yt-dlp 通常会自动使用,无需手动配置。
限速与并发
# 限制下载速度为 10MB/s
yt-dlp --limit-rate 10M "URL"
# 限速 500KB/s
yt-dlp --limit-rate 500K "URL"
# 同时下载多个片段(分段视频加速)
yt-dlp -N 4 "URL" # 4 个并发连接
# 设置重试次数
yt-dlp --retries 10 "URL"
# 分段重试
yt-dlp --fragment-retries 10 "URL"import yt_dlp
ydl_opts = {
'ratelimit': 10 * 1024 * 1024, # 10MB/s
'concurrent_fragment_downloads': 4, # 并发片段数
'retries': 10, # 重试次数
'fragment_retries': 10, # 分段重试
}
with yt_dlp.YoutubeDL(ydl_opts) as ydl:
ydl.download(["URL"])自定义 User-Agent
# 自定义 User-Agent
yt-dlp --user-agent "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36" "URL"
# 自定义 Referer
yt-dlp --referer "https://www.bilibili.com" "URL"地理限制绕过
# 使用指定国家的 IP 地址(需要对应国家的代理)
yt-dlp --geo-bypass "URL"
# 指定国家代码
yt-dlp --geo-bypass-country US "URL"
# 通过伪造 X-Forwarded-For
yt-dlp --geo-bypass-ip-block "1.0.0.0/8" "URL"网络故障恢复
# 断点续传 + 重试组合
yt-dlp -c --retries 10 --fragment-retries 10 "URL"
# 超时设置
yt-dlp --socket-timeout 30 "URL"
# 下载失败时暂停后重试
yt-dlp --retry-sleep 5 "URL"import yt_dlp
ydl_opts = {
'continuedl': True, # 断点续传
'retries': 10, # 重试次数
'fragment_retries': 10, # 分段重试
'socket_timeout': 30, # 超时秒数
'retry_sleep_functions': {
'http': lambda n: 5, # HTTP 错误重试等待 5 秒
},
}
with yt_dlp.YoutubeDL(ydl_opts) as ydl:
ydl.download(["URL"])DNS 相关问题
如果使用 Clash 等代理的 fake-ip 模式,可能导致 DNS 解析异常。建议将 yt-dlp 请求的域名添加到 fake-ip-filter 中。
# Clash 配置示例
dns:
fake-ip-filter:
- '*.bilibili.com'
- '*.youtube.com'
- '*.googlevideo.com'