cURL이란?
개발자들이 모두 사랑하는 프로그램들이 몇 있다. 개인적으로 cURL도 그 중 하나가 아닐까 생각한다. 어떤 개발자는 대화할 때, ping 처럼 운영체제에 기본으로 포함된 명령어 마냥 말을 해서 헷갈리게 하기도 한다.
위키피디아에 따르면, 다양한 프로토콜로 데이터를 전송해볼 수 있는 명령어 기반의 컴퓨터 프로그램이다. 1997년 부터 시작된 프로젝트로 현재 libcurl과 cURL 2개의 제품을 배포한다. libcurl은 일반 개발자가 많이 쓰는 HTTP, FTP를 시작해 매우 많은 프로토콜을 지원하는 무료 라이브러리다.
언제 쓸 수 있을까?
url을 가지고 할 수 있는 것들은 다할 수 있다.
예를 들면, http 프로토콜을 이용해 웹 페이지의 소스를 가져온다거나 파일을 다운받을 수 있다. ftp 프로토콜을 이용해서는 파일을 받을 수 있을 뿐 아니라 올릴 수도 있다. 심지어 SMTP 프로토콜을 이용하면 메일도 보낼 수 있다 
어떻게 쓸 수 있나?
사용법은 간단하다. url의 소스코드를 보고 싶다면
라고 입력한다. 곧, 소스가 STDOUT(보통은 화면)으로 출력된다.
파일을 다운로드 하고 싶다면 -O 옵션을 사용한다.
| >curl -O http://sunphiz.me/file.zip |
이를 사용하면 바이러스가 걸려 브라우저가 고장났을 때에도, http 프로토콜을 통해 파일을 받을 수 있다.
요즘 http 프로토콜 기반의 api가 많은데 이를 확인할 때에도 좋다. -i나 -I 옵션을 사용하면 헤더값을 확인할 수 있는데, 왠만한 RESTful client들 보다 잘 보인다.
| >curl -I http://m.daum.net |
request와 response가 어떻게 갔는지 보고 싶다면 -v(verbose) 옵션을 쓸 수도 있다.
| >curl -v http://m.daum.net |
프록시를 통해 데이터를 통신하도록 할 수도 있다. -x 옵션 다음에 프록시 서버의 주소와 포트를 이어서 써주면 된다.
| >curl -x 1.2.3.4:8080 http://m.daum.net/ |
개인적으로는 api를 체크할 때 매우 유용해보이며, 그 어떤 RESTful client 보다 훌륭한 가독성을 제공하는 것 같다. 마지막으로 조금 복잡한 예제를 보자.
아래와 같은 파라미터를 모두 포함하면, POST MAN 같은 RESTful 클라이언트를 대체할 수도 있다.
- -x : 프록시 서버
- -v : 상세 데이터 표시(헤더, 바디)
- -d : 바디 데이터
- -H : 헤더 설정
| curl -x "1.2.6.2:8080" -v -d "{"person":{'age':13, 'sex':'female', 'tel':'111-222-3333'}}" -H "Host: stg.sunphiz.me" -H "Content-Type: text/plain" http://1.1.1.1/api/ |
그 밖에
- 맥에는 curl이 커맨드라인 툴로 기본 설치되어 있다. 더 자세한 도움말은 도움말을 참조하자.
- Chrome(혹은 Chromium) 브라우저의 개발자 도구 > 네트워크 탭에 HTTP의 request/response를 볼수 있다. 각 HTTP 호출의 오른쪽 버튼을 누르면 Copy as cURL이라는 명령어를 통해 cURL로 호출할 수 있는 명령어를 만들어 준다.

1. cURL이란?
- cURL = Client URL
- cURL은 아래와 같은 프로토콜 등에 의해 전송되는 파일들을 위한 command line tool이다.
FTP, FTPS, HTTP, HTTPS, SCP, SFTP, TFTP, TELNET, DICT, LDAP, LDAPS, FILE
- SSL, HTTP POST, HTTP PUT, FTP uploading, HTTP form기반의 upload, proxies, cookies, user+password인증도 제공한다.
- cURL은 무료이며, 많은 운영체제에서 컴파일되고 동작하는 open software이다.
- command line tool을 이용하거나
- libCURL을 이용할 수 있다.
아래는 원문이다.
curl is a command line tool for transferring files with URL syntax, supporting FTP, FTPS, HTTP, HTTPS, SCP, SFTP, TFTP, TELNET, DICT, LDAP, LDAPS and FILE. curl supports SSL certificates, HTTP POST, HTTP PUT, FTP uploading, HTTP form based upload, proxies, cookies, user+password authentication (Basic, Digest, NTLM, Negotiate, kerberos...), file transfer resume, proxy tunneling and a busload of other
useful tricks.
Curl is free and open software that compiles and runs under a wide variety of operating systems. |
Use the cURL command line tool or use
libcurl from within your own programs.
[what can curl do]의 내용을 참조하기 바란다.(http://curl.haxx.se/docs/features.html)
2. cURL의 장점
- cURL의 PHP설정의 allow_url_fopen옵션과 상관 없이 작동한다.
- Proxy, Cookie, Header등을 손쉽게 세팅할 수 있다.
- 다양한 프로토콜의 사용이 가능하여 개발의 범위가 넓다.
- 핸들러 하나로 여러개의 접속을 할 수 있기 때문에 코딩을 단순화 할 수 있다.
http://sunphiz.me/wp/archives/491
http://ksj01224.tistory.com/47