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 명령어입니다:

  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 의 디버그 헤더를 사용하여 요청에 대한 추가 정보를 얻는데 사용되며, Pantheon 호스팅 사이트에서 유용합니다.

  7. HTTP/2 프로토콜 강제: curl --http2 https://example.com 이 명령어는 HTTP/2 프로토콜 사용을 보장하며, -I 와 함께 사용하여 HTTP/2 지원 여부를 확인할 수 있습니다.

  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

이 명령어는 테스트를 다섯 번 실행하고 각 요청의 총 시간을 보여줍니다 [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 명령어와 스크립트를 사용하여 웹사이트 성능을 효과적으로 측정하고 모니터링하여 잠재적인 병목 현상을 식별하고 로딩 시간을 최적화할 수 있습니다.

유용한 링크