2013-04-07 134 views
-3

播放YouTube视频我用卷曲刮的Youtube这样的:使用卷曲

<?php 
$url = "http://www.youtube.com/watch?v=RnpyRe_7jZA"; 

$ch = curl_init($url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
$curl_scraped_page = curl_exec($ch); 
curl_close($ch); 

$curl_scraped_page = preg_replace("#(<\s*a\s+[^>]*href\s*=\s*[\"'])(?!http)([^\"'>]+)([\"'>]+)#",'$1http://www.youtube.com$2$3', $curl_scraped_page); 

echo $curl_scraped_page; 
?> 

这将加载页面,但它不会播放YouTube视频(给我的错误)。我能做些什么来使其发挥作用?我谷歌搜索,但没有太多的信息在这个问题上。

这是我在我的控制台中看到的一部分,当我打的播放按钮:

GET http://r1---sn-5hn7zn7r.c.youtube.com/videoplayback?algorithm=throttle-fact…r%2Cid%2Cip%2Cipbits%2Citag%2Csource%2Cupn%2Cexpire&sver=3&upn=CKRxxB49gXE 403 (Forbidden) www-watch-extra-vflTE8ErJ.js:85 
GET http://tc.v21.cache3.c.youtube.com/videoplayback?algorithm=throttle-factor&…r%2Cid%2Cip%2Cipbits%2Citag%2Csource%2Cupn%2Cexpire&sver=3&upn=CKRxxB49gXE 403 (Forbidden) tc.v21.cache3.c.youtube.com/videoplayback?algorithm=throttle-factor&burst=4…2Cid%2Cip%2Cipbits%2Citag%2Csource%2Cupn%2Cexpire&sver=3&upn=CKRxxB49gXE:1 
GET http://r1---sn-5hn7zn7r.c.youtube.com/videoplayback?algorithm=throttle-fact…ver=3&upn=CKRxxB49gXE&ptchn=NickiMinajAtVEVO&ptk=vevo&cpn=uXm1XYfZqNkRDPGT 403 (Forbidden) r1---sn-5hn7zn7r.c.youtube.com/videoplayback?algorithm=throttle-factor&burs…r=3&upn=CKRxxB49gXE&ptchn=NickiMinajAtVEVO&ptk=vevo&cpn=uXm1XYfZqNkRDPGT:1 
GET http://tc.v21.cache3.c.youtube.com/videoplayback?algorithm=throttle-factor&…RxxB49gXE&ptchn=NickiMinajAtVEVO&playretry=1&ptk=vevo&cpn=uXm1XYfZqNkRDPGT 403 (Forbidden) tc.v21.cache3.c.youtube.com/videoplayback?algorithm=throttle-factor&burst=4…xB49gXE&ptchn=NickiMinajAtVEVO&playretry=1&ptk=vevo&cpn=uXm1XYfZqNkRDPGT:1 
+0

我试过你的代码在我的本地主机在IE9和Chrome和它似乎很好地工作。你使用的是什么浏览器?什么版本的PHP? – sagibb 2013-04-07 09:07:50

+0

@tutipute代码有效,但视频无法播放......我使用的是Chrome(最新)和最新的PHP – Youss 2013-04-07 09:10:09

+0

当我写下“代码完美无缺”时,我的意思是视频确实播放。 :)你可以尝试在隐身模式下运行它吗?难道它会与你们其中一个分机冲突吗? – sagibb 2013-04-07 09:11:07

回答

1

如果你看看你的控制台,你会看到,服务器403错误回应。这意味着“访问被禁止”。 YouTube可能不希望服务器(机器人)下载他们的网站。您可以修改HTTP报头看起来像PHP中的正常的浏览器,例如:

header("User-Agent: Mozilla/5.0 Macintosh; Intel Mac OS X 10.8; rv:19.0) Gecko/20100101 
Firefox/19.0"); 

正如我注意到它依赖于服务器的配置。虽然它可能不适用于你,但我在我的测试服务器上测试过它,它工作正常。

它发送的头是:

194.166.35.216 - - [07/Apr/2013:13:36:39 +0200] "GET/HTTP/1.1" 200 2739 "-" "-" 

很抱歉,如果我不能帮你。

+0

太糟糕了,它不工作+1,谢谢 – Youss 2013-04-07 18:21:08