将yt-dlp终端命令转为Python代码时遇域名解析错误求助
解决方案
问题根源
你的代码中referer的设置方式可能未正确传递HTTP Referer头,或是存在yt-dlp版本兼容问题,导致请求无法正确解析目标域名。
修正后的代码
将Referer头放在http_headers字典中显式设置,这是更可靠的传递方式:
import yt_dlp ydl_opts = { 'http_headers': { 'Referer': 'https://referer.link' }, 'no_part': True, } video_url = 'https://video.link' with yt_dlp.YoutubeDL(ydl_opts) as ydl: ydl.download([video_url])
额外排查步骤
版本一致性检查:
终端执行yt-dlp --version,Python中执行print(yt_dlp.version.__version__),确保两者版本一致。版本差异可能导致参数兼容问题,若不一致,更新Python的yt-dlp包:pip install --upgrade yt-dlp。URL校验:
再次确认代码中的video_url和Referer地址与终端命令中的完全一致,包括完整的https://前缀、域名和路径,避免拼写失误。
原因说明
部分场景下,yt-dlp的顶级referer选项可能无法正确将头信息传递给请求,而通过http_headers显式设置HTTP头会绕开这个问题,同时也更符合HTTP请求头的标准传递方式,适配更多网站的校验逻辑。
内容的提问来源于stack exchange,提问作者J. Doe
相关产品推荐
相关产品推荐

