2010-09-21 47 views
0

我已經使用了一個簡單的file_get_contents函數,但沒有得到實際的內容(輸出)..file_get_contents沒有獲取文件內容?

我無法找到錯誤!

代碼:

<?php 

// $url = $_GET['url']; 

// $flv_http_path = urlencode($url); 

$flv_http_path = 'http://r12.bhartibb-maa1.c.youtube.com/videoplayback?ip=0.0.0.0&sparams=id%2Cexpire%2Cip%2Cipbits%2Citag%2Calgorithm%2Cburst%2Cfactor%2Coc%3AU0dXSlBSUl9FSkNNN19ITFZB&algorithm=throttle-factor&itag=34&ipbits=0&burst=40&sver=3&expire=1285074000&key=yt1&signature=3E1E4994130745C392FA479F6ACCE5F40E703A2C.A87325A1DCB178B04FD89A9DEEE811CDCB08157C&factor=1.25&id=8b2fd4fd9ac2f09f&st=lc'; 

echo "----$flv_http_path------"; 


$data = file_get_contents($flv_http_path); 

echo "$data"; 

if($data) 
    echo "data is avail"; 
else 
    echo "data not available"; 

// $new_flv_path = dirname(_FILE_).'/flvs/sample.flv' ; 

$new_flv_path = '/home/public_html/temp/sample.flv' ; 

if(file_put_contents($new_flv_path, $data)) 
    return $new_flv_path ; 
else 
{ 
    echo "else part "; 
    return false; 
} 

?> 

我得到的網址從YouTube視頻

的響應頭和我得到了標題爲

http://v3.lscache1.c.youtube.com/videoplayback?ip=0.0.0.0&sparams=id%2Cexpire%2Cip%2Cipbits%2Citag%2Calgorithm%2Cburst%2Cfactor%2Coc%3AU0dXSlBTVl9FSkNNN19ITVpF&algorithm=throttle-factor&itag=34&ipbits=0&burst=40&sver=3&expire=1285088400&key=yt1&signature=536A81F10AA43A4E015BB05FA182A9A966047C3C.C22269E2E1ECFC2C2DE7A8A45BA2C3DF7CF1EC08&factor=1.25&id=fd61d32bbbd1be5e& 

GET /videoplayback?ip=0.0.0.0&sparams=id%2Cexpire%2Cip%2Cipbits%2Citag%2Calgorithm%2Cburst%2Cfactor%2Coc%3AU0dXSlBTVl9FSkNNN19ITVpF&algorithm=throttle-factor&itag=34&ipbits=0&burst=40&sver=3&expire=1285088400&key=yt1&signature=536A81F10AA43A4E015BB05FA182A9A966047C3C.C22269E2E1ECFC2C2DE7A8A45BA2C3DF7CF1EC08&factor=1.25&id=fd61d32bbbd1be5e& HTTP/1.1 
Host: v3.lscache1.c.youtube.com 
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1) Gecko/20090616 Firefox/3.5 
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 
Accept-Language: en-us,en;q=0.5 
Accept-Encoding: gzip,deflate 
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 
Keep-Alive: 300 
Connection: keep-alive 
Cookie: VISITOR_INFO1_LIVE=9CH-GUrsSEQ; __utma=27069237.1455305642.1275034254.1279868001.1280568792.6; __utmz=27069237.1279868001.5.2.utmcsr=google.com|utmccn=(referral)|utmcmd=referral|utmcct=/landing/youtube/lifeinaday/; watched_video_id_list_kvijayhari=7b1d7ce3852b9aca07a985813b83aaa6WxMAAABzCwAAADFuNzRnSExwU0M4cwsAAAB2ajgxNXlQNDFMQXMLAAAARWNjZ0lLdHVDM1lzCwAAAHFHZFo5elhoQ0ZvcwsAAAB0WXMwTXhvbTRjSXMLAAAAYUdBdDZwNGh0c2NzCwAAAGR2V25wMjdBSGZvcwsAAABtNDBhbG1SQzNzSXMLAAAANjhVT1BhTUtwOTBzCwAAADZnaFUxWDBqdVM4cwsAAABiRy0xYTRsUnlEMHMLAAAAWjh5OFFDRFNUQ29zCwAAADY0T0w3NzhBeUlFcwsAAABzQkl1OWpnSWtwQXMLAAAASllYM08wWEEteWdzCwAAAF95WGxpc0g4dkF3cwsAAABzcXZCSXdDMWxtWXMLAAAAaEMzd09EU0U5MHdzCwAAAGZaODhxaHduTVow; auto_translation=b901c47ed36700682e23d64062529856cwQAAAB0cnVl; PREF=f1=50000000&f2=2000&emt=iceberg&ftuc=32&ems=hd720&HIDDEN_MASTHEAD_ID=brO_JIa6RTI; use_hitbox=72c46ff6cbcdb7c5585c36411b6b334edAEAAAAw; GEO=489e10e70a42c0dfed7513e1895ffe1bcwsAAAAzSU56spxTTJhEAw==; watched_video_id_list=2aa4a241cbdc35137f13b3513ea3e653WwQAAABzCwAAAF9XSFRLN3ZSdmw0cwsAAABpeV9VX1pyQzhKOHMLAAAAd3ZsTUFKLVU2SEVzCwAAAENaQmpoVGQ0WjlN 

