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:
댓글 달기