curl-command

cURL คืออะไร เคิล คือโปรแกรมสำหรับรับส่งข้อมูลกับ server

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

  • สำหรับ Linux สามารถติดตั้งได้จาก repository ตัวอย่างเช่น ubuntu
$ sudo apt-get install curl

หรือ สำหรับ libcurl ของ php

$ sudo apt-get install libcurl3 php5-curl
  1. เลือก Type of Package: curl executable
  2. เลือก Operating System: Windows / Win32 or Win64
  3. เลือก What Flavour: Generic
  4. เลือก 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&amp;ei=3YMJWY_qJInU0ASzuaCQBQ">here</A>.
</BODY></HTML>

จะเห็นว่ามีการแสดงผลกลับมาจากทาง google.com  ว่า เวปนี้มีการตั้ง temporary redirect page  (302 Moved) ไปยัง “http://www.google.co.th/?gws_rd=cr&amp;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

One thought on “cURL คืออะไร เคิล คือโปรแกรมสำหรับรับส่งข้อมูลกับ server

  1. […] ต่อไปเราจะมาดู วิธีส่งข้อความผ่าน LINE API แต่ก่อนจะใช้งาน LINE API เราต้องมี program สำหรับ POST HTTP กลับไปหา LINE Server ก่อน ซึ่งในบทนี้เราจะอาศัย Curl command ในการส่งกันครับ สำหรับท่านทีไม่รู้ว่า Curl คืออะไร ทำงานอย่างไร อ่านได้ที่นี… […]

Leave a Reply