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

Posted

技术标签:

【中文标题】如何在请求标头并获得 HTTP 错误 403 时使用 youtube-dl 下载 MPEG Dash(mpd 文件)【英文标题】:How to download MPEG Dash (mpd file) using youtube-dl when headers are requested and getting HTTP Error 403 【发布时间】:2020-10-08 09:17:12 【问题描述】:

我已使用 Chrome 开发者工具 inspect network activity 并过滤 mpd 文件。 我已经获得了带有上下文菜单复制链接地址的 mpd 的 URL。 但是当我组装了 youtube-dl 命令行时,它得到了 HTTP 错误 403: Forbidden。

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

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

【问题讨论】:

【参考方案1】:

来自 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-header 并将curl 替换为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' \

【讨论】:

如何在窗口中添加这些标题? 它应该可以工作,如果您遇到问题可能与转义其他特殊字符和发出多行命令所需的字符有关,在 Windows 中,如果您使用 cmd 它是插入符号而不是反斜杠. HTH

以上是关于如何在请求标头并获得 HTTP 错误 403 时使用 youtube-dl 下载 MPEG Dash(mpd 文件)的主要内容,如果未能解决你的问题,请参考以下文章

HTTP 状态 403 - 在请求参数“_csrf”或标头“X-CSRF-TOKEN”上发现无效的 CSRF 令牌“null”

Spring CSRF:即使在设置请求标头后,Ajax 也会出现 403 错误

在 Broadleaf 项目中 HTTP 状态 403 - 在请求参数“_csrf”或标头“X-CSRF-TOKEN”上发现无效的 CSRF 令牌“null”

请求的资源上不存在“Access-Control-Allow-Origin”标头。 403 禁止

如何通过 ajax 在 javascript 中使用个人 http 标头加载图像(sencha touch 2)

如何在 Flutter/Dart 中使用 url 编码的标头和正文发出 HTTP POST 请求