使用PHP或JS解码Youtube密码签名的最佳方法

use*_*943 9 javascript php youtube ios

use_cipher_signature = true通过http://www.youtube.com/get_video_info?&video_id=Video_Id返回字典 时,Youtube正在为某些视频使用密码签名

示例id:_JQH3G0cCtY

加密签名实际上是加密签名,任何人都可以通过几组工作签名进行调试.但是Youtube继续改变争夺战的算法.我见过几个Youtube视频下载器,它们运行顺畅而不会受到这种变化游戏的影响.我认为他们正在检查播放器并从播放器文件中提取解码脚本,因此它会让它们继续运行.

我需要一些关于在这种情况下使用的实际技术的帮助.我知道'youtube-dl' - 一个下载视频的python程序.由于我不擅长python,我认为他们使用相同的方法.

此外,还有一个用户脚本JS文件:http: //userscripts.org/scripts/show/25105,它正在做同样的事情.

任何关于解密PHP或JS中的密码的理智方法的帮助将不胜感激.

Akh*_*esh 23

网址结构和密码不断改变Youtube.目前,解密密码签名的最佳方法解释如下:

Youtube中的加密签名只是"加扰"签名,您必须根据播放器文件(HTML5播放器或Flash播放器)中的算法重新排列它们.

例如http://www.youtube.com/watch?v=UxxajLWwzqY,目前使用以下HTML5播放器文件://s.ytimg.com/yts/jsbin/html5player-vfltdb6U3.js

在此文件中,您可以通过搜索"sig"轻松搜索签名解密代码.在这种情况下,Algo是:

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
};
Run Code Online (Sandbox Code Playgroud)

以上是解密代码.

但请注意,它在更改播放器文件时会不断更改,因此您必须轻触所使用的播放器文件.

另外,要下载具有密码签名的视频,您必须使用相同的用户代理标头,从同一IP地址发送请求以及在提取后立即发送请求来处理相同的cookie.所有这些在某些时候都是必需的

如果对密码解密算法感兴趣,请访问CipherAPI

另一个很酷的API:TYstream API