HTTP/1.0 200 OK 
Last-Modified: Sun, 20 Jun 2010 03:59:10 GMT 
Content-Type: video/x-flv 
Date: Tue, 21 Sep 2010 10:05:34 GMT 
Expires: Tue, 21 Sep 2010 16:55:00 GMT 
Cache-Control: public, max-age=24566 
Content-Length: 4077907 
Accept-Ranges: bytes 
X-Content-Type-Options: nosniff 
Server: gvs 1.0 
X-Cache: MISS from localhost.localdomain 
X-Cache-Lookup: MISS from localhost.localdomain:3128 
Via: 1.0 localhost.localdomain:3128 (squid/2.6.STABLE6) 
Connection: keep-alive 
+0

基本調試告訴你什麼?打開'error_reporting(E_ALL)'時出現任何錯誤? – 2010-09-21 09:54:25

+0

它不會打印任何錯誤..它只是打印的網址,然後其他循環在兩個條件執行.. – Vijay 2010-09-21 09:57:16

+0

我從HTTP的HTTP實時標頭獲得該網址.. – Vijay 2010-09-21 10:05:00

回答

0

這是youtubes防止你自動抓取他們的FLV文件的方式。

您無法從服務器獲取文件,因爲下載鏈接(您從瀏覽器獲得,或者您如何找到flv鏈接)已鎖定到您的瀏覽器。

這就是爲什麼當你以外的人嘗試打電話給我們的鏈接時,我們都會得到403 HTTP禁止,即使是僞造的用戶代理。

嘗試使用cURL並顯示標題,你會明白我的意思。

+0

因此,如果我使用cURL,可以從YouTube上發送的實時標題列表中匹配確切的標題。 – Vijay 2010-09-21 10:14:39

+0

即使您匹配確切的標題,它也不起作用。因爲您從實時標題獲得的鏈接被鎖定到您的IP,而不是服務器。我只是建議使用cURL,因爲這樣您可以在服務器調用中看到來自youtube的403消息。 (我有什麼意義?) – Birk 2010-09-21 10:20:56

1

檢查您的網址。

當我把你的網址在瀏覽器中它沒有提供任何東西,所以file_get_contents返回一個空字符串。

您需要檢查的file_get_contents輸出爲:

if($data !== false) 

,而不是

if($data) 
+0

我試過但沒有輸出。當我在瀏覽器中試試這個URL時,它彈出一個窗口,詢問是否保存或打開該文件 – Vijay 2010-09-21 10:00:55

+0

此外,你可以看看是否啓用了allow_url_fopen。或者,您可以使用cURL來嘗試。 – Sebs 2010-09-21 10:03:24

1

我也得到一個HTTP響應500爲了抓取的Youtube,你可能將不得不欺騙呼叫的用戶代理和其他措施,以防止Youtube將您標識爲抓取工具。

0

我得到了​​在follwoing地點:

http://r12.bhartibb-maa1.c.youtube.com/videoplayback?ip=0.0.0.0&sparams=id,expire,ip,ipbits,itag,algorithm,burst,factor,oc:U0dXSlBSUl9FSkNNN19ITFZB&algorithm=throttle-factor&itag=34&ipbits=0&burst=40&sver=3&expire=1285074000&key=yt1&signature=3E1E4994130745C392FA479F6ACCE5F40E703A2C.A87325A1DCB178B04FD89A9DEEE811CDCB08157C&factor=1.25&id=8b2fd4fd9ac2f09f&st=lc

響應頭:

的Content-Type:text/plain的

日期:星期二, 21 Sep 2010 09:59:13 GMT

代理連接:靠近

服務器:GVS 1.0

途經:1.0 [email protected]:8080(魷魚/ 2.6.STABLE19),1.0 wcsproxy.XXXX.org.uk:8080 (魷魚/ 2.6.STABLE19)

X-緩存:MISS從[email protected],MISS從wcsproxy.XXX.org.uk

X-的Content-Type-選項:nosniff

0

那麼,當我試圖加載你引用的網址$flv_http_path我得到:

HTTP/1.1 403 Forbidden 
Content-Type: text/plain 
Connection: close 
X-Content-Type-Options: nosniff 
Date: Tue, 21 Sep 2010 09:57:19 GMT 
Server: gvs 1.0 

作爲回報。

這應該給你一些提示:)

如果不是你試圖打開acutal文件,你實際上並不想湊YouTube您應該儘量在包裹中進行urlencode URL()編輯:但URL已經urlencoded(杜!)

「如果你打開一個URI的特殊字符,如空格,你需要用urlencode()編碼的URI。」 - http://www.php.net/manual/en/function.file-get-contents.php

0

鏈接爲空。在瀏覽器中啓動鏈接並檢查源代碼。沒有數據。

相關問題