1. curl? 먹는 건가요? (소개)
블로그 가이드나 개발 튜토리얼을 따라 하다 보면 curl로 시작하는 알 수 없는 검은 화면 명령어를 만나곤 합니다. 개발자가 아닌 분들에게는 마치 암호처럼 보일 수 있죠.
curl(cURL)은 "Client for URLs"의 약자로, 터미널(명령창)에서 URL을 통해 데이터를 주고받을 수 있게 해주는 아주 강력하고 유용한 도구입니다.
쉽게 말해, "터미널에서 작동하는 초경량 텍스트 웹 브라우저"라고 생각할 수 있습니다.
- 웹사이트 HTML 가져오기
- 파일 다운로드하기
- API에 데이터 전송하고 응답 확인하기
ads.txt문제처럼 서버의 응답 헤더(Header) 직접 확인하기
이 모든 것을 curl 하나로 할 수 있습니다. 이 글에서는 curl을 윈도우와 맥에서 사용하는 방법부터, 가장 실용적인 핵심 옵션과 예제까지 완벽하게 정리해 드립니다.
2. 내 컴퓨터에서 curl 사용하기 (설치 및 실행)
"터미널"이나 "명령 프롬프트"라는 말에 덜컥 겁부터 나시나요? 😅 전혀 두려워할 필요 없습니다. 이 글은 개발자가 아니어도 누구나 따라 할 수 있도록 가장 쉬운 방법만 알려드립니다. 단순히 프로그램을 찾아 실행하고, 이 글의 명령어를 '복사 + 붙여넣기'만 하면 됩니다.
curl은 대부분의 운영체제에 이미 기본적으로 설치되어 있습니다.
1) macOS (맥)에서 사용하기
macOS는 유닉스(Unix) 기반이라 curl이 기본 탑재되어 있습니다.
Cmd+Space키로 Spotlight를 켭니다.- '터미널' (또는 Terminal)을 검색하고 엔터를 쳐서 실행합니다.
- 열린 창에 바로
curl명령어를 입력하면 됩니다.
최신 윈도우 10, 11에는 curl이 기본 내장되어 있습니다.
Windows키를 누르거나 작업표시줄 '검색'을 클릭합니다.- 'cmd' 또는 '명령 프롬프트' 를 검색해서 실행합니다.
- (또는 'PowerShell'을 검색해 실행해도 동일하게 작동합니다.)
- 열린 검은 창에 바로
curl명령어를 입력하면 됩니다.
[팁] 윈도우에서 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)을 모두 따라가라.
(해석) 이 결과를 완벽하게 이해시켜 드리겠습니다.
- 먼저
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-length나content-type같은 상세한 헤더 정보를 모두 확인할 수 있습니다. 오류 진단 시 가장 유용한 명령어입니다.
명령어:
curl -o logo.png https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png
해석: 해당 URL의 파일을 logo.png라는 이름( -o )으로 저장하라.
(해석) 터미널에 다운로드 진행률(프로그레스 바)이 표시되며
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을 부여하여 응답했음을 보여줍니다.
5. 결론: curl은 만능 맥가이버 칼
curl은 처음엔 낯설 수 있지만, 한번 익혀두면 웹사이트 문제를 진단하거나, API를 테스트하거나, 단순 반복 작업을 자동화할 때 상상 이상의 편리함을 제공하는 '만능 맥가이버 칼' 같은 도구입니다.
이제 ads.txt 오류뿐만 아니라 어떤 웹 문제가 발생했을 때, 브라우저가 아닌 curl로 서버의 진짜 속마음(응답)을 확인해 보는 것은 어떨까요?







