【问题标题】:Getting a list of CURLOPT_FOLLOWLOCATION redirect URLs获取 CURLOPT_FOLLOWLOCATION 重定向 URL 列表
【发布时间】:2014-02-20 22:09:26
【问题描述】:

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

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

【问题讨论】:

    标签: php curl


    【解决方案1】:

    以下代码应该适合您,它使用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 被重定向到的 URL。

    【讨论】:

      【解决方案2】:

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

      您可能同样适合关闭跟踪重定向选项并手动发出后续 cURL 请求以跟踪重定向,并在此过程中记录重定向信息。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-09-07
        • 1970-01-01
        • 2013-02-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-11-02
        • 1970-01-01
        相关资源
        最近更新 更多