[HTTP] wget/curl 명령어 정리
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://www.tutorialspoint.com/linux-commands-comparison-curl-vs-wget