cURL 치트시트

파라미터를 사용한 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. curl은 해당 사용자 이름과 비밀번호를 바탕으로 Authorization: Basic 헤더를 설정합니다. printf와 base64를 사용하여 구성된 동일한 헤더는 Base64 인코딩 및 디코딩 치트시트에 있습니다.
  • .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 명령어를 소개합니다:

  1. 상세 출력: curl -v https://example.com 이 명령어는 헤더와 연결 세부 정보를 포함하여 요청과 응답에 대한 상세 정보를 제공합니다.

  2. 전체 추적 덤프: curl --trace - https://example.com 이는 모든 수신 및 발신 데이터의 헥스 덤프를 출력하여 전체 통신 과정에 대한 포괄적인 개요를 제공합니다.

  3. 타임스탬프가 포함된 추적: curl --trace - --trace-time https://example.com 이는 추적 출력에 타임스탬프를 추가하여 타이밍 관련 문제를 분석하는 데 도움이 됩니다.

  4. 응답 헤더만 출력: curl -s -o /dev/null -D - https://example.com 이 명령어는 응답 헤더만 표시하여 빠른 헤더 분석에 유용합니다.

  5. 요청 헤더만 출력: curl -v -s -o /dev/null --stderr - https://example.com | grep '^>' 이 복잡한 명령어는 요청 헤더만 필터링하여 전송되는 내용을 검사하는 데 도움이 됩니다.

  6. Pantheon 디버거 사용: curl -I -H "Pantheon-Debug:1" https://example.com 이 명령어는 Pantheon의 Debug 헤더를 사용하여 요청에 대한 추가 정보를 가져오며, Pantheon 호스팅 사이트에 유용합니다.

  7. HTTP/2 프로토콜 강제 사용: curl --http2 https://example.com 이는 HTTP/2 프로토콜의 사용을 보장하며, HTTP/2 지원을 확인하기 위해 -I 옵션과 함께 사용할 수 있습니다.

  8. netcat로 디버깅: 하나의 터미널에서: nc -l 1234 다른 터미널에서: curl http://127.0.0.1:1234 이를 통해 curl이 정확히 무엇을 전송하는지 볼 수 있어 페이로드 디버깅에 유용합니다.

이러한 고급 명령어는 강력한 디버깅 기능을 제공하여 개발자가 HTTP 통신의 다양한 측면을 검사하고 복잡한 문제를 해결할 수 있게 합니다.

일반적인 cURL 사용 사례

curl은 수많은 애플리케이션을 가진 다재다능한 명령줄 도구입니다. 다음은 curl의 가장 일반적인 사용 사례 중 일부입니다:

웹 상호작용

  1. 파일 다운로드: curl은 URL에서 파일을 다운로드할 수 있습니다.
  2. 웹 스크레이핑: curl은 스크레이핑 목적으로 웹 페이지 콘텐츠를 검색할 수 있습니다.
  3. 웹사이트 테스트: curl은 웹사이트가 접근 가능한지 확인하고 콘텐츠를 검색하는 데 유용합니다.

API 상호작용

  1. API 요청 보내기: curl은 API와 상호작용하기 위해 다양한 HTTP 메소드(GET, POST, PUT, DELETE)를 지원합니다.
  2. API 엔드포인트 테스트: curl은 전용 API 클라이언트 없이도 API 엔드포인트를 테스트하고 디버깅할 수 있는 빠른 방법을 제공합니다.

네트워크 트러블슈팅

  1. 연결 상태 확인: curl은 네트워크 연결을 확인하고 문제를 트러블슈팅하는 데 사용할 수 있습니다.
  2. DNS 테스트: curl은 DNS 관련 문제를 트러블슈팅하기 위해 특정 DNS 서버를 강제할 수 있습니다.
  3. 헤더 검사: curl은 HTTP 헤더를 표시할 수 있으며, 이는 디버깅에 유용합니다.

데이터 전송

  1. FTP 작업: curl은 파일 전송 프로토콜(FTP)을 사용한 파일 전송을 지원합니다.
  2. SMTP 상호작용: curl은 단순 메일 전송 프로토콜(SMTP)을 통해 이메일을 보내는 데 사용할 수 있습니다.

보안 및 인증

  1. SSL 연결: curl은 SSL/TLS를 사용한 보안 연결을 지원합니다.
  2. 인증: curl은 기본 인증 및 클라이언트 인증서를 포함한 다양한 인증 방법을 처리할 수 있습니다.

개발 및 디버깅

  1. 다른 HTTP 메소드 시뮬레이션: curl은 개발자가 다양한 HTTP 메소드를 쉽게 테스트할 수 있게 합니다.
  2. 상세 로깅: 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 명령어와 스크립트를 사용하면 웹사이트 성능을 효과적으로 측정하고 모니터링하여 잠재적인 병목을 식별하고 로드 시간을 최적화하는 데 도움이 됩니다.

유용한 링크

구독하기

시스템, 인프라, AI 엔지니어링에 관한 새 글을 받아보세요.