[英]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.