Я использовал следующий код:
$domain = "www.google.com";
// open the socket
$f = @stream_socket_client($domain . ":80", $err, $errstr, 30, STREAM_CLIENT_CONNECT);
if(!$f)
die("Error: " . $err . $errstr);
// prepare the HTTP request headers
$request_headers = "GET / HTTP/1.1" . "\r\n";
$request_headers .= "Host: " . $domain . "\r\n";
$request_headers .= "Connection: close" . "\r\n";
$request_headers .= "\r\n";
// send the HTTP request
fputs ($f, $request_headers);
// read everything from the socket
$buf = "";
while (!feof($f)) {
$buf .= fgets ($f, 8192);
}
// close the socket
fclose($f);
// split the headers and the body
$response = preg_split("|(?:\r?\n){2}|m", $buf, 2);
if(!isset($response[1]))
$response[1] = "";
$headers = array();
$content = $response[1];
$out = preg_split("|(?:\r?\n){1}|m", $response[0]);
foreach($out as $line){
@list($key, $val) = explode(": ", $line, 2);
if ($val != null) {
if(!array_key_exists(strtolower($key), $headers))
$headers[strtolower($key)] = strtolower(trim($val));
} else
$headers[] = $key;
}
// now you have the response headers in an array
print_r($headers);
Далее нужно получить каждый файл cookie, сохраненный в виде строкового значения, и проанализировать его. Для этого я использовал функцию, скопированную из Zend Framework fromString () : http://www.sourcexref.com/xref/moodle/nav.html?lib/zend/Zend/Http/Cookie.php.source.html#l274.
Удачи.
PS Эта строка $ headers [strtolower ($ key)] = strtolower (trim ($ val)); переопределит значение параметра заголовка, если эта команда была дважды отправлена сервером.
Т.е .:
...
Connection: close
Expires: -1
Connection: close
Cache-control: private, max-age=0
...