function curl($url) {
// 시스템 임시 폴더에 임시 쿠키 파일 생성 (세션 유지용)
$cookieFile = tempnam(sys_get_temp_dir(), 'cookie'); // 임시 쿠키 파일 생성
// cURL 세션 초기화
$ch = curl_init();
// 요청을 보낼 URL 설정
curl_setopt($ch, CURLOPT_URL, $url);
// 실행 결과를 바로 출력하지 않고, 문자열로 반환하도록 설정
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// 서버에게 보낼 User-Agent 헤더 설정 (브라우저인 척하기 위해)
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36');
// 추가 HTTP 헤더들 설정
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
// 어떤 종류의 응답을 받아들일지 명시
'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
// 선호하는 언어 설정
'Accept-Language: en-US,en;q=0.5',
// 연결 유지 옵션
'Connection: keep-alive',
// HTTPS 아닌 요청에서 HTTPS로 업그레이드 요청(브라우저가 주로 보내는 헤더)
'Upgrade-Insecure-Requests: 1'
));
// 서버에서 보낸 리다이렉트(301, 302 등)를 자동으로 따라가도록 설정
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
// 서버에서 내려보내는 쿠키를 저장할 파일 지정
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookieFile);
// 요청 보낼 때 이 쿠키 파일을 사용하도록 설정
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookieFile);
// SSL 인증서 검증 비활성화 (보안상 좋지 않지만, 테스트용으로 종종 사용)
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // SSL 검증 비활성화, 보안상 주의
// 최대 실행 시간(초) 설정. 30초 안에 응답 없으면 중단
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
// 설정된 옵션으로 실제 HTTP 요청 실행
$response = curl_exec($ch);
// 요청 중 에러 발생 여부 확인
if (curl_errno($ch)) {
// 에러가 있으면 에러 메시지 출력
echo 'cURL error: ' . curl_error($ch);
} else {
// 에러 없으면 응답 내용 반환 (HTML 소스 등)
return $response;
}
// cURL 세션 종료 (자원 해제)
curl_close($ch);
// 사용했던 임시 쿠키 파일 삭제
unlink($cookieFile); // 쿠키 파일 삭제
}
// 아래는 사용 예시 (현재는 주석 처리된 상태)
// 크롤링할 URL 정의 예시
// $url = 'https://naver.com';
// 직접 만든 curl 함수 대신 getContent라는 다른 함수 테스트를 했던 흔적 (현재는 없음)
// $content = getContent($url);
// echo $content;
// curl 함수에 URL을 넣어 호출하는 예시
// $url = $url;
// $response = curl($url);
// 응답 내용(HTML)을 화면에 출력
// echo $response;
'PHP Tip' 카테고리의 다른 글
| CSS란? (0) | 2025.12.27 |
|---|---|
| MySQL Host, User, Password, DB 정보에 오류가 있습니다. (0) | 2025.12.27 |
| DB 없이 chatbot 간단하게 만들기 (0) | 2025.12.20 |
| 릴 게임 · Lucky Reels source (0) | 2025.12.19 |
| /* 페이징 스타일 복원 + 반응형 */ (0) | 2025.12.18 |