2012-02-11 59 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或过滤你自己回应的内容