HTTP HTTPS

[HTTP] wget/curl 명령어 정리

후드리챱챱 2024. 3. 12. 22:16
반응형

 

1. 소개

 

wget 및 curl 은 GUI나 소프트웨어 없이 HTTP 요청에 사용되는 명령입니다. 대신 해당 출력이나 메시지를 제공하는 Linux의 터미널을 사용합니다. 이 명령은 웹 크롤링, 웹 스크래핑, RESTful API 테스트 등에 매우 유용합니다.

wget

주로 웹에서 파일을 다운로드하기 위한 명령줄 도구로, HTTP, HTTPS, FTP를 지원합니다. wget은 재귀 다운로드와 웹 사이트 미러링을 지원하는 등의 기능을 제공합니다.

curl

데이터 전송을 위한 명령줄 도구로, 다양한 프로토콜을 지원하며, 다양한 작업을 수행할 수 있습니다. HTTP, HTTPS, FTP, SCP, LDAP 등 다양한 프로토콜을 지원합니다. SHELL(커맨드 라인 환경)에서 REST API(http) 테스트시 curl 명령어를 이용하면 됩니다

 

2. 설치

 

### wget 설치 ###
$ sudo apt-get install wget
$ sudo yum install wget

### curl 설치 ###
$ sudo apt-get install curl
$ sudo yum install curl

 

3. wget / curl 명령어 차이점

 

wget과 curl은 둘 다 웹서버로 부터 컨텐츠를 가져오는 Linux 커멘드이다.

$ curl -X GET http://127.0.0.1:8080/animal
$ curl -X POST http://127.0.0.1:8080/animal
$ curl -d 'cat,dog' -H "Content-Type: application/text" -X POST http://127.0.0.1:8080/animal
$ wget GET http://127.0.0.1:8080/animal
$ wget POST http://127.0.0.1:8080/animal
$ wget -O- --post-data='cat,dog' --header='Content-Type:application/text' 'POST http://127.0.0.1:8080/animal'

 

wget / curl 공통점
 - HTTP, HTTPS, FTP 프로토콜을 통해 컨텐츠를 다운로드 하는 커맨트 라인 툴
 - HTTP POST request 를 지원
 - HTTP 쿠키를 지원
 - 스크립트처럼 사용자 인터렉션없이 수행될 수 있도록 설계
 - 오픈소스이며 무료90년대에 시작한 프로젝트 (wget 은 1995년, curl 은 1996년에 시작)metalink 를 지원
  
wget / curl 차이점

wget
 - 간단하고 직관적 (만약, 별다른 옵션없이 컨텐츠를 조금 더 빠르게 다운로드하려고 한다면 wget 이 적합)
 - 별도의 라이브러리를 지원하지 않음
 - 재귀적으로 다운로드즉, 페이지에 있는 모든 내용이나 FTP 디렉터리에 있는 모든 파일들을 한 번에 그대로 복사
 - curl 에 비하여 더 오래되었음
curl
 - 복잡한 컨텐츠를 다운로드 하려고 한다면 wget 보다는 curl 이 적합
 - libcurl 라이브러리로 더 강력한 기능들을 추가/사용할 수 있음
 - stdin 또는 stdout 의 pipe 를 이용하는 전통적인 unix 스타일의 방식도 지원
 - LDAP 이나 Samba 공유도 지원양방향 (wget 은 일반 HTTP POST request 만 지원)
 - SSL 을 지원gzip 압축 및 해지를 지원

 

4. wget / curl 기능 비교

 

curl과 wget은 모두 다양한 작업에 적합하게 만드는 고유한 기능을 가지고 있습니다. 예를 들어 curl은 API와 상호작용하는 데 자주 사용되며 다양한 데이터 형식을 처리할 수 있습니다. 또한 인증, 쿠키 등도 지원합니다. 컬의 주요 기능 중 일부는 다음과 같습니다.

 - HTTP, HTTPS, FTP, FTPS, SCP, SFTP 등을 포함한 광범위한 프로토콜을 지원합니다.
 - JSON, XML, CSV 등 다양한 데이터 형식을 처리할 수 있습니다.
 - 인증 및 쿠키를 지원합니다.
 - API와 상호작용할 수 있습니다.

 

