如何在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请求以遵循重定向,并沿途记录重定向信息。