curl에서 웹페이지 긁어올때 cookie 설정 문제 질문드립니다.
글쓴이: dael / 작성시간: 월, 2012/06/04 - 2:28오후
웹페이지를 긁어오려고 하는데 사이트 측에서 쿠키값이 없으면 아래와 같은 스크립트를 리턴합니다.
<html><script lang=javascript> document.cookie = '_accessKey2=fdTVXb1PH44kFtrkgSEtexctUAL6Lm22' window.location.reload(); </script></html>
그래서 아래와 같은 코드로 먼저 쿠키값을 받아서
curl CURLOPT_COOKIE에 넣어주니 빈값만 리턴이 됩니다^^;
어딜 놓친지 아무리 찾아봐도 안보이네요.
포럼에 도움을 요청드려봅니다 :D
function crawl() {
$url = "http://suncheon.ac.kr/wiz/contents/schedule/schedule.php?home_id=suncheon&handle=20";
debug(self::get ($url));
}
function get ($url) {
if ( false === ($cookie = self::getCookie ($url)) )
return false;
if ( false === ($data = self::getPage ($url, $cookie)) )
return false;
return $data;
}
function getPage ($url, $cookie = '') {
$c = curl_init ($url);
curl_setopt ($c, CURLOPT_URL, $url);
curl_setopt ($c, CURLOPT_TIMEOUT, 60);
curl_setopt ($c, CURLOPT_NOPROGRESS, 1);
curl_setopt ($c, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($c, CURLOPT_USERAGENT, self::$useragent);
curl_setopt ($c, CURLOPT_REFERER, 'suncheon.ac.kr');
$src = array ('!http[s]?://!', '!/.*!');
$dst = array ('', '');
$host = preg_replace ($src, $dst, $url);
$header[] = 'Host: ' . $host;
#$header[] = 'Excpet:';
curl_setopt ($c, CURLOPT_HEADER, 0);
curl_setopt ($c, CURLOPT_NOBODY, 0);
curl_setopt ($c, CURLOPT_HTTPHEADER, $header);
//curl_setopt ($c, CURL_FAILONERROR, 0);
curl_setopt ($c, CURLOPT_SSL_VERIFYPEER, false);
if ( $cookie )
curl_setopt ($c, CURLOPT_COOKIE, $cookie);
$data = curl_exec($c);
debug($data);
if ( empty ($data) ) {
error_log ('Error: ' . curl_error ($c), 0);
return false;
}
curl_close ($c);
retur
n $data;
}
function getCookie ($url) {
$data = self::getPage ($url);
preg_match ('/(_accessKey2=[^\']+)\'/', $data, $m);
if ( ! trim ($m[1]) ) {
error_log ('Error: Can\'t get krnic cookies => ' . $m[1], 0);
return false;
}
return $m[1];
}Forums:


댓글 달기