curl 사용 예제

1 1
function getContentURL($url,$postData=null)
{
$conn = curl_init($url);
$conn_timeout = 3;
$exec_timeout = 3;
curl_setopt($conn, CURLOPT_HEADER, false); //응답헤더 OFF. ON 할경우 받는 파일에 헤더가 붙음.
curl_setopt($conn, CURLOPT_RETURNTRANSFER , true); //응답 내용 가져올지 여부. TRUE면 내용을 리턴. FALSE면 직접 브라우저에 출력
curl_setopt($conn, CURLOPT_USERAGENT,"Mozilla/5.0 mins01"); //User Agent 설정
curl_setopt($conn, CURLOPT_CONNECTTIMEOUT, $conn_timeout); //서버 접속시 timeout 설정
curl_setopt($conn, CURLOPT_CONNECTTIMEOUT, $exec_timeout); //서버 접속시 timeout 설정
//curl_setopt($conn, CURLOPT_TIMEOUT, $timeout); // curl exec 실행시간 timeout 설정
if(isset($postData)){
curl_setopt($conn, CURLOPT_POST, TRUE); //POST 전송
curl_setopt($conn, CURLOPT_POSTFIELDS, $postData); //POST값 세팅
}
$result['body'] = curl_exec($conn);
$result['errormsg'] = curl_error($conn);
$result['errorno'] = curl_errno($conn);
$result['httpcode'] = curl_getinfo($conn,CURLINFO_HTTP_CODE);
return $result;
}

쿠키, 기타 해더 등이 있지만...
그냥 알아서 추가하시오/



//$postRow => xxx=yyy&zzz=ttt
//$cookieRaw=> xxx=yyy; zzz=ttt;

function getContentURL($url,$postRaw=null,$cookieRaw=null)
{
$result = array();
$result['header'] = '';
$result['body'] = '';
$result['errormsg'] = '';
$result['errorno'] = '';
$result['httpcode'] = '404';
//return $result; //에러처리
$c_url = $url;
//$c_url = 'http://XXXX/proxy2.php?url='.urlencode($url); //프록시 사용시

$conn = curl_init($c_url);
$conn_timeout = 5;
$exec_timeout = 5;
curl_setopt($conn, CURLOPT_HEADER, true); //응답헤더 OFF. ON 할경우 받는 파일에 헤더가 붙음.
curl_setopt($conn, CURLOPT_RETURNTRANSFER , true); //응답 내용 가져올지 여부. TRUE면 내용을 리턴. FALSE면 직접 브라우저에 출력
// curl_setopt($conn, CURLOPT_USERAGENT,"Mozilla/5.0 sdgd"); //User Agent 설정
curl_setopt($conn, CURLOPT_USERAGENT,"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36"); //User Agent 설정
curl_setopt($conn, CURLOPT_CONNECTTIMEOUT, $conn_timeout); //서버 접속시 timeout 설정
curl_setopt($conn, CURLOPT_TIMEOUT, $exec_timeout); //서버 접속시 timeout 설정
//curl_setopt($conn, CURLOPT_TIMEOUT, $timeout); // curl exec 실행시간 timeout 설정
if(isset($postRaw[0])){
curl_setopt($conn, CURLOPT_POST, TRUE); //POST 전송
curl_setopt($conn, CURLOPT_POSTFIELDS, $postRaw); //POST값 세팅
}

if(isset($cookieRaw[0])){
curl_setopt($conn, CURLOPT_COOKIE, $cookieRaw); //POST값 세팅
}

$data = curl_exec($conn);
// printrr($data);
$split_result = split("\r\n\r\n", $data, 2);
$result['header'] = isset($split_result[0])?$split_result[0]:'';
$result['body'] = isset($split_result[1])?$split_result[1]:'';
$result['errormsg'] = curl_error($conn);
$result['errorno'] = curl_errno($conn);
$result['httpcode'] = curl_getinfo($conn,CURLINFO_HTTP_CODE);


@curl_close($conn);

// printrr($result);
//exit();

return $result;
}

#유틸 함수
# PHP 5이상용
function posts2raw($posts){
return http_build_query($posts, '', '&'); 
}
function cookies2raw($cookies){
if(count($cookies==0)){
return '';
}
return http_build_query($cookies, '', '; '); 
}


#SSL문제시 옵션
SSL certificate problem: self signed certificate in certificate chain

=> ssl 인증관련 동작 안하도록 함.
curl_setopt($conn, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($conn, CURLOPT_SSL_VERIFYHOST, FALSE);

# http가 200이 아닐때(에러 시)에도 body 가져오도록
curl_setopt($conn, CURLOPT_FAILONERROR, false);

# html 모든 내용이 깨져서 보일때
curl_setopt($conn,CURLOPT_ENCODING , "");
압축전송 인코딩 값을 ""로
댓글
  • No Nickname
    No Comment
  • 권한이 없습니다.
    {{m_row.m_nick}}
    -
목록형 📷 갤러리형
제목
[기본형] HTML (with 부트스트랩5.3 , jquery 3.7, vue.js)
유용한 리눅스(LINUX) 명령어
[공지] 기술 게시판
3.31
4.1
4.2
4.3
4.4
4.5
4.6
4.7
4.8
4.10
4.11
4.12
4.13
4.14
4.15
4.16
4.18
4.19
4.20
4.21
4.22
4.23
4.24
4.25
4.26
4.27
4.28
4.29
4.30
5.1
5.2
5.3
5.4