curl 명령어 사용법 완벽 가이드: 윈도우, 맥 설치부터 헤더 확인, API 테스트까지

1. curl? 먹는 건가요? (소개)

블로그 가이드나 개발 튜토리얼을 따라 하다 보면 curl로 시작하는 알 수 없는 검은 화면 명령어를 만나곤 합니다. 개발자가 아닌 분들에게는 마치 암호처럼 보일 수 있죠.

curl(cURL)은 "Client for URLs"의 약자로, 터미널(명령창)에서 URL을 통해 데이터를 주고받을 수 있게 해주는 아주 강력하고 유용한 도구입니다.

쉽게 말해, "터미널에서 작동하는 초경량 텍스트 웹 브라우저"라고 생각할 수 있습니다.

  • 웹사이트 HTML 가져오기
  • 파일 다운로드하기
  • API에 데이터 전송하고 응답 확인하기
  • ads.txt 문제처럼 서버의 응답 헤더(Header) 직접 확인하기

이 모든 것을 curl 하나로 할 수 있습니다. 이 글에서는 curl을 윈도우와 맥에서 사용하는 방법부터, 가장 실용적인 핵심 옵션과 예제까지 완벽하게 정리해 드립니다.

curl : 터미널에서 작동하는 초경량 텍스트 웹 브라우저


2. 내 컴퓨터에서 curl 사용하기 (설치 및 실행)

"터미널"이나 "명령 프롬프트"라는 말에 덜컥 겁부터 나시나요? 😅 전혀 두려워할 필요 없습니다. 이 글은 개발자가 아니어도 누구나 따라 할 수 있도록 가장 쉬운 방법만 알려드립니다. 단순히 프로그램을 찾아 실행하고, 이 글의 명령어를 '복사 + 붙여넣기'만 하면 됩니다.

curl은 대부분의 운영체제에 이미 기본적으로 설치되어 있습니다.

1) macOS (맥)에서 사용하기

macOS는 유닉스(Unix) 기반이라 curl이 기본 탑재되어 있습니다.

  1. Cmd + Space 키로 Spotlight를 켭니다.
  2. '터미널' (또는 Terminal)을 검색하고 엔터를 쳐서 실행합니다.
  3. 열린 창에 바로 curl 명령어를 입력하면 됩니다.
macOS에서 '터미널'을 실행하는 스크린샷

2) Windows (윈도우)에서 사용하기

최신 윈도우 10, 11에는 curl이 기본 내장되어 있습니다.

  1. Windows 키를 누르거나 작업표시줄 '검색'을 클릭합니다.
  2. 'cmd' 또는 '명령 프롬프트' 를 검색해서 실행합니다.
  3. (또는 'PowerShell'을 검색해 실행해도 동일하게 작동합니다.)
  4. 열린 검은 창에 바로 curl 명령어를 입력하면 됩니다.
Windows 11에서 '명령 프롬프트'를 실행하는 스크린샷

[팁] 윈도우에서 curl이 없다고 나온다면?

(주로 구버전 윈도우)

개발자들의 필수 도구인 'Git for Windows'를 설치하면 curl이 함께 설치됩니다. https://git-scm.com/downloads 에서 다운로드한 후 'Git Bash'라는 프로그램을 실행하면 curl을 사용할 수 있습니다.

3. curl의 기본 구조와 핵심 옵션

curl의 기본 사용법은 curl [옵션] [URL]입니다.

옵션 없이 URL만 입력하면 해당 URL의 HTML 소스 코드를 화면에 그대로 출력합니다.

Bash

# example.com의 HTML을 터미널에 출력
curl https://example.com

하지만 curl의 진짜 힘은 '옵션'에서 나옵니다. 수백 가지가 넘지만, 문제 해결과 테스트에 꼭 필요한 핵심 옵션은 다음과 같습니다.

옵션 긴 옵션 (Long) 용도 (무엇을 하는가?)
-I --head (HEAD) 응답의 헤더(Header)만 가져옵니다. (본문 제외)
-L --location (Location) 301, 302 리디렉션 응답을 받으면, 이동한 최종 주소까지 따라갑니다.
-v --verbose (Verbose) 접속, 요청, 응답의 모든 상세 과정을 보여줍니다. (디버깅 끝판왕)
-X --request (Request) HTTP 요청 방식(Method)을 지정합니다. (예: POST, PUT, DELETE)
-H --header (Header) 요청에 커스텀 헤더를 추가합니다. (예: -H "Content-Type: application/json")
-d --data (Data) POST 요청 시 서버로 전송할 데이터(본문)를 지정합니다.
-o --output (Output) 결과를 터미널 대신 지정한 [파일명]으로 저장합니다. (소문자 o)

