cURL获取重定向


cURL Gets redirected?

我正在编写一个php脚本,该脚本最终将从cURL检索的html中抓取图像。我注意到在一些网站上,我的目标网址并不是返回的。我的脚本被重定向到该网站页面的特定部分。

例如,如果我试图检索此页面上的html:链接

我得到了从这个页面返回的html:链接

这是我的cURL代码:

           function curl($url){
                $headers[]  = "User-Agent:Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; 
                    rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13";
                $headers[]  = "Accept:text/html,application/xhtml+xml,application/xml;q=0.9,
                    */*;q=0.8";
                $headers[]  = "Accept-Language:en-us,en;q=0.5";
                $headers[]  = "Accept-Encoding:gzip,deflate";
                $headers[]  = "Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.7";
                $headers[]  = "Keep-Alive:115";
                $headers[]  = "Connection:keep-alive";
                $headers[]  = "Cache-Control:max-age=0";
                $curl = curl_init();
                curl_setopt($curl, CURLOPT_URL, $url);
                curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
                curl_setopt($curl, CURLOPT_ENCODING, "gzip");
                curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
                curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
                $data = curl_exec( $curl );
                $header = curl_getinfo( $curl );
                curl_close($curl);
                return $header; 
            }
            $data = curl($_GET['url']);
            echo print_r($data);

有没有什么方法可以更多地欺骗脚本,这样它就不会被重定向?

@马里奥布格在这里,我试图在有图像的地方显示快速响应。如果我关闭跟踪位置,我不会得到任何

                ...
                $curl = curl_init();
                curl_setopt($curl, CURLOPT_URL, $url);
                curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
                curl_setopt($curl, CURLOPT_ENCODING, "gzip");
                curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
                curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 0);
                $data = curl_exec( $curl );
                //$header = curl_getinfo( $curl );
                curl_close($curl);
                return $data;   
            }
            $data = curl($_GET['url']);
            $dom = new DOMDocument();
            @$dom->loadHTML($data);
            $images = $dom->getElementsByTagName('img');
            foreach($images as $image) {
                echo "image here";
            }

http://curl.haxx.se/libcurl/c/CURLOPT_FOLLOWLOCATION.html

设置为1的参数告诉库跟随服务器在3xx响应中作为HTTP头的一部分发送的任何Location:头。这意味着libcurl将在新位置重新发送相同的请求,并一直遵循新的location:headers,直到不再返回这样的头。CURLOPT_MAXREDIRS可用于限制libcurl将遵循的重定向数量

您可以将其设置为FALSE/0以防止重定向