728x90
[HTTP 기본]curl
curl은 데이터를 서버와 주고받기 위한 명령줄 기반의 도구이자 라이브러리입니다. 다양한 프로토콜을 지원하며, 파일 다운로드, API 호출, 데이터 전송 등 네트워크와 관련된 작업을 간단히 수행할 수 있습니다. "Client URL"의 약자로, 주로 HTTP 요청을 테스트하거나 API와 상호작용하는 데 사용됩니다.
주요 특징
- 다양한 프로토콜 지원:
- HTTP, HTTPS, FTP, FTPS, SCP, SFTP, SMB, TFTP, TELNET, LDAP 등 다양한 네트워크 프로토콜을 지원합니다.
- 플랫폼 독립적:
- Windows, macOS, Linux 등 대부분의 운영체제에서 사용 가능합니다.
- 라이브러리 지원:
- libcurl이라는 C 기반 라이브러리를 제공하여, 애플리케이션 내에서 네트워크 통신 기능을 쉽게 구현할 수 있습니다.
- 보안:
- HTTPS 및 FTPS와 같은 보안 프로토콜을 지원하며, SSL/TLS를 사용하여 데이터를 암호화할 수 있습니다.
- 확장성:
- 다양한 옵션을 제공하여 요청 헤더, 인증, 데이터 전송 방식 등을 상세히 제어할 수 있습니다.
사용 사례
- HTTP 요청 테스트:
- REST API나 웹 서버의 응답을 테스트.
- 파일 다운로드 및 업로드:
- FTP 서버에서 파일 다운로드/업로드.
- 인증 처리:
- Basic, Digest, OAuth, Bearer Token 등을 활용한 인증 요청.
- 자동화 스크립트:
- 명령줄을 통해 API 호출을 스크립트에 통합.
- 네트워크 디버깅:
- HTTP 헤더나 응답 상태 코드를 확인하여 디버깅.
기본 명령어 예제
1. GET 요청
curl http://example.com
- 지정된 URL의 HTML 콘텐츠를 가져옵니다.
2. POST 요청
curl -X POST -d "name=John&age=30" http://example.com/api
- POST 요청으로 데이터를 서버로 전송합니다.
3. 헤더 추가
curl -H "Authorization: Bearer TOKEN" http://example.com/api
- 요청에 HTTP 헤더를 추가합니다.
4. JSON 데이터 전송
curl -X POST -H "Content-Type: application/json" -d '{"name":"John"}' http://example.com/api
- JSON 형식의 데이터를 POST 요청으로 전송합니다.
5. 파일 다운로드
curl -O http://example.com/file.zip
- URL에서 파일을 다운로드하여 로컬에 저장합니다.
6. 파일 업로드
curl -T file.txt ftp://example.com/
- 로컬 파일을 FTP 서버에 업로드합니다.
7. SSL 인증서 무시
curl -k https://self-signed.badssl.com/
- SSL 인증서 검사를 무시하고 요청을 보냅니다.
8. HTTP 응답 헤더 확인
curl -I http://example.com
- URL의 HTTP 응답 헤더만 출력합니다.
주요 옵션
옵션 | 설명 |
---|---|
-X | HTTP 메서드 지정 (GET, POST, PUT, DELETE 등) |
-H | 요청 헤더 추가 |
-d | 요청 본문에 데이터를 추가 |
-O | URL의 파일을 로컬에 저장 |
-T | 로컬 파일을 서버에 업로드 |
-I | HTTP 응답 헤더만 출력 |
-k | SSL 인증서 검사를 무시 |
-u | 사용자 이름과 비밀번호를 사용한 인증 (e.g., -u username:password) |
-L | 리다이렉트를 따라감 |
고급 사용법
1. 다중 URL 요청
curl http://example.com http://another-example.com
- 한 번에 여러 URL에 요청을 보냅니다.
2. 병렬 요청
curl http://example.com & curl http://another-example.com
- 두 요청을 병렬로 실행합니다.
3. API 요청 결과를 파일로 저장
curl -o result.json http://example.com/api
- API 응답을 파일에 저장합니다.
4. 프록시 서버를 통한 요청
curl -x http://proxy.example.com:8080 http://example.com
- 프록시 서버를 경유하여 요청을 보냅니다.
5. 응답 시간 측정
curl -w "Time: %{time_total}\n" -o /dev/null -s http://example.com
- 요청 응답에 걸린 시간을 출력합니다.
curl과 wget의 차이점
특성 | curl | wget |
---|---|---|
주요 목적 | 데이터 전송 및 요청/응답 테스트 | 파일 다운로드에 특화 |
지원 프로토콜 | 다양한 프로토콜 (HTTP, FTP, SCP 등) | 주로 HTTP, FTP |
사용 방식 | 유연한 옵션 제공 | 간단한 파일 다운로드 위주 |
인터랙션 | 헤더 및 데이터 전송, API 호출 가능 | 다운로드 후 별도 처리가 필요함 |
장점
- 다양한 프로토콜: 여러 프로토콜 지원으로 유연성 높음.
- 강력한 옵션: 요청 헤더, 인증, 데이터 포맷 등 세부 제어 가능.
- 스크립트와 통합 가능: 자동화 작업에 적합.
단점
- 복잡한 옵션: 초보자에게는 사용법이 다소 어려울 수 있음.
- 주로 명령줄 기반: GUI 지원 도구에 익숙한 사용자에게는 불편.
curl은 네트워크 작업, REST API 디버깅, 파일 전송 등의 작업에서 필수적인 도구로 널리 사용됩니다.
728x90
'프론트엔드 > HTTP' 카테고리의 다른 글
[HTTP 보안]CSP vs SOP (0) | 2024.12.29 |
---|---|
[HTTP 보안]escape (0) | 2024.12.29 |
[HTTP 보안]sanitize (0) | 2024.12.29 |
[HTTP 추가 프로토콜]WebSocket (3) | 2024.12.28 |
[HTTP 추가 프로토콜]Server-Sent Events(SSE) (0) | 2024.12.28 |