반면 wget은 주로 파일 다운로드용으로 설계되었으며 이 작업을 위한 신뢰할 수 있는 도구로 만드는 다양한 기능을 갖추고 있습니다. 다음은 wget의 주요 기능 중 일부입니다.

 - HTTP 및 FTP 프로토콜을 지원합니다.
 - 재귀적으로 다운로드하여 링크된 모든 파일을 다운로드할 수 있습니다.
 - 느리거나 불안정한 연결을 쉽게 처리할 수 있습니다.
 - 중단된 다운로드를 재개할 수 있습니다.
 - 네트워크 과부하를 방지하기 위해 다운로드 속도를 제한할 수 있습니다.

 

5. 성능 비교

 

성능과 관련하여 컬과 wget 간에는 약간의 차이가 있습니다. Curl은 한 번에 여러 연결을 지원하여 파일을 병렬로 다운로드할 수 있기 때문에 일반적으로 wget보다 빠른 것으로 간주됩니다. 이는 대용량 파일을 다운로드하거나 한 번에 여러 파일을 다운로드할 때 특히 유용할 수 있습니다. 반면, Wget은 느리거나 불안정한 연결을 처리할 수 있는 안정적인 도구로 설계되었으므로 특정 유형의 다운로드에 더 적합할 수 있습니다.

 

6. 보안 비교

 

curl과 wget은 모두 클라이언트와 서버 간에 전송되는 데이터를 암호화하는 HTTPS를 사용한 보안 연결을 지원합니다. 그러나 컬에는 보다 안전한 도구로 만드는 몇 가지 추가 보안 기능이 있습니다. 예를 들어, 컬은 SSL 인증서를 검사하여 인증서가 유효한지, 변조되지 않았는지 확인할 수 있습니다. SSL, TLS 등 다양한 암호화 방법을 사용할 수도 있습니다.

 

7. 이식성 비교

 

curl과 wget은 모두 Linux, macOS, Windows를 포함한 다양한 운영 체제에서 사용할 수 있습니다. 그러나 컬은 외부 라이브러리가 필요하지 않은 독립형 프로그램이기 때문에 일반적으로 이식성이 더 높은 것으로 간주됩니다. 반면 Wget은 GNU Wget 라이브러리를 사용하는데 일부 시스템에서는 사용하지 못할 수도 있습니다.

 

8. 사용 사례

 

curl과 wget은 모두 다양한 작업에 사용할 수 있는 다목적 도구입니다. 다음은 각 도구의 몇 가지 일반적인 사용 사례입니다.

curl

 - 인터넷에서 파일 다운로드
 - 서버에 데이터 업로드
 - API와 상호작용
 - 웹 서비스 테스트
 - 데이터베이스에서 데이터 다운로드
 - 웹페이지 스크래핑
wget
 - 인터넷에서 파일 다운로드
 - 오프라인으로 볼 수 있도록 전체 웹사이트를 다운로드하세요.
 - 중단될 수 있는 대용량 파일 다운로드
 - 연결이 느리거나 불안정한 파일 다운로드
 - 느린 네트워크 연결을 통해 파일 다운로드

 

 

 

[참고]

- https://inpa.tistory.com/entry/LINUX-%F0%9F%93%9A-CURL-%EB%AA%85%EB%A0%B9%EC%96%B4-%EC%82%AC%EC%9A%A9%EB%B2%95-%EB%8B%A4%EC%96%91%ED%95%9C-%EC%98%88%EC%A0%9C%EB%A1%9C-%EC%A0%95%EB%A6%AC

- https://www.tutorialspoint.com/linux-commands-comparison-curl-vs-wget

 

 

반응형