2013년 7월 27일

curl를 이용한 http client, smtp client.


curl은 서버로부터 데이터를 가져올 수 있는 도구이다. curl은 libcurl(3)를 기반으로 한다.
(libcurl - client-side URL transfer)
crul homepage: http://curl.haxx.se/

curl  is  a tool to transfer data from or to a server, using one of the supported protocols (DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, TELNET and TFTP). The command is designed to work without user inter-action.

curl offers a busload of useful tricks like proxy support, user authen-tication, FTP upload, HTTP post, SSL connections, cookies, file transfer resume and more. As you will see below, the number of features will make your head spin!

curl is powered by  libcurl  for all transfer-related features. See libcurl(3) for details.

1. http client로 사용하기

응답 데이터 출력

간단하게 URL를 입력하면 응답 데이터를 화면에 보여준다.

$ curl http://curl.haxx.se

응답 데이터를 파일로 저장하기(-o FILENAME)

curl-refined.jpg 파일을 image.jpg 파일로 저장한다.

$ curl http://curl.haxx.se/pix/curl-refined.jpg -o image.jpg

"-#" 옵션을 추가하면 얼마나 다운로드 되고 있는지 화면상에 출력해준다.


$ curl http://curl.haxx.se/pix/curl-refined.jpg -o image.jpg -#
######################################################################## 100.0%

클라이언트의 요청 및 응답데이터를 모두 출력(저장)하기

--trace FILENAME: 옵션을 사용하면 요청 및 응답시 헤더 및 바디 내용을 지정한 파일에 모두 저장한다.
--trace-ascii FILENAME: --trace 보다 조금 더 읽기 쉽다.
--trace-time: 요청 및 응답에 대한 시간 정보를 출력한다.

"FILENAME" 대신에 간단히 '-'만 입력하면 출력내용을 모두 화면에 보여준다.

$ curl  --trace-ascii - --trace-time http://naver.com

14:17:54.485591 == Info: About to connect() to naver.com port 80 (#0)

14:17:54.485745 == Info:   Trying 202.131.30.11...

14:17:54.501270 == Info: connected

14:17:54.501320 == Info: Connected to naver.com (202.131.30.11) port 80 (#0)

14:17:54.501377 => Send header, 140 bytes (0x8c)

0000: GET / HTTP/1.1

0010: User-Agent: curl/7.24.0 (x86_64-apple-darwin12.0) libcurl/7.24.0

0050:  OpenSSL/0.9.8x zlib/1.2.5

006c: Host: naver.com

007d: Accept: */*

008a:

14:17:54.507130 <= Recv header, 32 bytes (0x20)

0000: HTTP/1.1 301 Moved Permanently

14:17:54.507204 <= Recv header, 15 bytes (0xf)

0000: Server: nginx

14:17:54.507215 <= Recv header, 37 bytes (0x25)

0000: Date: Sun, 28 Jul 2013 05:17:54 GMT

14:17:54.507231 <= Recv header, 25 bytes (0x19)

0000: Content-Type: text/html

14:17:54.507243 <= Recv header, 21 bytes (0x15)

0000: Content-Length: 178

14:17:54.507255 <= Recv header, 24 bytes (0x18)

0000: Connection: keep-alive

14:17:54.507267 <= Recv header, 33 bytes (0x21)

0000: Location: http://www.naver.com/

14:17:54.507279 <= Recv header, 34 bytes (0x22)

0000: Vary: Accept-Encoding,User-Agent

14:17:54.507292 <= Recv header, 2 bytes (0x2)

0000:

14:17:54.507301 <= Recv data, 178 bytes (0xb2)

0000: 

0008: 301 Moved Permanently

003b: 

0053: 

301 Moved Permanently

0084:
nginx
00a0: 00a9: 301 Moved Permanently

301 Moved Permanently


nginx
14:17:54.507361 == Info: Connection #0 to host naver.com left intact 14:17:54.507381 == Info: Closing connection #0







댓글 없음:

댓글 쓰기