0
A
回答
3
是的,还有一种方法。我不会为您编写整个脚本,但我至少会为您提供从YouTube提供下载链接的功能。
好吧,您将需要安装CURL来执行此操作。
/* Developed by User - WebEntrepreneur @ StackOverlow.com */
function ___get_youtube_video($youtube_url)
{
if(eregi('youtube.com', $youtube_url))
{
preg_match('/http:\/\/(.+)youtube.com\/watch(.+)?v=(.+)/', $youtube_url, $youtube_id_regex);
$youtube_id = ($youtube_id_regex[3]) ? $youtube_id_regex[3] : '';
if(!$youtube_id)
{
return INVALID_YOUTUBE_ID;
}
if(eregi('\&', $youtube_id))
{
$youtube_id_m = explode('&', $youtube_id);
foreach($youtube_id_m as $slices)
{
$youtube_id = $slices;
break;
}
}
} else {
$youtube_id = ($youtube_url);
}
$ping = ___get_curl("http://www.youtube.com/watch?v={$youtube_id}&feature=youtu.be");
if(!$ping)
{
return YOUTUBE_UNAVAILABLE;
}
$ping_scan = nl2br($ping);
$ping_scan = explode('<br />', $ping_scan);
if(eregi('= null', $ping_scan[36]) or !$ping_scan[36])
{
return YOUTUBE_TOO_MANY_REQUESTS;
}
$ping_scan = str_replace("\n", "", $ping_scan[36]);
$ping_scan = str_replace(" img.src = '", "", $ping_scan);
$out[1] = str_replace("';", "", $ping_scan);
$sub_ping = ___get_curl("http://gdata.youtube.com/feeds/api/videos/{$youtube_id}");
preg_match('/<title type=\'text\'>(.+)<\/title>/', $sub_ping, $inout);
$inout = $inout[1];
if(!$out[1])
{
return VERSION_EXPIRED;
}
$out[1] = str_replace("generate_204", "videoplayback", $out[1]);
$out[1] = str_replace("\\/", "/", $out[1]);
$out[1] = rawurldecode($out[1]);
if($inout)
{
$out[1] .= "&file=".urlencode($inout).".mp4";
$filename = urlencode($inout).".mp4";
}
header("Content-Disposition: attachment; filename=\"".$filename."\"");
flush();
return ___get_curl($out[1]);
}
function ___get_curl($url)
{
if(!function_exists("curl_setopt"))
{
return CURL_NOT_INSTALLED;
}
$ch=curl_init();
curl_setopt($ch,CURLOPT_USERAGENT, "YouTube Video Downloader");
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,0);
curl_setopt($ch,CURLOPT_HEADER,0);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
curl_setopt($ch,CURLOPT_TIMEOUT,100000);
$curl_output=curl_exec($ch);
$curlstatus=curl_getinfo($ch);
curl_close($ch);
return $curl_output;
}
现在让我来谈谈代码。经过大约30分钟的研究后,我设法破解了他们的算法,但它确实有非常严格的界限,他们现在已经设定了。
由于每个视频下载请求都只与IP绑定,因此您需要将其从您的带宽中流出,这正是上述脚本的作用。但是,像keepvid.com这样的站点使用Java来获取下载URL并将其传输给用户。我还加入了自己的YouTube ID获取器,这对于这些工具非常方便。
请注意,如上所述,YouTube会一直更改其算法,使用此工具需自担风险。对于对YouTube造成的任何损害,我不承担任何责任。
希望它为你设定了一个很好的边界,花了一段时间。
相关问题
- 1. 从Python使用Youtube上下载视频
- 2. 用PHP下载Youtube视频
- 3. 在YouTube上使用get_video下载视频
- 4. 从YouTube下载视频
- 5. 仅从YouTube视频下载音频
- 6. 使用flash下载youtube视频
- 7. YouTube视频有下载使用PHP服务器
- 8. 是否有可能通过PHP下载YouTube视频链接并且可恢复?
- 9. 如何下载youtube视频php?
- 10. 我可以使用youtube api上传YouTube视频吗?
- 11. 从Youtube下载视频:errorcode = 150
- 12. 下载YouTube视频.NET
- 13. 力Youtube视频下载
- 14. 从YouTube上下载视频的应用程序
- 15. 是否有可能使用jQuery将视频上传到YouTube?
- 16. 使用命令行使用VLC从YouTube下载视频
- 17. 如何使用Android从Youtube下载视频?
- 18. youtube gdata上传视频php
- 19. rails应用程序下载youtube视频
- 20. 如何在Java上从YouTube上下载视频?
- 21. youtube-dl用formatid下载视频
- 22. 从YouTube下载音频c#
- 23. 如何从YouTube上获取视频下载链接?
- 24. 使用HybridAuth和PHP将视频上传到Youtube频道
- 25. 使用视频ID从PHP API Youtube视频质量
- 26. 如何在iOS中下载YouTube视频
- 27. [Android]产品下载YouTube视频
- 28. 从YouTube上传视频
- 29. 脚本从YouTube上下载视频(错误150)
- 30. 通过gdata-objectivec-client下载youtube视频
注意:这样做违反了Youtube使用条款。 – 2010-08-01 19:45:10