curl은 command URL로 일반적인 웹브라우저가 GUI을 제공하는데 반해
curl은 명령어(command)를 통해 데이터를 송수신할 수 있도록 해주는 툴이며, CUI(Command User Interface) 형태의 웹브라우저라 해도 무방할 것이다.
또한 curl은 공개 소프트웨어로 배포되고 있으며 윈도우, 리눅스, 맥 OS X 등을 포함한 다양한 운영체제를 지원하고 있다.
기본적인 설치 및 사용 방법
curl은 https://curl.haxx.se/download.html 에서 운영체제별로 다운로드 할 수 있다.
여기서는 윈도우 64비트 기준으로 작성하도록 하겠다.
먼저 Win64 - Generic 항목에서 Win64 x86_64 7zip 에 해당하는 파일을 다운로드 받는다.
다운로드를 다 받은 후 파일("curl_7_50_0_openssl_nghttp2_x64.7z")을 열게되면 아래 그림과 같이 curl.exe 실행 파일이 보이게 된다.
원하는 경로에 압축을 해제한 후 curl을 윈도우 명령프롬프트창에서 실행해보도록 하자.
1) 명령프롬프트 실행.
윈도우 시작메뉴 > 모든 프로그램 > 보조프로그램 > 명령 프롬프트
또는 윈도우키 + "R" 누른 후 실행창이 나오면 "cmd" 입력
[그림] 윈도우 명령 실행창
2) curl.exe 있는 경로로 이동 후 아래와 같이 명령어 실행 후 실행 결과 확인.
curl http://javaking75.blog.me/
[그림] curl 실행 결과, 요청한 페이지의 응답 결과가 보이게 된다.
curl은 HTTP, FTP, LDAP등 다양한 프로토콜을 지원하며 curl을 이용하면 이러한 프로토콜을 사용할 때 데이터의 흐름을 확인 해 볼 수 있다.
다음 표는 curl에서 사용할 수 있는 옵션 들 중 일부이다. curl -h 명령어를 실행하면 더 많은 옵션들을 확인 할 수 있다.
[표] curl 옵션
옵션 | 설명 | |
-a | --append | 업로드시 대상 파일에 추가 |
-E | --cert | 클라이언트 인증 파일 및 비밀 번호(SSL) 지정 |
-K | --config | 설정 파일 지정 |
-C | --continue-at | 지정된 오프셋부터 전송 재개 |
-b | --cookie | 쿠키 문자열 또는 쿠키 파일 지정 |
-c | --cookie-jar | 동작 후 지정된 파일에 쿠키 기록 |
-d | --data | HTTP POST 데이터 |
-D | --dump-header | 파일에 헤더 내용 기록 |
-f | --fail | HTTP 에러 발생시 표준 입출력으로 출력하지 않음 |
-F | --form | HTTP 다중 POST 데이터 지정 |
-P | --ftp-port | PASV대신 포트를 어드레스로 사용 |
-G | --get | 데이터를 GET 방식으로 전송 |
-g | --globoff | { }와 [ ]를 사용하여 URL 순서와 범위를 비활성화 |
-H | --header | 사용자 정의 헤더를 지정 |
-I | --head | 문서 정보를 출력 |
-h | --help | 텍스트 도움말 출력 |
-0 | --http1.0 | HTTP 1.0 사용 |
-i | --include | 출력에서 프로토콜 헤더를 포함 |
-k | --insecure | certs 없이 SSL 사이트 연결을 허용 |
-4 | --ipv4 | IPv4 주소 이름 해석 |
-6 | --ipv6 | IPv6 주소 이름 해석 |
-j | --junk-session-cookies | 파일로부터 읽어 들인 세션 쿠키 무시 |
-l | --list-only | FTP 디렉토리 이름만 열러 |
-L | --location | 요청된 페이지 위치가 변경된 경우 새로운 위치로 요청 |
-M | --manual | 모든 사용 방법 출력 |
-m | --max-time | 전송에 허용된 최대 시간 설정 |
-n | --netrc | 사용자 계정과 비밀 번호를 .netrc로 읽어들임 |
-N | --no-buffer | 출력 스트림의 버퍼링 비활성화 |
-o | --output | 표준 출력대신 파일로 출력 |
-# | --progress-bar | 전송 상태에 대한 진행 상태 표시 |
-x | --proxy | 주어진 포트에 대한 HTTP 프록시 사용 |
-U | --proxy-user | 프록시 사용자 계정 및 비밀번호 설정 |
-p | --proxytunnel | HTTP 프록시 터널을 통한 운영 |
-Q | --quote | 파일 전송 이전에 서버로 명령어 전송 |
-r | --range | 범위에 있는 바이트 검색 |
-e | --referer | 레퍼러 URL 지정 |
-O | --remote-name | 출력 파일을 원격 파일 이름으로 지정 |
-R | --remote-time | 로컬 출력 파일의 시간을 원격 파일의 시간으로 설정 |
-X | --request | 사용할 요청 명령을 지정 |
-S | --show-error | 에러를 표시 |
-s | --silent | 아무런 출력을 표시 하지 않음 |
-Y | --speed-limit | 지정된 전송 속도보다 느린 경우 전송 중단 |
-y | --speed-time | 지정된 시간보다 느린 경우 전송 중단 |
-2 | --sslv2 | SSLv2를 사용 |
-3 | --sslv3 | SSLv3를 사용 |
-t | --telnet-option | telnet 옵션 지정 |
-z | --time-cond | 시간 조건에 따른 전송 |
-1 | --tlsv1 | TLSv1(SSL) 사용 |
-T | --upload-file | 지정된 파일을 원격 사이트에 전송 |
-B | --use-ascii | ASCII/텍스트 전송 사용 |
-u | --user | 서버의 사용자 및 비밀번호 지정 |
-A | --user-agent | 서버로 전송되는 User-Agent 정보 |
-v | --verbose | verbose모드로 설정(디버깅시 활용) |
-V | --version | 버전 정보 출력 |
-w | --write-out | 종료 후 출력된 정보 설정 |
예)
#요처보내기
curl http://javaking75.blog.me
#HTTP 헤더 포함하여 출력하기
#HTTP 헤더만 출력하기
curl -I http://javaking75.blog.me
#요청 헤더 지정하기
#User-Agent 헤더를 지정
#POST 방식으로 요청 (요청 바디를 사용해 전송할 내용 지정)
# Json 형태 문자열 전송
curl -H 'Content-Type: application/json' -X POST http://javaking75.blog.me -d '{ "id": "javaking75"}'
'OS > Windows' 카테고리의 다른 글
[Error] sshd: no hostkeys available -- exiting (0) | 2022.01.21 |
---|---|
wsl 포트 할당 실패시 확인 (0) | 2022.01.16 |
Windows 7 방화벽 로그 분석툴 (0) | 2018.10.17 |
Windows Server 2016. 검색 기능이 동작 안 되는 증상 (0) | 2018.10.16 |
윈도우서버 비밀번호 정책 변경 (0) | 2018.10.14 |