获取CURLOPT_FOLLOWLOCATION重定向URL列表

时间:2014-02-20 22:09:27

标签: php curl

如何在加载CURLOPT_FOLLOWLOCATION设置为True的页面时获取CURL遵循的URL列表?

我知道有一个curl_getinfo($ ch,CURLINFO_EFFECTIVE_URL)函数,但它只返回最后一个URL。

2 个答案:

答案 0 :(得分:2)

以下代码应该适用于您,它使用CURLOPT_HEADERFUNCTION cURL选项:

$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将包含cURL重定向到的网址。

答案 1 :(得分:0)

您应该能够使用CURLOPT_HEADER选项并检查返回的标头。不幸的是,这需要解析出位置标题,因为我不知道从返回的内容中获取特定标题值的更直接方法。

您可能也非常适合关闭重定向选项并手动跟进cURL请求以遵循重定向,并在此过程中记录重定向信息。