get_video_infoYouTube端点突然返回404notfound

https://www.youtube.com/get_video_info?video_id={videoId}正在抛出

响应状态代码不表示成功:404(未找到)。

回答

编辑:我发现这可以工作。我不知道为什么。但它确实有效。

https://www.youtube.com/get_video_info?video_id=onz2k4zoLjQ&eurl=https%3A%2F%2Fyoutube.googleapis.com%2Fv%2Fonz2k4zoLjQ&html5=1&c=TVHTML5&cver=6.20180913


您可以添加&html5=1url 来修复它。

  • Now this way failed too.
  • @EricZhao,我认为它也停止使用新解决方案。
  • I added `&html5=1&c=TVHTML5&cver=6.20180913` (from the URL in the main post) and it seems like it fixed the problem

回答

出于某种原因,谷歌正试图让它变得更难。


2021 年 8 月编辑:


我刚刚为 C# 开发人员发布了一个新的 NuGet,它带来了 get_video_info 的 URL。享受!
https://www.nuget.org/packages/Youtube.VideoInfo


初始值为
https://www.youtube.com/get_video_info?video_id={videoId}&eurl=https://youtube.googleapis.com/v/{videoId}

然后添加了 HTML5 标签:
https://www.youtube.com/get_video_info?html5=1&video_id={videoId}&eurl=https://youtube.googleapis.com/v/{videoId}

现在(2021 年 6 月)新的解决方案是:
https://www.youtube.com/get_video_info?video_id={videoId}&eurl=https%3A%2F%2Fyoutube.googleapis.com%2Fv%2Fonz2k4zoLjQ&html5=1&c=TVHTML5&cver=6.20180913

我们需要睁大眼睛。看起来谷歌中的某个人不喜欢 YouTube 启用此功能的事实。

  • 没有任何解决方案?

回答

我想我找到了 YouTube get_video_info端点的替代方法。

以下是对youtubei/v1/player端点的POST请求的 CURL 和 PHP (CURL) 实现,
具有最少的请求标头和参数。

我已经从请求中删除了许多请求标头和参数,以保持简单和尽可能匿名,就像使用GET get_video_info端点时一样。例如 cookie、用户代理等。

下面的示例可能仍然包含可选的请求参数,因为它是在紧急情况下完成的。

在将用户代理设置为电视后,我通过检查 Firefox 中的 XHR 网络请求发现了这个新 API。

firefox-inspect-network-xhr-requests-television-user-agent

以下 CURL 请求中使用的示例视频链接:

https://www.youtube.com/watch?v=UF8uR6Z6KLc

卷曲

 curl 'https://www.youtube.com/youtubei/v1/player?key=AIzaSyAO_FJ2SlqU8Q4STEHLGCilw_Y9_11qcW8' -H 'Content-Type: application/json' --data '{  "context": {    "client": {      "hl": "en",      "clientName": "WEB",      "clientVersion": "2.20210721.00.00",      "clientFormFactor": "UNKNOWN_FORM_FACTOR",   "clientScreen": "WATCH",      "mainAppWebInfo": {        "graftUrl": "/watch?v=UF8uR6Z6KLc",           }    },    "user": {      "lockedSafetyMode": false    },    "request": {      "useSsl": true,      "internalExperimentFlags": [],      "consistencyTokenJars": []    }  },  "videoId": "UF8uR6Z6KLc",  "playbackContext": {    "contentPlaybackContext": {        "vis": 0,      "splay": false,      "autoCaptionsDefaultOn": false,      "autonavState": "STATE_NONE",      "html5Preference": "HTML5_PREF_WANTS",      "lactMilliseconds": "-1"    }  },  "racyCheckOk": false,  "contentCheckOk": false}'

PHP(卷曲)

function getVideoInfo($video_id){

    $ch = curl_init();

    curl_setopt($ch, CURLOPT_URL, 'https://www.youtube.com/youtubei/v1/player?key=AIzaSyAO_FJ2SlqU8Q4STEHLGCilw_Y9_11qcW8');
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, '{  "context": {    "client": {      "hl": "en",      "clientName": "WEB",      "clientVersion": "2.20210721.00.00",      "clientFormFactor": "UNKNOWN_FORM_FACTOR",   "clientScreen": "WATCH",      "mainAppWebInfo": {        "graftUrl": "/watch?v='.$video_id.'",           }    },    "user": {      "lockedSafetyMode": false    },    "request": {      "useSsl": true,      "internalExperimentFlags": [],      "consistencyTokenJars": []    }  },  "videoId": "'.$video_id.'",  "playbackContext": {    "contentPlaybackContext": {        "vis": 0,      "splay": false,      "autoCaptionsDefaultOn": false,      "autonavState": "STATE_NONE",      "html5Preference": "HTML5_PREF_WANTS",      "lactMilliseconds": "-1"    }  },  "racyCheckOk": false,  "contentCheckOk": false}');
    curl_setopt($ch, CURLOPT_ENCODING, 'gzip, deflate');

    $headers = array();
    $headers[] = 'Content-Type: application/json';
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

    $result = curl_exec($ch);
    if (curl_errno($ch)) {
        echo 'Error:' . curl_error($ch);
    }
    curl_close($ch);
    return $result;

}


以上是get_video_infoYouTube端点突然返回404notfound的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>