当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中的密码的理智方法的帮助将不胜感激.
网址结构和密码不断改变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 };
以上是解密代码.
但请注意,它在更改播放器文件时会不断更改,因此您必须轻触所使用的播放器文件.
另外,要下载具有密码签名的视频,您必须使用相同的用户代理标头,从同一IP地址发送请求以及在提取后立即发送请求来处理相同的cookie.所有这些在某些时候都是必需的
如果对密码解密算法感兴趣,请访问CipherAPI
另一个很酷的API:TYstream API