2012-02-11 81 views
0

好吧我正在練習使用cURL登錄到不同的web服務。對於這個特別的嘗試,我正在做YouTube。這是一個相當大的挑戰,但我終於明白了... ...。cURL:沒有實際重定向後的重定向

將大量的發佈數據標籤發佈到登錄頁面後,您會發送到checkCookie類的東西。 checkcookie頁面驗證您是否擁有正確的cookies,然後將您重定向到youtube.com(登錄到您的帳戶)這就是搞砸了我。

當我有這樣的:

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 

我得到checkcookie頁面的源代碼。它只是說「文檔已移動」。這不是我想要的,我想讓我登錄的源存儲到一個變量中。所以,我想別的東西......

當我使用此設置:

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 

我會發送到YouTube的頁面,我登錄!它似乎工作!除了...我不想被重定向到我的腳本。我的目標是讓我登錄的youtube.com的來源。

換句話說,cURL的登錄很好,問題是我從字面上重定向到YouTube。我不想要的。

有什麼建議嗎?這就像我需要遵循重定向...但不會被重定向。

感謝您的幫助!

回答

0

試試這個:

<?php 
function getURL($url) { 
    $curlHandle = curl_init(); // init curl 
    curl_setopt($curlHandle, CURLOPT_URL, $url); // set the url to fetch 
    curl_setopt($curlHandle, CURLOPT_HEADER, 0); 
    curl_setopt($curlHandle, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($curlHandle, CURLOPT_TIMEOUT,30); 
    curl_setopt($curlHandle, CURLOPT_POST, 0); 
    $content = curl_exec($curlHandle); 
    curl_close($curlHandle); 
    return $content; 
} 
?> 
0

看起來你是被重定向,因爲你呼應curl_exec,其中有重定向一個JavaScript代碼。由於您可能從瀏覽器請求該代碼,因此它會運行代碼並將您重定向到YouTube。如果是這種情況,顯而易見的解決方案是關閉JS或過濾你自己迴應的內容