cURL คืออะไร
ก่อนที่จะเรารู้ว่า cURL คืออะไร เรามีดูชื่อเต็มของมันก่อน ซึ่งก็คือ “Client for URLs” เป็นสาเหตุว่าทำไม URL ถึงเป็นตัวใหญ่ และอ่านว่า “See-URL” โดยใน project ของ cURL มีการใช้งานอยู่ด้วยกัน 2 แบบ คือ
libcurl
เป็น free library สำหรับการทำ client รองรับ protocol หลากหลายมากอาทิ DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET และ TFTP.
libcurl สามารถติดตั้งได้ง่าย หลากหลาย platform Solaris, NetBSD, FreeBSD, OpenBSD, Darwin, HP-UX, IRIX, AIX, Tru64, Linux, UnixWare, HURD, Windows และอีกมากมาย ที่สำคัญคือ ฟรี ใช้ง่าย และ รวดเร็ว
curl
เป็น program command line ที่ใช้สำหรับส่งข้อมูลโดยอาศัยรูปแบบ URL โดยมีพื้นฐานการทำงานจาก libcurl นั้นแหละ ทำให้สามารถรองรับ protocol ใน internet เกือบทั้งหมด
วิธีการติดตั้ง cURL
$ sudo apt-get install curl
หรือ สำหรับ libcurl ของ php
$ sudo apt-get install libcurl3 php5-curl
- สำหรับ Window สามารถ download ได้ที่ https://curl.haxx.se/download.html
- เลือก Type of Package: curl executable
- เลือก Operating System: Windows / Win32 or Win64
- เลือก What Flavour: Generic
- เลือก Win32 Version: Unspecified
ตัวอย่างการใช้งาน curl
หลังจาก install cURL แล้ว เราสามารถพิมพ์ curl ที่หน้า command line โดยตรงได้เลย
$ curl curl: try 'curl --help' or 'curl --manual' for more information
ตรวจสอบ version ด้วย –version
$ curl --version curl 7.47.0 (x86_64-pc-linux-gnu) libcurl/7.47.0 GnuTLS/3.4.10 zlib/1.2.8 libidn/1.32 librtmp/2.3 Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp smb smbs smtp smtps telnet tftp Features: AsynchDNS IDN IPv6 Largefile GSS-API Kerberos SPNEGO NTLM NTLM_WB SSL libz TLS-SRP UnixSockets
การใช้งานก็ง่ายมากด้วย syntax
$ curl <-OPTION -OPTION> <URL>
เริ่มแรกเราลองดึงข้อมูลจาก google.com ดู
$ curl google.com <HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8"> <TITLE>302 Moved</TITLE></HEAD><BODY> <H1>302 Moved</H1> The document has moved <A HREF="http://www.google.co.th/?gws_rd=cr&ei=3YMJWY_qJInU0ASzuaCQBQ">here</A>. </BODY></HTML>
จะเห็นว่ามีการแสดงผลกลับมาจากทาง google.com ว่า เวปนี้มีการตั้ง temporary redirect page (302 Moved) ไปยัง “http://www.google.co.th/?gws_rd=cr&ei=3YMJWY_qJInU0ASzuaCQBQ”
เราสามารถ follow link ตามไปได้ด้วย option -L
$ curl -L http://google.com <!doctype html><html itemscope="" itemtype="http://schema.org/WebPage" lang="th"><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
จะเห็นว่าข้อมูลที่จะเป็นส่วน body ของ HTTP
ถ้าเราจะดู HTTP header ก็ใช้ option -I
$ curl -I http://google.com HTTP/1.1 302 Found Location: http://www.google.co.th/?gws_rd=cr&ei=E4cJWZC-HMKv0AT4lIm4Bw Cache-Control: private Content-Type: text/html; charset=UTF-8 P3P: CP="This is not a P3P policy! See https://www.google.com/support/accounts/answer/151657?hl=en for more info." Date: Wed, 03 May 2017 07:30:27 GMT Server: gws Content-Length: 261 X-XSS-Protection: 1; mode=block X-Frame-Options: SAMEORIGIN
cURL สามารถ download หรือ redirect output ลง file ด้วย -0
$ curl -o google.com http://www.google.co.th % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 11421 0 11421 0 0 64227 0 --:--:-- --:--:-- --:--:-- 64525 $ ls google.com google.com
นอกจากนี้ยังรองรับ https protocol ด้วย
$ curl https://www.google.co.th <!doctype html><html itemscope="" itemtype="http://schema.org/WebPage" lang="th"><head>
สามารถระบุ CA certificate file ได้
$ curl --cacert c:\temp\cacerts.crt https://securesite.com/login.html
หรือข้ามการ verify cert ก็ได้
$ curl --insecure https://self-signed-cert.com/login.html
Author: Suphakit Annoppornchai
Credit: https://saixiii.com,https://en.wikipedia.org
[…] ต่อไปเราจะมาดู วิธีส่งข้อความผ่าน LINE API แต่ก่อนจะใช้งาน LINE API เราต้องมี program สำหรับ POST HTTP กลับไปหา LINE Server ก่อน ซึ่งในบทนี้เราจะอาศัย Curl command ในการส่งกันครับ สำหรับท่านทีไม่รู้ว่า Curl คืออะไร ทำงานอย่างไร อ่านได้ที่นี… […]