Php 让cURL跟随重定向

Php 让cURL跟随重定向,php,curl,http-redirect,Php,Curl,Http Redirect,我在Laravel中有一个应用程序,它可以抓取站点并检索特定信息。 最近,我看到越来越多的网站获得403forbiidden,所以我决定第一次尝试使用cURL 我现在唯一的问题是,有301或302重定向的站点,cURL没有遵循它们 这就是我所拥有的: $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $results['url_search']); curl_setopt($curl, CURLOPT_

我在Laravel中有一个应用程序,它可以抓取站点并检索特定信息。 最近,我看到越来越多的网站获得403forbiidden,所以我决定第一次尝试使用cURL

我现在唯一的问题是,有301或302重定向的站点,cURL没有遵循它们

这就是我所拥有的:

$curl = curl_init(); 
        curl_setopt($curl, CURLOPT_URL, $results['url_search']);  
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);  
        curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 10);  
        curl_setopt($curl,CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13');

        $str = curl_exec($curl);  

        $header_size = curl_getinfo($curl, CURLINFO_HEADER_SIZE);
        $header = curl_getinfo($curl, CURLINFO_HTTP_CODE);
        $body = substr($str, $header_size);

        curl_close($curl); 
正如我所说,在有重定向的页面上,我会被卡住。有什么建议吗?
我见过一些东西,但没有一件奏效。

curl
有一个选项可以实现您想要的东西, 以下重定向:

curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
在执行之前,只需将这一行添加到curl选项中

正如您所料,这将遵循任何301/302重定向,并最终到达一个站点,而该站点不会进一步重定向您的请求

另外,请记住(如果没有解决方法),这可能会导致无限循环。(站点a重定向到b,站点b重定向到a)

也就是说,您也应该使用此选项:

curl_setopt($curl, CURLOPT_MAXREDIRS, 10);
这样,您的请求将在10次重定向后结束,您不必担心脚本在无休止的循环中运行


您进一步使用不同选项的一个很好的来源是

上的关于站点。您可以解析标题,并发出另一个curl请求。但是如何获得实际的标题响应呢?我所拥有的($header=curl\u getinfo($curl,CURLINFO\u HTTP\u CODE);)只是在解析后给出了数字。我可以使用get_标题吗?谢谢@DasSaffe这正是我想要的,它就像一个符咒!