如何在请求标头并收到HTTP错误403时使用youtube-dl下载MPEG Dash(mpd文件)



我使用Chrome开发人员工具来检查网络活动并过滤mpd文件。 我得到了带有上下文菜单复制链接地址的 mpd 的 URL。 但是当我组装了youtube-dl命令行时,它得到了HTTP错误403:禁止。

所以我尝试添加 --verbose 选项以获取更多信息,并发现警告"无法发送 HEAD 请求",所以我假设我还需要发送标头。 我可以在网络活动检查器中列出的 mpd 文件中将带有上下文菜单副本的标题作为 cURL 获取。

使用 curl 下载适用于清单,但我如何向 youtube-dl 提供标头以正确发送它们?

检查网络活动中 Chrome 开发者工具过滤条目中的 cURL 副本将提供此类字符串:

curl 'https://source-of-video.net/folder/manifest.mpd' 
-H 'authority: source-of-video.net' 
-H 'pragma: no-cache' 
-H 'cache-control: no-cache' 
-H 'user-agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36' 
-H 'dnt: 1' 
-H 'accept: */*' 
-H 'origin: https://origin-website-of-video' 
-H 'sec-fetch-site: cross-site' 
-H 'sec-fetch-mode: cors' 
-H 'sec-fetch-dest: empty' 
-H 'referer: https://origin-website-of-video/origin.html' 
-H 'accept-language: en-US,en;q=0.9,es;q=0.8,it;q=0.7,pt;q=0.6' 
--compressed

只需将-H替换为--add-headercurl替换为youtube-dl并删除--compressed就可以解决问题,结果如下(标头只是示例(:

youtube-dl 'https://source-of-video.net/folder/manifest.mpd' 
--add-header 'authority: source-of-video.net' 
--add-header 'pragma: no-cache' 
--add-header 'cache-control: no-cache' 
--add-header 'user-agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36' 
--add-header 'dnt: 1' 
--add-header 'accept: */*' 
--add-header 'origin: https://origin-website-of-video' 
--add-header 'sec-fetch-site: cross-site' 
--add-header 'sec-fetch-mode: cors' 
--add-header 'sec-fetch-dest: empty' 
--add-header 'referer: https://origin-website-of-video/origin.html' 
--add-header 'accept-language: en-US,en;q=0.9,es;q=0.8,it;q=0.7,pt;q=0.6' 

最新更新