4. 예제로 보는 curl 실전 활용법

이제 위 옵션들을 조합해서 실제 상황에서 curl을 어떻게 활용하는지 보여드리겠습니다.

예제 1: 헤더 확인 및 리디렉션 추적 (간단 진단)

바로 이전 포스팅이었던 애드센스 ads.txt 오류 해결기에서 content-length: 0이라는 결정적 단서를 찾을 때 사용했던 바로 그 명령어 조합입니다.

명령어:

curl -IL https://google.com

해석: https://google.com (보안 접속)의 헤더(-I)를 확인하되, 리디렉션(-L)을 모두 따라가라.

'curl -IL https://google.com' 명령어 실행 결과 스크린샷


(해석) 이 결과를 완벽하게 이해시켜 드리겠습니다.

  • 먼저 https://google.com으로 접속을 시도하자, 서버가 HTTP/2 301 (영구 이동) 응답을 보냈습니다.
  • location: https://www.google.com/ 헤더를 통해 "앞으로는 www를 붙인 주소로 오세요"라고 알려줍니다.
  • 우리가 -L 옵션을 사용했기 때문에, curl은 이 지시를 따라 자동으로 https://www.google.com/으로 두 번째 접속을 시도합니다.
  • 마침내 www가 붙은 최종 주소에서 서버가 HTTP/2 200 (OK, 성공) 응답을 반환했습니다.
  • (content-type, set-cookie 등) 이것들은 구글 서버가 여러분의 브라우저(또는 curl)에게 "이런 쿠키를 저장해" 또는 "보안 규칙은 이거야"라고 알려주는 정상적인 추가 정보일 뿐입니다.
  • ads.txt 문제를 진단할 때 우리가 확인할 핵심은 이 모든 복잡한 정보가 아니라, 오직 301 리디렉션이 발생해서 → 200 OK로 최종 도착했는지의 흐름 그 자체입니다.

예제 2: 모든 통신 과정 상세히 보기 (상세 진단)

"도대체 왜 안 되지?" 싶을 때, 서버와 내 컴퓨터가 주고받는 모든 대화 내용을 봅니다.

명령어:

curl -v https://example.com

(해석) >(나가는 내 요청)와 <(들어오는 서버 응답) 기호를 통해 content-lengthcontent-type 같은 상세한 헤더 정보를 모두 확인할 수 있습니다. 오류 진단 시 가장 유용한 명령어입니다.

'curl -v' 명령어 실행 시 상세 로그 스크린샷

예제 3: 파일 다운로드하기

명령어:

curl -o logo.png https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png

해석: 해당 URL의 파일을 logo.png라는 이름( -o )으로 저장하라.

(해석) 터미널에 다운로드 진행률(프로그레스 바)이 표시되며 logo.png 파일이 현재 폴더에 저장됩니다.

curl로 파일 다운로드 시 터미널에 표시되는 진행률 스크린샷

다운로드 받은 logo.png

예제 4: API에 JSON 데이터 전송하기 (POST)

개발자들이 API를 테스트할 때 가장 많이 쓰는 방식입니다.

명령어:

curl -X POST -H "Content-Type: application/json" -d '{"name": "Test User"}' https://jsonplaceholder.typicode.com/users

해석:

  • -X POST: POST 방식으로 요청
  • -H "...": 요청 헤더에 '이건 JSON 데이터'라고 명시
  • -d '...': 중괄호 안의 데이터를 본문에 실어 전송

(해석) 테스트 서버에 "Test User"라는 데이터를 성공적으로 전송했고, 서버가 id: 11을 부여하여 응답했음을 보여줍니다.

JSON POST 요청 성공 후 반환된 응답 스크린샷

5. 결론: curl은 만능 맥가이버 칼

curl은 처음엔 낯설 수 있지만, 한번 익혀두면 웹사이트 문제를 진단하거나, API를 테스트하거나, 단순 반복 작업을 자동화할 때 상상 이상의 편리함을 제공하는 '만능 맥가이버 칼' 같은 도구입니다.

이제 ads.txt 오류뿐만 아니라 어떤 웹 문제가 발생했을 때, 브라우저가 아닌 curl로 서버의 진짜 속마음(응답)을 확인해 보는 것은 어떨까요?

댓글 쓰기

다음 이전