cURL 간편 가이드
cUrl 유용한 명령어 및 파라미터
이곳은 가장 유용한 cURL 명령어와 그 매개변수에 대한 빠른 참고 자료입니다:
위의 이미지는 Flux - 텍스트에서 이미지 생성 AI 모델를 사용하여 생성되었습니다.
기본 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
이 명령어는 테스트를 5회 수행하고 각 요청의 총 시간을 표시합니다[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 명령어와 스크립트를 사용하여 웹사이트 성능을 효과적으로 측정하고 모니터링하여 잠재적인 병목 현상을 식별하고 로딩 시간을 최적화할 수 있습니다.