IT이야기

cURL 완벽 정리 - 사용법, 프로토콜 보안, 자동화 스크립트

Chiba-in 2025. 2. 14. 14:15

📌 cURL 완벽 정리 - 사용법, 프로토콜 보안, 자동화 스크립트

cURL(Client URL)은 명령줄에서 HTTP 요청을 보낼 수 있는 강력한 도구입니다. 웹 개발, API 테스트, 파일 다운로드 및 업로드 등 다양한 용도로 사용됩니다. 이번 글에서는 cURL의 개념, 사용법, 주요 옵션, 보안 이슈, 자동화 스크립트 등을 정리해 보겠습니다.


1. cURL이란?

(1) cURL의 정의

  • cURL(Client URL)은 명령줄에서 데이터를 송수신할 수 있는 오픈소스 도구입니다.
  • HTTP, HTTPS, FTP, FTPS, SCP, SFTP, LDAP, SMTP, IMAP, POP3 등 다양한 프로토콜을 지원합니다.
  • 주로 API 테스트, 파일 다운로드 및 업로드, 웹 요청 자동화에 사용됩니다.
  • C, PHP, Python, JavaScript 등 다양한 언어에서 libcurl 라이브러리로 활용 가능합니다.

(2) cURL의 주요 기능

HTTP 요청을 간편하게 테스트 가능 (GET, POST, PUT, DELETE 지원)
다양한 프로토콜 지원 (FTP, SFTP, SMTP, IMAP 등)
자동화 스크립트에서 활용 가능
오픈소스 및 크로스플랫폼 지원 (Windows, macOS, Linux)


2. cURL 설치 방법

cURL은 대부분의 OS에서 기본적으로 제공되지만, 설치가 필요한 경우 아래 방법을 따릅니다.

(1) Windows에 cURL 설치

  • 최신 Windows 10/11에서는 기본 제공됨 (curl --version으로 확인 가능)
  • 직접 설치하려면 cURL 공식 웹사이트에서 다운로드 후 환경변수 설정

(2) macOS에 cURL 설치

brew install curl

(3) Linux에 cURL 설치

# Ubuntu/Debian
sudo apt update && sudo apt install curl -y

# CentOS/RHEL
sudo yum install curl -y

3. cURL 사용법

(1) 기본 GET 요청 보내기

curl https://example.com

웹사이트의 HTML 소스를 출력

(2) HTTP POST 요청 보내기

curl -X POST -d "username=user&password=pass" https://example.com/login

폼 데이터를 전송하는 POST 요청

(3) JSON 데이터 전송 (API 요청)

curl -X POST https://api.example.com/data \
     -H "Content-Type: application/json" \
     -d '{"name":"John", "age":30}'

JSON 데이터를 API에 POST 요청


4. cURL의 프로토콜 보안

(1) HTTPS 보안 옵션 사용하기

  • HTTPS를 사용할 때 SSL/TLS 인증서 검증이 필요합니다.
  • -k 옵션을 사용하면 인증서 검증을 무시하지만, 보안이 취약해질 수 있습니다.
    curl -k https://secure.example.com

(2) SSL/TLS 인증서 검증 활성화

curl --cacert /path/to/cert.pem https://secure.example.com

신뢰할 수 있는 인증서를 사용하여 보안 강화

(3) 기본 인증 및 토큰 인증

  • 기본 인증: -u 옵션 사용
    curl -u username:password https://example.com/protected
  • 토큰 기반 인증 (Bearer Token)
    curl -H "Authorization: Bearer your_token_here" https://api.example.com/protected

5. cURL을 활용한 자동화 스크립트

cURL을 쉘 스크립트에서 활용하면 반복 작업을 자동화할 수 있습니다.

(1) API 데이터를 주기적으로 가져오는 스크립트

#!/bin/bash
URL="https://api.example.com/data"
OUTPUT="data.json"

while true; do
    echo "Fetching data from API..."
    curl -s -o $OUTPUT $URL
    echo "Data saved to $OUTPUT"
    sleep 60  # 60초마다 실행
done

API 데이터를 1분마다 자동으로 가져와 data.json에 저장하는 스크립트

(2) 파일 다운로드 자동화

#!/bin/bash
FILE_URL="https://example.com/file.zip"
DESTINATION="/path/to/save/file.zip"

curl -o $DESTINATION $FILE_URL

자동으로 파일을 다운로드하여 특정 경로에 저장하는 스크립트


6. cURL과 wget 비교

cURL과 wget은 모두 HTTP 요청을 보낼 수 있는 도구이지만, 사용 방식이 다릅니다.

비교 항목 cURL wget
주요 용도 API 요청, 데이터 송수신 웹사이트 및 파일 다운로드
지원 프로토콜 HTTP, FTP, SCP, SFTP 등 다양함 주로 HTTP, FTP
리디렉션 -L 옵션 사용 기본적으로 따라감
반복 다운로드 기본적으로 지원 안 함 -r 옵션으로 가능
인터랙티브 모드 제공하지 않음 제공 (미러링 기능 포함)

7. 마무리 🎯

cURL은 웹 요청을 손쉽게 테스트하고 데이터를 송수신하는 강력한 도구입니다.

  • GET, POST, PUT, DELETE 요청을 자유롭게 활용할 수 있습니다.
  • API 테스트, 파일 다운로드 및 업로드, 자동화 스크립트 작성 등에 유용합니다.
  • 주요 옵션 (-X, -d, -H, -o, -O, -L 등)을 숙지하면 더욱 효과적으로 사용할 수 있습니다.