cURL 치트시트
파라미터를 포함한 유용한 cUrl 명령어
다음은 가장 유용한 cURL 명령어 와 관련 매개변수에 대한 치트시트입니다:

위 이미지는 Flux - 텍스트를 이미지로 변환하는 AI 모델 로 생성되었습니다.
cURL 은 HTTP 요청을 보내고 데이터를 전송하는 데 필수적인 명령어 줄 도구입니다. Git, Docker, VS Code, bash, Terraform, PostgreSQL, GitHub Actions, Linux 패키지 관리 등을 포함한 개발자 도구에 대한 포괄적인 가이드는 개발자 도구: 현대 개발 워크플로우에 대한 완전한 가이드 를 참조하세요.
cURL 기본 사용법
- 파일 다운로드:
curl http://example.com/file.zip -o file.zip - 여러 파일 다운로드:
curl -O URL1 -O URL2 - 리디렉션 따르기:
curl -L http://example.com/file - 헤더만 표시:
curl -I http://example.com
인증
- 기본 인증:
curl -u username:password http://example.com - .netrc 파일 사용:
curl --netrc-file .netrc http://example.com
HTTP 메서드
- POST 요청:
curl -X POST -d 'name=value' http://example.com - PUT 요청:
curl -X PUT -d @file http://example.com - 커스텀 메서드:
curl -X METHOD http://example.com
헤더 및 데이터
- 커스텀 헤더 추가:
curl -H "X-Header: Value" http://example.com - JSON 데이터 전송:
curl -H "Content-Type: application/json" -d '{"key":"value"}' http://example.com - 폼 데이터 전송:
curl -F "key=value" -F "file=@localfile" http://example.com
SSL/TLS 옵션
- SSL 인증서 검증 무시:
curl -k https://example.com - 클라이언트 인증서 사용:
curl --cert cert.pem --key key.pem https://example.com
프록시 및 네트워킹
- 프록시 사용:
curl -x proxysever.server.com:PORT http://example.com - 다운로드 속도 제한:
curl --limit-rate 1000B -O http://example.com/file
출력 제어
- 조용한 모드:
curl -s http://example.com - 상세 모드:
curl -v http://example.com - 출력을 파일로 저장:
curl -o file.html http://example.com - 원본 파일명으로 저장:
curl -O http://example.com/file.zip
기타
- 실패한 다운로드 재개:
curl -C - -o partial_file.zip http://example.com/file.zip - 타임아웃 설정:
curl --connect-timeout 10 http://example.com - 설정 파일 사용:
curl -K config_file http://example.com
이 치트시트는 가장 일반적으로 사용되는 cURL 명령어와 매개변수를 다루며, 다양한 HTTP 작업 및 데이터 전송에 대한 빠른 참고 자료 역할을 합니다.
고급 cURL 명령어
다음은 디버깅을 위한 고급 cURL 명령어입니다:
-
상세 출력:
curl -v https://example.com이 명령어는 헤더 및 연결 세부 사항 포함 요청과 응답에 대한 자세한 정보를 제공합니다. -
전체 추적 덤프:
curl --trace - https://example.com이 명령어는 들어오고 나가는 모든 데이터의 헥스 덤프를 출력하여 전체 통신에 대한 포괄적인 시각을 제공합니다. -
타임스탬프가 있는 추적:
curl --trace - --trace-time https://example.com이 명령어는 추적 출력에 타임스탬프를 추가하여 시간 관련 문제를 분석하는 데 도움이 됩니다. -
응답 헤더만 출력:
curl -s -o /dev/null -D - https://example.com이 명령어는 응답 헤더만 표시하여 빠른 헤더 분석에 유용합니다. -
요청 헤더만 출력:
curl -v -s -o /dev/null --stderr - https://example.com | grep '^>'이 복잡한 명령어는 요청 헤더만 필터링하여 전송되는 내용을 검사하는 데 도움이 됩니다. -
Pantheon 디버거 사용:
curl -I -H "Pantheon-Debug:1" https://example.com이 명령어는 Pantheon 의 디버그 헤더를 사용하여 요청에 대한 추가 정보를 얻는데 사용되며, Pantheon 호스팅 사이트에서 유용합니다. -
HTTP/2 프로토콜 강제:
curl --http2 https://example.com이 명령어는 HTTP/2 프로토콜 사용을 보장하며, -I 와 함께 사용하여 HTTP/2 지원 여부를 확인할 수 있습니다. -
netcat 으로 디버깅: 하나의 터미널:
nc -l 1234다른 터미널:curl http://127.0.0.1:1234이 명령어는 cURL 이 정확히 무엇을 보내는지 확인할 수 있게 하여 페이로드 디버깅에 유용합니다.
이러한 고급 명령어는 강력한 디버깅 기능을 제공하여 개발자가 HTTP 통신의 다양한 측면을 검사하고 복잡한 문제를 해결할 수 있게 합니다.
일반적인 cURL 사용 사례
curl 은 다양한 응용 프로그램이 있는 다재다능한 명령어 줄 도구입니다. 다음은 curl 의 가장 일반적인 사용 사례입니다:
웹 상호작용
- 파일 다운로드: curl 은 URL 에서 파일을 다운로드할 수 있습니다.
- 웹 스크래핑: curl 은 스크래핑 목적으로 웹 페이지 콘텐츠를 가져올 수 있습니다.
- 웹사이트 테스트: curl 은 웹사이트가 접속 가능한지 확인하고 콘텐츠를 가져오는 데 유용합니다.
API 상호작용
- API 요청 전송: curl 은 API 와 상호작용하기 위해 다양한 HTTP 메서드 (GET, POST, PUT, DELETE) 를 지원합니다.
- API 엔드포인트 테스트: curl 은 전용 API 클라이언트가 필요하지 않고 API 엔드포인트를 테스트하고 디버깅하는 빠른 방법을 제공합니다.
네트워크 문제 해결
- 연결성 확인: curl 은 네트워크 연결을 확인하고 문제를 해결하는 데 사용할 수 있습니다.
- DNS 테스트: curl 은 DNS 관련 문제 해결을 위해 특정 DNS 서버를 강제할 수 있습니다.
- 헤더 검사: curl 은 HTTP 헤더를 표시할 수 있어 디버깅에 유용합니다.
데이터 전송
- FTP 작업: curl 은 파일 전송 프로토콜 (FTP) 을 사용하여 파일 전송을 지원합니다.
- SMTP 상호작용: curl 은 단순 메일 전송 프로토콜 (SMTP) 을 통해 이메일을 보내는 데 사용할 수 있습니다.
보안 및 인증
- SSL 연결: curl 은 SSL/TLS 를 사용하여 안전한 연결을 지원합니다.
- 인증: curl 은 기본 인증 및 클라이언트 인증서를 포함한 다양한 인증 방법을 처리할 수 있습니다.
개발 및 디버깅
- 다양한 HTTP 메서드 시뮬레이션: curl 은 개발자가 다양한 HTTP 메서드를 쉽게 테스트할 수 있게 합니다.
- 상세 로깅: curl 의 상세 모드는 요청 - 응답 사이클에 대한 자세한 정보를 제공하여 디버깅을 돕습니다.
이러한 사용 사례는 curl 이 웹 상호작용, API 테스트, 네트워크 문제 해결 및 개발 작업을 위한 도구로서의 유연성을 보여줍니다.
cURL 을 이용한 웹사이트 성능 테스트
curl 은 웹사이트 성능을 테스트하는 강력한 도구입니다. 웹사이트의 로딩 속도의 다양한 측면을 측정하는 방법을 소개합니다:
기본 성능 테스트
웹사이트의 로딩 시간을 간단히 측정하려면 다음 명령어를 사용하세요:
curl -o /dev/null -s -w "Total Time: %{time_total}s\n" "https://example.com"
이 명령어는 웹사이트를 가져오는 데 걸린 총 시간을 출력합니다 [2].
상세 성능 지표
보다 포괄적인 분석을 위해 curl 을 사용하여 여러 성능 지표를 측정할 수 있습니다:
curl -s -w 'Testing Website Response Time for :%{url_effective}\n\nLookup Time:\t\t%{time_namelookup}\nConnect Time:\t\t%{time_connect}\nPre-transfer Time:\t%{time_pretransfer}\nStart-transfer Time:\t%{time_starttransfer}\n\nTotal Time:\t\t%{time_total}\n' -o /dev/null https://example.com
이 명령어는 DNS 조회 시간, 연결 시간 및 총 시간을 포함하여 로딩 프로세스의 다양한 단계를 분해하여 제공합니다 [1].
고급 지표
보다 자세한 분석을 위해 추가 지표를 포함할 수 있습니다:
curl -o /dev/null -w "HTTP Version: %{http_version}\nPage Size: %{size_download} bytes\nResponse Code: %{response_code}\nDNS Lookup: %{time_namelookup} sec\nConnect Time: %{time_connect} sec\nTime to First Byte: %{time_starttransfer} sec\nTotal Time: %{time_total} sec\n" -s https://example.com
이 명령어는 HTTP 버전, 페이지 크기 및 응답 코드에 대한 정보를 포함합니다 [3].
여러 요청 벤치마킹
일관성을 테스트하거나 시간이 지남에 따라 성능을 모니터링하려면 루프를 사용하여 여러 요청을 보낼 수 있습니다:
for i in {1..5}; do curl -o /dev/null -s -w "Request $i Total Time: %{time_total}\n" https://example.com; done
이 명령어는 테스트를 다섯 번 실행하고 각 요청의 총 시간을 보여줍니다 [3].
성능 테스트 스크립트 만들기
이러한 테스트를 자동화하고 결과를 저장할 간단한 bash 스크립트를 만들 수 있습니다:
#!/bin/bash
curl -s -w 'Testing Website Response Time for :%{url_effective}\n\nLookup Time:\t\t%{time_namelookup}\nConnect Time:\t\t%{time_connect}\nPre-transfer Time:\t%{time_pretransfer}\nStart-transfer Time:\t%{time_starttransfer}\n\nTotal Time:\t\t%{time_total}\n' -o /dev/null URL > webspeedtest_"$(date)"
“URL” 을 테스트하려는 웹사이트로 변경하세요. 이 스크립트는 날짜가 표시된 파일에 결과를 저장합니다 [5].
이러한 curl 명령어와 스크립트를 사용하여 웹사이트 성능을 효과적으로 측정하고 모니터링하여 잠재적인 병목 현상을 식별하고 로딩 시간을 최적화할 수 있습니다.