【问题标题】:How To Grab Youtube Download Links Decrypting Cipher Used by Youtube?如何获取 Youtube 下载链接解密 Youtube 使用的密码?
【发布时间】: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


    【解决方案1】:

    我是该网站的开发人员之一,感谢您提出问题。事实上,我们使用密码算法进入 youtube 视频,但由于硬限制,我们仍然必须流式传输大部分视频。在从文档中获取空白之前,每个 ip 的请求少于 10k。 最后,流通过我们庞大的服务器集群,我们设法在它们的基础上发展。

    我希望这可以解决旧问题,并作为奖励我们的解决方案。

    【讨论】:

      【解决方案2】:

      这是您获取 youtube 视频文件链接的方式。

      http://youtube.com/get_video_info?video_id=XXX 
      

      但是这个网站在耍花招。他们不是从 youtube 流式传输,而是从 Google 文档流式传输。所以他们的链接格式为http://blah.c.docs.google.com/videoplayback,而不是http://blah.c.docs.googlevideo.com/videoplayback。我也在寻找这种方法。所以如果你能找到它,请告诉我

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-27
      • 1970-01-01
      • 2013-08-25
      • 2014-05-12
      相关资源
      最近更新 更多