- curl = Client URL
- 다양한 프로토콜로 데이터를 전송해볼 수 있는 명령어 기반의 컴퓨터 프로그램.
- 클라이언트에서 커맨드 라인이나 소스코드로 손 쉽게 웹 브라우저 처럼 활동할 수 있도록 해주는 기술(커맨드라인 Tool 혹은 라이브러리)
- cURL은 아래와 같은 프로토콜 등에 의해 전송되는 파일들을 위한 command line tool 이다. (다양한 프로토콜 지원)
- HTTP, HTTPS, FTP, FTPS, SCP, SFTP, TFTP, TELNET, DICT, LDAP, LDAPS, FILE, SSL, HTTP POST, HTTP PUT, FPT uploading, HTTP form 기반의 upload, proxies, cookies, user+password 인증도 제공.
- cURL은 무료이며 많은 운영체제에서 컴파일되고 동작하는 open software이다.
- libcurl은 일반 개발자가 많이 쓰는 HTTP,FTP를 시작해 매우 많은 프로토콜을 지원하는 무료 라이브러리이다.
- url을 가지고 할 수 있는 것들은 다할 수 있다. 예를 들면, http 프로토콜을 이용해 웹 페이지의 소스를 가져온다거나 파일을 다운받을 수 있다. ftp 프로토콜을 이용해서는 파일을받을 수 있을 뿐 아니라 올릴 수도 있다. 심지어 SMTP 프로토콜을 이용하면 메일도 보낼 수 있다.
- curl [-option] http://lchy0113.github.io 을 하게 되면 소스가 화면으로 출력된다.
- 이 외에 옵션을 이용하여 사용할 수 있다.
| option | 설명 | 비고 |
|---|---|---|
| -O | 파일 다운로드 | curl -O http://lchy0113.github.io/file.zip |
| -i | 헤더값 확인 | curl -i http://lchy0113.github.io |
| -I | 사이트의 Header와 바디 정보를 함께 가져오기. | |
| -v | request, response이 어떻게 오는지 확인.(헤더, 바디) | |
| -k | HTTPS 사이트를 SSL certificate 검증없이 연결. | |
| -s | 정숙 모드. 진행 내역이나 메시지등을 출력하지 않음. | |
| -H | 헤더 설정. 헤더 정보 전달. | |
| -d | HTTP Post data(FORM을 POST하는 HTTP나 JSON으로 데이터를 주고받는 REST 기반의 웹서비스 디버깅시 유용한 옵션) | |
| -X | request, Request시 사용할 method 종류(GET, POST, PUT, PATCH, DELETE)를 기술한다. |
- curl_init : 세션 초기화, 핸들값 리턴.
- curl_setopt : 옵션 세팅.
- curl_exec : curl을 실행.
- curl_errno : 에러 번호를 가져온다.
- curl_error : 에러 메시지를 가져온다.
- curl_getinfo : 상태 정보를 리턴한다.
- curl_close : curl 세션을 닫는다.