본문 바로가기

IT

curl 개념은?

728x90
반응형

 

 

 

curl이란?

curl (Client URL)은 데이터 전송을 위한 명령어 기반 툴 및 라이브러리입니다.


주로 HTTP, HTTPS, FTP, SFTP, SCP 등 다양한 프로토콜을 지원하며, 웹에서 데이터를 가져오거나 업로드하는 데 사용됩니다.

 

1. curl의 주요 특징

 

다양한 프로토콜 지원 – HTTP, HTTPS, FTP, SFTP, SCP, LDAP 등
파일 다운로드/업로드 가능 – wget처럼 파일을 내려받거나 업로드 가능
API 요청 및 응답 처리 가능 – REST API 호출 및 JSON 데이터 전송 가능
다양한 인증 방식 지원 – Basic Auth, Bearer Token, OAuth 등
SSL/TLS 지원 – HTTPS 요청 가능 (OpenSSL, NSS, GnuTLS 등 사용)
운영체제(OS) 독립적 – Windows, Linux, macOS 등에서 사용 가능

 

2. curl 기본 사용법

 

📌 1) 웹페이지 내용 가져오기 (GET 요청)

curl https://example.com
 
 

👉 해당 웹사이트의 HTML을 출력

📌 2) 파일 다운로드

curl -O https://example.com/file.zip

 

👉 -O 옵션: 원본 파일명을 유지하며 다운로드

📌 3) 파일 업로드 (FTP 사용)

curl -T myfile.txt ftp://example.com --user username:password

 

👉 -T 옵션: FTP 서버에 파일 업로드

📌 4) HTTP POST 요청 보내기

curl -X POST -d "name=John&age=30" https://example.com/api

 

👉 -X POST 옵션으로 POST 요청 수행
👉 -d 옵션으로 데이터 전송

📌 5) JSON 데이터 전송 (REST API 호출)

curl -X POST -H "Content-Type: application/json" -d '{"name":"Alice"}' https://example.com/api
 

👉 -H 옵션으로 헤더 추가
👉 -d 옵션으로 JSON 데이터 전송


3. curl과 wget 차이점

 

구분 curl wget
주요 목적 데이터 전송 및 API 호출 파일 다운로드
지원 프로토콜 HTTP, HTTPS, FTP, SCP, SFTP 등 주로 HTTP, HTTPS, FTP
파일 다운로드 가능 (-O, -o 옵션) 가능 (기본 기능)
API 요청 가능 가능 (-X, -d, -H 옵션) 제한적
반복 다운로드 수동 설정 필요 기본 제공 (-r 옵션)

👉 curl은 다양한 프로토콜과 API 호출 지원이 강점, wget은 대량 다운로드에 최적화!


4. curl 라이브러리(libcurl)

curl은 단순 명령어 도구뿐만 아니라 libcurl이라는 C 기반 라이브러리를 제공하며, 이를 활용하면 프로그램에서 curl 기능을 사용할 수 있음.

📌 libcurl을 사용하는 언어 예시

  • C/C++
  • Python (pycurl)
  • PHP (cURL 확장)
  • Java (JcURL 라이브러리)

예제 (Python에서 pycurl 사용)

import pycurl curl = pycurl.Curl() curl.setopt(curl.URL, "https://example.com") curl.perform() curl.close()

5. 결론

  • curl은 데이터를 송수신하는 범용 도구로, REST API 호출, 파일 다운로드, 업로드, 인증 요청 등 다양한 용도로 활용 가능
  • libcurl을 활용하면 프로그램에서도 curl 기능을 쉽게 사용 가능
  • wget은 주로 다운로드에 특화, curl은 다양한 기능 지원

 

즉, curl은 웹과 네트워크 프로그래밍에서 필수적인 도구

 

 

 

 

300x250
반응형