【发布时间】:2014-09-22 14:53:38
【问题描述】:
我正在做一个下载 youtube 视频的小项目。我发现了一个很棒的网站:
http://vimow.com/watch?v=VID_ID_HERE
令人惊讶的是,每个视频都可以在这里正常播放,并且可以通过干净的 youtube 视频链接完美播放,但我无法弄清楚这个人是如何干净地提取视频链接的。 (这甚至适用于 VEVO 和 Sony,版权归 YouTube 视频所有)
我搜索了一下,发现 youtube 已经安装了某些密码来编码他们的 URL 路径,并且有一个类似的脚本来破译它。我不确定如何实现。我只能创建一组糟糕的代码,它使用假用户代理浏览到 youtube 的移动视图并仅获得高清 MP4 链接。
我该如何实现呢?或者谁能告诉我那个 vimow 网站是如何工作的?
对于那些对我的代码感兴趣的人:
<?php
if(!empty($_GET['url'])) {
$url = "https://www.youtube.com/watch?v=".$_GET['url'];
$ch1= curl_init();
curl_setopt ($ch1, CURLOPT_URL, "$url" );
curl_setopt($ch1, CURLOPT_HEADER, 0);
curl_setopt($ch1,CURLOPT_VERBOSE,1);
//curl_setopt($ch1, CURLOPT_USERAGENT, 'Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_2_1 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148 Safari/6533.18.5');
curl_setopt ($ch1, CURLOPT_REFERER,'http://www.google.com'); //just a fake referer
curl_setopt($ch1, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch1,CURLOPT_POST,0);
curl_setopt($ch1, CURLOPT_FOLLOWLOCATION, 20);
$htmlContent= curl_exec($ch1);;
$source = urldecode($htmlContent);
$downloadURL = explode('url_encoded_fmt_stream_map', $source);
$downloadURL = substr($downloadURL[1], 0, 15600);
$downloadURL = explode("url=", $downloadURL);
$mp4link = str_split($downloadURL[1]);
$newmp4link = array();
for($i=0;$i<count($mp4link);$i++) {
array_push($newmp4link, $mp4link[$i]);
if($mp4link[$i] == '\\' || $mp4link[$i] == ',') {
break;
}
}
$newmp4link = join("", $newmp4link);
$newmp4link = str_replace("\\","", $newmp4link);
$newmp4link = str_replace(",","", $newmp4link);
$newmp4link = str_replace(";","", $newmp4link);
$ext = "mp4";
function generateRandomString($length) {
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$randomString = '';
for ($i = 0; $i < $length; $i++) {
$randomString .= $characters[rand(0, strlen($characters) - 1)];
}
return $randomString;
}
$rand = generateRandomString(100);
$target = "tmp/$rand.mp4";
copy($newmp4link, $target);
echo "$newmp4link";
header("Location: tmp/$rand.mp4");
?>
【问题讨论】:
标签: php video encryption youtube