หากคุณได้ปฏิบัติตามคำแนะนำในการติดตั้งที่เน้นเทอร์มินัลสำหรับแอปพลิเคชัน Linux มาระยะหนึ่งแล้ว คุณอาจพบ curl
คำสั่ง ณ จุดใดจุดหนึ่ง cURL เป็นเครื่องมือบรรทัดคำสั่งสำหรับการถ่ายโอนข้อมูลด้วย URL การใช้งานที่ง่ายที่สุดวิธีหนึ่งคือการดาวน์โหลดไฟล์ผ่านบรรทัดคำสั่ง อย่างไรก็ตาม นี่เป็นการหลอกลวง เนื่องจาก cURL เป็นเครื่องมือที่ทรงพลังอย่างเหลือเชื่อที่สามารถทำได้มากกว่านั้น
cURL คืออะไร
เดิมทีเขียนขึ้นโดย Daniel Sternberg ในปี 1996 เพื่อดึงข้อมูลทางการเงินจากเว็บเซิร์ฟเวอร์และออกอากาศไปยังช่อง IRC cURL ได้พัฒนาให้กลายเป็นเครื่องมือที่ทรงพลังสำหรับการรับข้อมูลโดยไม่ต้องใช้เบราว์เซอร์ หากคุณใช้เทอร์มินัลอยู่เสมอ นี่จะเป็นหนึ่งในเครื่องมือที่สำคัญกว่าในคลังแสงของคุณ
ในลีนุกซ์ลีนุกซ์ส่วนใหญ่ cURL จะถูกติดตั้งไว้ล่วงหน้าในระบบ และคุณสามารถใช้งานได้ทันที แม้ว่าจะไม่ได้ติดตั้ง แต่ก็พบได้ในที่เก็บส่วนใหญ่ ดังนั้นคุณจึงสามารถติดตั้งได้อย่างง่ายดายโดยใช้ Software Center
สำหรับ Windows ไม่มีคำสั่ง "curl-like" และ macOS มีการติดตั้ง cURL ไว้ล่วงหน้า แต่ไม่มีแฟล็กมากเท่ากับเวอร์ชัน Linux
การติดตั้ง
ก่อนที่เราจะดำเนินการต่อ เราต้องตรวจสอบให้แน่ใจว่าได้ติดตั้ง cURL ในระบบของเราแล้ว
ลินุกซ์
ใน distros ที่ใช้ Debian/Ubuntu ให้ใช้คำสั่งต่อไปนี้เพื่อติดตั้ง cURL:
sudo apt install curl
ใน distros แบบ Arch:
sudo pacman -S curl
ใน Fedora/CentOS/RHEL:
sudo dnf install curl
macOS
สำหรับ macOS มีการติดตั้งไว้ล่วงหน้าแล้ว คุณจึงไม่ต้องดำเนินการใดๆ
Windows
- สำหรับ Windows 7/10/11 ตรงไปที่หน้าดาวน์โหลด cURL และเลือกจากแพ็คเกจ 64 บิตหรือ 32 บิตตามสถาปัตยกรรมที่คุณใช้งาน หากคุณไม่รู้จักสถาปัตยกรรมของคุณ 64-บิตเป็นเดิมพันที่ปลอดภัย เนื่องจากฮาร์ดแวร์ส่วนใหญ่ที่ผลิตหลังปี 2006 อยู่ในนั้น
- สร้างโฟลเดอร์โดยตรงบนไดรฟ์ระบบหรือใน “C:\Program Files\” และเรียกมันว่า “cURL”
- กลับไปที่ไฟล์ zip ที่คุณดาวน์โหลด เปิดและค้นหา "curl.exe" ในโฟลเดอร์ "bin" คัดลอกไปยังโฟลเดอร์ cURL ที่คุณสร้างขึ้น EXE ที่คุณคัดลอกนั้นมีความสมบูรณ์ในตัวเองและสามารถเรียกใช้การเรียงสับเปลี่ยนทุกอย่างที่คุณเรียกใช้บน Linux ได้
- เพื่อให้คำสั่งนี้มีประโยชน์จริง ๆ เราต้องเพิ่มลงในตัวแปร PATH ใน Windows เพื่อให้สามารถเรียกใช้จากพรอมต์คำสั่งได้ทุกที่
- คลิกที่เมนู Start พิมพ์
environment
และกด Enter . - คลิกที่ “ตัวแปรสภาพแวดล้อม … ” ตอนนี้คุณควรจะอยู่ในการตั้งค่าตัวแปรสภาพแวดล้อมของคุณ
- เลือกตัวแปรสภาพแวดล้อม “เส้นทาง” จากนั้นคลิก “แก้ไข … “
- เมื่ออยู่ในหน้าต่างข้อความแก้ไขพาธ คลิก "ใหม่" และพิมพ์ไดเร็กทอรีที่มี "curl.exe" ของคุณ ตัวอย่างเช่น "C:\Program Files\cURL"
- คลิก “ตกลง” บนหน้าต่างโต้ตอบที่คุณเปิดผ่านขั้นตอนนี้ และสนุกกับการมี cURL ในเทอร์มินัลของคุณ!
ทุกแฟล็กใน cURL ที่ใช้งานได้ใน Linux ควรทำงานในเวอร์ชัน Windows
คำพูดกับคนฉลาด: จำไว้ว่าพรอมต์คำสั่งไม่ควรสับสนกับ Windows Terminal Windows Terminal มาพร้อมกับ cURL เวอร์ชันของตัวเองที่รวมอยู่ใน PowerShell ซึ่งทำหน้าที่คล้ายคลึงกัน แต่ทำงานแตกต่างไปจากเดิมอย่างสิ้นเชิง
การใช้ cURL
ในการเริ่มต้น เพียงพิมพ์ curl maketecheasier.com
ในเทอร์มินัลของคุณแล้วกด Enter .
หากคุณไม่ได้รับผลลัพธ์ใดๆ อาจเป็นเพราะเซิร์ฟเวอร์ของไซต์นี้ไม่ได้รับการกำหนดค่าให้ตอบสนองต่อคำขอเชื่อมต่อแบบสุ่มไปยังโดเมนที่ไม่มี www หากคุณสำรวจเซิร์ฟเวอร์ที่ไม่มีอยู่หรือไม่ออนไลน์ คุณจะได้รับข้อความแสดงข้อผิดพลาดแจ้งว่า cURL ไม่สามารถแก้ไขโฮสต์ได้
เพื่อให้ cURL ทำสิ่งที่มีประโยชน์จริง ๆ เราจะต้องระบุโปรโตคอล ในตัวอย่างของเรา เราใช้โปรโตคอล HTTPS เพื่อสืบค้นหน้าแรกของเว็บไซต์นี้ พิมพ์ curl https://www.maketecheasier.com
.
ถ้าทุกอย่างเป็นไปด้วยดี คุณควรจ้องไปที่กำแพงข้อมูลขนาดมหึมา ในการทำให้ข้อมูลนั้นใช้งานได้มากขึ้น เราสามารถบอกให้ cURL ใส่ลงในไฟล์ HTML:
curl https://www.maketecheasier.com > ~/Downloads/mte.html
คำสั่งนี้ใส่เนื้อหาของผลลัพธ์ของเว็บไซต์ของเราลงในไฟล์ HTML ในโฟลเดอร์ดาวน์โหลดของคุณ ไปที่โฟลเดอร์ด้วยตัวจัดการไฟล์ที่คุณชื่นชอบ แล้วดับเบิลคลิกที่ไฟล์ที่คุณเพิ่งสร้าง ควรเปิดสแนปชอตของเอาต์พุต HTML ของหน้าแรกของเว็บไซต์นี้
ในทำนองเดียวกัน คุณสามารถใช้ -o
ตั้งค่าสถานะเพื่อให้ได้ผลลัพธ์เดียวกัน:
curl -o ~/Downloads/mte.html https://www.maketecheasier.com
กำลังติดตามการเปลี่ยนเส้นทาง
ไซต์ส่วนใหญ่เปลี่ยนเส้นทางการรับส่งข้อมูลจากโปรโตคอล "http" เป็น "https" โดยอัตโนมัติ ใน cURL คุณสามารถทำสิ่งเดียวกันได้ด้วย -L
ธง. การดำเนินการนี้จะติดตามการเปลี่ยนเส้นทาง 301 โดยอัตโนมัติจนกว่าจะถึงหน้าหรือไฟล์ที่อ่านได้
curl -L https://google.com.
กำลังดำเนินการดาวน์โหลดต่อ
เมื่อดาวน์โหลดไฟล์ขนาดใหญ่ ขึ้นอยู่กับความเร็วอินเทอร์เน็ตของคุณ การหยุดชะงักอาจทำให้ระคายเคืองอย่างมาก โชคดีที่ cURL มีฟังก์ชันประวัติย่อ ผ่าน -C
ธงจะดูแลปัญหานี้ในระยะเวลาอันสั้น
เพื่อแสดงตัวอย่างในโลกแห่งความเป็นจริง ฉันขัดจังหวะการดาวน์โหลด ISO ของการทดสอบ Debian โดยตั้งใจโดยการกด Ctrl และ C อยู่ตรงกลางของการจับมัน
สำหรับคำสั่งต่อไป ให้แนบ -C
ธง. ตัวอย่างเช่น
curl -C - -o ~/Downloads/debiantesting.iso -L https://cdimage.debian.org/cdimage/weekly-builds/amd64/iso-dvd/debian-testing-amd64-DVD-1.iso
การดาวน์โหลดเริ่มต้นสำเร็จจากจุดที่ค้างไว้
กำลังดาวน์โหลดมากกว่าหนึ่งไฟล์
เนื่องจาก cURL ไม่มีวิธีการดาวน์โหลดไฟล์หลาย ๆ ไฟล์ที่ใช้งานง่ายที่สุด จึงมี 2 วิธี ซึ่งแต่ละวิธีก็มีข้อเสียต่างกันไป
หากไฟล์ที่คุณกำลังดาวน์โหลดมีการแจกแจง (เช่น file1, file2 เป็นต้น) คุณสามารถใช้วงเล็บเพื่อรับไฟล์ทั้งหมดและ "#" ภายในเอาต์พุตที่คุณระบุด้วย -oรหัส> ธง. เพื่อให้เกิดความสับสนน้อยลง นี่คือตัวอย่าง:
curl "https://example.com/file[1-5].zip" -o "#1_#2"
วิธีที่ง่ายกว่าคือใช้ -O
(--remote-name
). แฟล็กนี้ทำให้ cURL ดาวน์โหลดไฟล์รีโมตไปยังไฟล์ในเครื่องที่มีชื่อเดียวกัน เนื่องจากคุณไม่จำเป็นต้องระบุเอาต์พุต คุณควรใช้คำสั่งนี้เมื่อเทอร์มินัลเปิดอยู่ในไดเร็กทอรีที่คุณต้องการดาวน์โหลดไฟล์ไป
curl -O "https://example.com/file1.zip" -O "https://example.com/file2.zip"
หากคุณมีไฟล์จำนวนมากที่ต้องดาวน์โหลด --remote-name-all
เป็นค่าสถานะที่ดีกว่าสำหรับสิ่งนี้:
curl --remote-name-all "https://example.com/file[1-5].zip"
คุณยังสามารถระบุไฟล์ที่ไม่ได้ระบุที่มาจากเว็บไซต์เดียวกันโดยไม่ต้องพิมพ์ URL ใหม่โดยใช้วงเล็บ:
curl --remote-name-all "https://example.com/{file1.zip,anotherfile.zip,thisisfun.zip}"
กำลังดาวน์โหลดด้วยการตรวจสอบสิทธิ์
ดาวน์โหลดไฟล์ที่ต้องมีการตรวจสอบสิทธิ์ (เช่น เมื่อดึงจากเซิร์ฟเวอร์ FTP ส่วนตัว) ด้วย -u
ธง. คำขอการรับรองความถูกต้องทุกครั้งต้องทำด้วยชื่อผู้ใช้ก่อนและรหัสผ่านที่สอง โดยมีเครื่องหมายทวิภาคคั่นทั้งสอง นี่คือตัวอย่างที่จะทำให้ทุกอย่างง่ายขึ้น:
curl -u username:password -o ~/Downloads/file.zip ftp://example.com/file.zip
การดำเนินการนี้จะตรวจสอบความถูกต้องของเพื่อนของเรา bonobo_bob ในเซิร์ฟเวอร์ FTP และดาวน์โหลดไฟล์ลงในโฟลเดอร์ดาวน์โหลด
การแยกและการรวมไฟล์
หากคุณต้องการดาวน์โหลดไฟล์ขนาดใหญ่และแยกเป็นส่วนๆ ด้วยเหตุผลใดก็ตาม คุณสามารถทำได้ด้วย --range
ของ cURL ธง. ด้วย --range
คุณต้องระบุไบต์ที่คุณต้องการเริ่มต้นจนถึงไบต์ที่คุณต้องการสิ้นสุด หากคุณไม่ระบุจุดสิ้นสุดของช่วง ระบบจะดาวน์โหลดไฟล์ที่เหลือ
ในคำสั่งด้านล่าง cURL จะดาวน์โหลดอิมเมจการติดตั้งของ Arch Linux 100 MB แรก:
curl --range 0-99999999 -o arch.part1 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso
สำหรับ 100 MB ถัดไป ให้ใช้ --range 100000000-19999999
ฯลฯ คุณสามารถโยงคำสั่งเหล่านี้ได้โดยใช้ &&
ตัวถูกดำเนินการ:
curl --range 0-99999999 -o arch.part1 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso && \ curl --range 100000000-199999999 -o arch.part2 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso && \ curl --range 200000000-299999999 -o arch.part3 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso && \ curl --range 300000000-399999999 -o arch.part4 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso && \ curl --range 400000000-499999999 -o arch.part5 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso && \ curl --range 500000000-599999999 -o arch.part6 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso && \ curl --range 600000000-699999999 -o arch.part7 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso && \ curl --range 700000000- -o arch.part8 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso
หากคุณทำตามโครงสร้างคำสั่งข้างต้นกับตัวอักษร ไฟล์แปดไฟล์ควรปรากฏขึ้นในตำแหน่งที่คุณขอให้ดาวน์โหลด cURL
หากต้องการรวมไฟล์เหล่านี้อีกครั้ง คุณจะต้องใช้ cat
คำสั่งถ้าคุณใช้ Linux หรือ macOS ดังนี้:
cat arch.part? > arch.iso
สำหรับ Windows คุณจะต้องใช้ copy
คำสั่งดังนี้:
copy /b arch.part* arch.iso
คุณลักษณะที่มีประโยชน์อื่นๆ
มีแฟล็กและใช้สำหรับ cURL มากมาย:
-#
– ใช้แถบความคืบหน้าเพื่อระบุว่าคุณกำลังคว้าอะไรอยู่ ตัวอย่าง:curl -# https://asite.com/somefile.zip> ~/somefile.zip
.-a
– ขอให้ cURL ต่อท้ายไฟล์แทนที่จะเขียนทับ ตัวอย่าง:curl -ao ~/collab-full.x https://example-url.com/collab-part26.x
.--หัว
– คว้าเฉพาะส่วนหัวการตอบสนองจากเซิร์ฟเวอร์ที่ไม่มีข้อมูลเอาต์พุต สิ่งนี้มีประโยชน์เมื่อคุณกำลังดีบั๊กเว็บไซต์หรือดูการตอบกลับที่ตั้งโปรแกรมไว้ของเซิร์ฟเวอร์ไปยังไคลเอนต์ ตัวอย่าง:curl --head https://example-url.com
.--limit-rate
– สั่งซื้อการดาวน์โหลดด้วยแบนด์วิดธ์ที่จำกัด มีประโยชน์ในสถานการณ์ที่คุณไม่ต้องการ cURL hogging แบนด์วิดธ์ทั้งหมดที่มีอยู่ในระบบของคุณ ตัวเลขอย่างง่ายจะถูกตีความว่าเป็นไบต์ต่อวินาที K แทนกิโลไบต์ต่อวินาที; M แทนเมกะไบต์ต่อวินาที ตัวอย่าง:curl --limit-rate 8M https://example-url.com/file.zip> ~/file.zip
.-o
– ตามที่กล่าวไว้ก่อนหน้านี้ กำหนดไฟล์เอาต์พุตสำหรับ cURL ที่จะใช้ ตัวอย่าง:curl -o ~/Downloads/file.zip https://thefileplace.com/file.zip -o file2.zip https://thefileplace.com/file2.zip
.--proxy
– หากคุณต้องการทำงานกับพร็อกซี่ นี่คือวิธีการทำ ตัวอย่าง:curl --proxy proxyurl:port https://example-url.com/file.zip> ~file.zip
.
cURL เทียบกับ Wget
ทั้งสองเปิดตัวในปีเดียวกัน (1996) cURL และ Wget เป็นโปรแกรมที่คล้ายคลึงกันสำหรับผู้สังเกตการณ์ทั่วไป เจาะลึกลงไปอีกหน่อย และคุณจะเห็นว่าพี่สาวน้องสาวสองคนนี้มีจุดประสงค์ต่างกัน
Wget
- สร้างมาโดยสมบูรณ์เพื่อดึงข้อมูลจากอินเทอร์เน็ต
- ไม่ต้องการ
-L
หรือ-o
ธงเช่น cURL; เพียงพิมพ์wget [url]
แล้วไป! - สามารถดาวน์โหลดซ้ำเพื่อคว้าทุกอย่างในไดเร็กทอรีด้วย
-r
ธง. - มีฟังก์ชันทั้งหมดที่ผู้ใช้ต้องการสำหรับการใช้งานประจำวันและรองรับงานดูแลระบบทุกวัน
- (ใน Linux) ไม่ต้องการการพึ่งพามากมาย ทั้งหมดควรมีพร้อมจำหน่าย
cURL
- รายการแฟล็กที่กว้างขวางและฟังก์ชันที่มีประโยชน์สำหรับการดึงข้อมูลจากระยะไกล
- รองรับเครือข่ายท้องถิ่น (LDAP) และเครื่องพิมพ์เครือข่าย (Samba)
- ทำงานได้ดีกับไลบรารีบีบอัด gzip
- ขึ้นอยู่กับ libcurl ซึ่งช่วยให้นักพัฒนาสามารถเขียนซอฟต์แวร์หรือสคริปต์ทุบตีที่มีฟังก์ชันของ cURL
กล่าวโดยย่อ Wget คือ "กล่องเครื่องมือของทุกคน" สำหรับการหยิบสิ่งของจากอินเทอร์เน็ต ในขณะที่ cURL ขยายขอบเขตนี้ด้วยการควบคุมที่ละเอียดยิ่งขึ้นสำหรับผู้ใช้ระดับสูงและผู้ดูแลระบบ
คำถามที่พบบ่อย
1. ฉันได้รับข้อผิดพลาดของใบรับรองใน Linux ฉันจะแก้ไขได้อย่างไร
หากคุณได้รับข้อผิดพลาดที่ระบุว่า "ผู้ออกใบรับรองของเพียร์ถูกทำเครื่องหมายว่าไม่น่าเชื่อถือ" วิธีที่ง่ายที่สุดในการแก้ไขปัญหานี้คือการติดตั้งแพ็คเกจใบรับรองทั่วไปใน distro ของคุณอีกครั้ง
สำหรับระบบที่ใช้ Debian/Ubuntu:
sudo apt reinstall ca-certificates
สำหรับ Fedora/CentOS/RHEL:
dnf reinstall ca-certificates
สำหรับระบบที่ใช้ Arch:
pacman -S ca-certificates
โปรดทราบว่าใน Arch คุณอาจต้องการล้างแคชแพ็กเกจโดยใช้ pacman -Scc
ก่อนที่จะติดตั้งแพ็คเกจใบรับรองใหม่อีกครั้ง
หากคุณยังคงได้รับข้อผิดพลาดนี้ อาจมีบางอย่างผิดปกติที่ฝั่งเซิร์ฟเวอร์
2. การรันคำสั่ง cURL และ bash ร่วมกันจะปลอดภัยหรือไม่
แม้ว่าจะไม่ใช่วิธีทั่วไปในการติดตั้งแอปพลิเคชัน Linux แต่ก็มีนักพัฒนาหลายคน (เช่น ผู้ที่อยู่เบื้องหลัง NodeJS) ที่ให้คุณไม่มีทางเลือกนอกจากใช้ curl
ควบคู่ไปกับคำสั่ง root-access ที่ทำงานผ่าน bash (เช่น curl [argument] | sudo -E bash -
) เพื่อติดตั้งซอฟต์แวร์
อาจดูน่ากลัวเล็กน้อย แต่ถ้าคนที่อยู่เบื้องหลังแอปพลิเคชันนี้น่าเชื่อถือ ไม่น่าจะเป็นไปได้มากที่คุณจะทำลายบางสิ่งบางอย่าง ตัวแสดงที่เป็นอันตรายมีอยู่ทุกหนทุกแห่งและสามารถแทรกซึมที่เก็บเช่น AUR ของ Arch ดังนั้นการติดตั้งโดยใช้ curl
เมื่อใช้ร่วมกับคำสั่งการเข้าถึงรูท โดยทั่วไปแล้วจะไม่ปลอดภัยมากกว่าการดำเนินการผ่านตัวจัดการแพ็คเกจ
3. ฉันสามารถใช้ cURL กับ Tor ได้หรือไม่
ใช่! เริ่ม Tor Browser (หรือบริการ Tor แบบสแตนด์อโลน) และใช้ --proxy
ธง. Tor ให้พร็อกซีในพื้นที่แก่คุณ ซึ่งคุณสามารถใช้ปิดบัง IP ของคุณในแอปพลิเคชันอื่น นี่คือตัวอย่าง cURL ที่ใช้กับ Tor:
curl --proxy localhost:9050 https://example.com
บริการ Tor แบบสแตนด์อโลนจะใช้ 9050 เป็นพอร์ตรับฟัง ในขณะที่เบราว์เซอร์ Tor จะใช้พอร์ต 9150
สรุปผล
cURL ได้รับการพิสูจน์แล้วว่ามีความยืดหยุ่นท่ามกลางการเปลี่ยนแปลงของโลก Linux โดยรักษาตำแหน่งเป็นเครื่องมือสำคัญในคลังแสงของผู้ใช้ปลายทาง
หากคุณเพิ่งเริ่มใช้บรรทัดคำสั่ง ให้ลองดูคำสั่ง Linux ที่มีประโยชน์ที่สุดบางคำสั่ง หากคุณเพียงแค่ต้องการค้นหาเว็บแทนที่จะดาวน์โหลดข้อมูลจากอินเทอร์เน็ต คุณก็เรียกดูบนเทอร์มินัลได้เช่นกัน