Часто бывает необходимо при парсинге прочитать передаваемые целевой страницей куки и заголовки, lzk последующего их использования.
Написал функцию, которая позволяет это делать. Ниже приведен пример с комментариями, базируясь на котором можно собрать код нужной функциональности:
//$url=имя хоста, куда будем заходить
function load_page($url){
$cookies=array();
// имя хоста, откуда якобы пришли, некоторые проверяют
$ref=”google.com”;
// инициализация cURL
$ch = curl_init($url);
//– откуда пришли )
curl_setopt($ch, CURLOPT_REFERER, $ref);
// чтобы выводил заголовки
curl_setopt ($ch, CURLOPT_HEADER, 1);
// чтобы не выводил саму страницу (она не нужна)
curl_setopt ($ch, CURLOPT_NOBODY, 1);
// если ведется проверка HTTP User-agent, то передаем один из возможных допустимых вариантов:
curl_setopt ($ch, CURLOPT_USERAGENT, ‘Mozilla/5.0 (Windows; U; Windows NT 6.1; ru; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8′);
// если проверятся откуда пришел пользователь, то указываем допустимый заголовок HTTP Referer:
curl_setopt ($ch, CURLOPT_REFERER, ‘http://’.$hostname.’/');
// возвращать результат работы
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
// не проверять SSL сертификат
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0);
// не проверять Host SSL сертификата
curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0);
// это необходимо, чтобы cURL не высылал заголовок на ожидание
curl_setopt ($ch, CURLOPT_HTTPHEADER, array(‘Expect:’));
// выполнить запрос
curl_exec ($ch);
$t=curl_multi_getcontent ($ch);
curl_close ($ch);
// получил массив всех заголовков от сервера
$headers = explode(“\n”, $t);
return $headers;
}
Функция вернет массив заголовков
чтото вроде
Array
(
[0] => HTTP/1.1 200 OK
[1] => Cache-Control: private
[2] => Content-Length: 3260
[3] => Content-Type: text/html; charset=utf-8
[4] => P3P: CP=”NOI ADM DEV PSAi COM NAV OUR OTR STP IND DEM”
[5] => X-Powered-By: ASP.NET
[6] => X-AspNet-Version: 2.0.50727
[7] => Set-Cookie: FirstVisit=20090514 172432; expires=Tue, 14-May-2019 17:24:32 GMT; path=/
[8] => Set-Cookie: ASP.NET_SessionId=supxkw55aixbuwa00yan5y55; path=/; HttpOnly
[9] => Set-Cookie: userSettings=language=1&timezone=25&CID=643; expires=Tue, 14-May-2019 17:24:32 GMT; path=/
[10] => Set-Cookie: ParentAppId=currentE=60&parentE=24; domain=.bwin.com; expires=Sat, 13-Jun-2009 17:24:32 GMT; path=/
[11] => Date: Thu, 14 May 2009 17:24:32 GMT
}
если необходимо при получении контента передать какие либо параметры, например куки передаются вот так
curl_setopt($ch, CURLOPT_COOKIE, $value);
$value соответственно где то заранее хранится
