如何在CURLOPT_FOLLOWLOCATION設置爲True的情況下加載頁面時,如何獲得CURL所遵循的URL列表?獲取CURLOPT_FOLLOWLOCATION重定向URL的列表
我知道有一個curl_getinfo($ ch,CURLINFO_EFFECTIVE_URL)函數,但它只返回最後一個URL。
如何在CURLOPT_FOLLOWLOCATION設置爲True的情況下加載頁面時,如何獲得CURL所遵循的URL列表?獲取CURLOPT_FOLLOWLOCATION重定向URL的列表
我知道有一個curl_getinfo($ ch,CURLINFO_EFFECTIVE_URL)函數,但它只返回最後一個URL。
下面的代碼應該爲你工作,它採用了CURLOPT_HEADERFUNCTION
捲曲選項:
$locations = array();
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_HEADERFUNCTION, function($curl, &$header) use(&$locations) {
$key = 'Location:';
if (strpos($header, $key) === 0) {
$locations[] = trim(substr($header, strlen($key)));
}
return strlen($header);
});
// ...
curl_exec($curl);
$locations
將包含捲曲經重定向到的URL。
您應該可以使用CURLOPT_HEADER
選項並檢查返回的標題。不幸的是,這將需要解析出位置標題,因爲我不知道從返回的內容中獲取特定標題值的更直接方式。
您可能會非常適合關閉跟隨重定向的選項,並手動跟蹤cURL請求以遵循重定向,並沿途記錄重定向信息。