当字典中的 use_cipher_signature = true
通过
http://www.youtube.com/get_video_info?&video_id=Video_Id
示例编号:_JQH3G0cCtY
加密签名实际上是任何人都可以用几组有效签名进行调试的加扰签名。但是 Youtube 一直在改变加扰算法。 我见过很少有 Youtube 视频下载器可以顺利运行而不受这种不断变化的游戏的影响。我认为他们正在检查播放器并从播放器文件中提取解码脚本,因此这让他们继续前进。
我需要一些关于在这种情况下使用的实际技术的帮助。我知道“youtube-dl”——一个用于下载视频的 python 程序。由于我不擅长 python,我认为他们使用的是相同的方法。
这里还有一个用户脚本 JS 文件: http://userscripts.org/scripts/show/25105 ,这是做同样的事情。
任何有关用 PHP 或 JS 解码密码的合理方法的帮助将不胜感激。
最佳答案
Url 结构和密码在 Youtube 上不断变化。目前,解码密码签名的最佳方法解释如下:
Youtube 中的加密签名只是“加扰”签名,您必须根据播放器文件(HTML5 播放器或 Flash 播放器)中存在的算法重新排列它们。
例如 http://www.youtube.com/watch?v=UxxajLWwzqY
目前正在使用以下 HTML5 播放器文件://s.ytimg.com/yts/jsbin/html5player-vfltdb6U3.js
在此文件中,您可以通过搜索“sig”轻松搜索签名解密代码。在这种情况下,算法是:
function bz(a) {
a = a.split("");
a = cz(a, 61);
a = cz(a, 5);
a = a.reverse();
a = a.slice(2);
a = cz(a, 69);
a = a.slice(2);
a = a.reverse();
return a.join("")
}
function cz(a, b) {
var c = a[0];
a[0] = a[b % a.length];
a[b] = c;
return a
};
上面是解密代码。
但请注意,当他们更改播放器文件时它会不断更改,因此您必须一直点击正在使用的播放器文件。
此外,要使用密码签名下载视频,您还必须注意发送相同的 cookie、使用相同的用户代理 header 、从相同的 IP 地址发送请求以及在提取后立即发送请求。所有这些在某些时候都是或曾经是必需的
如果对密码解密算法感兴趣,请访问CipherAPI
另一个很酷的 API:TYstream API
关于javascript - 使用 PHP 或 JS 解码 Youtube 密码签名的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21510857/