簡體   English   中英

獲取cURL以遵循重定向

[英]Get cURL to follow redirects

我在Laravel中有一個應用程序可以擦除網站並檢索特定信息。 最近我看到越來越多的網站獲得403 forbiidden所以我決定第一次嘗試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-options中。

正如您所料,這將遵循任何301/302重定向並最終在網站上,而不會進一步重定向您的請求。

此外,請記住(沒有解決方法)這可能會導致無限循環。 (網站重定向到b,b重定向到a)。

也就是說,您也應該使用此選項:

curl_setopt($curl, CURLOPT_MAXREDIRS, 10);

這樣,您的請求將在10次重定向后結束,並且您無需擔心腳本在無限循環中運行。

使用不同選項進一步工作的一個很好的來源是php.net上的關於網站

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM