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

标签 stream youtube-dl request-headers

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

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

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

最佳答案

检查网络事件中 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' \

关于stream - 如何在请求 header 并收到 HTTP 错误 403 时使用 youtube-dl 下载 MPEG Dash(mpd 文件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62447887/

相关文章:

Java - 反射 - 如何使用反射获取@RequestHeader值

JMeter - 我需要在请求 header 中传递一个名为 "Cookie"的参数

javascript - 如何处理 Net Core 中的 net::ERR_INTERNET_DISCONNECTED 错误

python - youtube dl 如何从播放列表下载所有音频

python - 带有一组工作音乐命令的小型不和谐机器人,大约 6 天前,播放功能完全停止运行(更多下文)

java - Android 中的 youtube-dl

youtube - POST方法不适用于Request header

c# - .NET Stream 类是否设计不当?

Delphi XE2 DataSnap - 通过 TStream 将 JPEG 文件从服务器流式传输到客户端

python - 是否可以在 youtube-dl 中的 outtmpl 选项上添加条件