PHP curl如何在使用代理时检索标题。卷发头功能?

PHP curl如何在使用代理时检索标题。卷发头功能?,php,curl,proxy,Php,Curl,Proxy,我正在使用以下代理连接到站点: $curl = curl_init(); curl_setopt($curl, CURLOPT_PROXY, $proxy); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, $data); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

我正在使用以下代理连接到站点:

$curl = curl_init();
curl_setopt($curl, CURLOPT_PROXY, $proxy);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_POST, 1); 
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);  
curl_setopt($curl, CURLOPT_HEADER, TRUE);
$result = curl_exec ($curl);
问题是
CURLOPT_HEADER
正在从代理连接返回头,而我需要从实际请求返回到URL的头。我相信解决方案包括使用
CURLOPT_HEADERFUNCTION
,但我不知道如何使用它

我试过这个(从其他地方拍摄):

使用函数:

function HandleHeaderLine($curl, $header_line ) {
    echo "<br>YEAH: ".$header_line; // or do whatever
    return strlen($header_line);
}
函数HandleHeaderLine($curl,$header_行){
echo“
是:“.$header\u line;//或者做任何事情 返回strlen($header\u行); }
但我似乎只能返回字节数。我不确定如何得到实际值。在我的情况下,我只需要
位置
标题


谢谢。

用于
CURLOPT_HEADERFUNCTION
的匿名回调将需要访问要存储标头信息的变量。有几种不同的方法,但这里有一些例子:

使用
使用

$headers = [];
...
function HandleHeaderLine($curl, $header_line) use (&$headers)
{
    ...
    if ($isHeaderIWant) {
        $header[] = 'some info';
    }
    return strlen($header_line);
}
使用类属性:

private $headers = [];
...
function HandleHeaderLine($curl, $header_line)
{
    ...
    if ($isHeaderIWant) {
        $this->header[] = 'some info';
    }
    return strlen($header_line);
}

curl是只返回代理头还是返回所有头?因为如果是第一个,可能是您的代理配置中的某些东西在抑制这些信息(我不认为如何,因为浏览器需要它们),如果是第二个,您只需处理它返回的字符串头()。Curl肯定是在检索所有头。当我启用
verbose
时可以看到它。问题是
CURLOPT_HEADER
只返回代理头,因此我无法使用它来检索
位置
private $headers = [];
...
function HandleHeaderLine($curl, $header_line)
{
    ...
    if ($isHeaderIWant) {
        $this->header[] = 'some info';
    }
    return strlen($header_line);
}