toMedia
进阶功能

代理与网络

配置代理、限速和网络相关选项

代理配置

# 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:7890
import 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'

On this page