您好,登錄后才能下訂單哦!
這篇文章主要介紹“如何使用curl從命令行訪問互聯(lián)網(wǎng)”,在日常操作中,相信很多人在如何使用curl從命令行訪問互聯(lián)網(wǎng)問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”如何使用curl從命令行訪問互聯(lián)網(wǎng)”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
下載我們整理的 curl 備忘錄。要在不使用圖形界面的情況下從互聯(lián)網(wǎng)上獲取所需的信息,curl 是一種快速有效的方法。
curl
通常被視作一款非交互式 Web 瀏覽器,這意味著它能夠從互聯(lián)網(wǎng)上獲取信息,并在你的終端中顯示,或?qū)⑵浔4娴轿募小谋砻婵?,這是 Web 瀏覽器,類似 Firefox 或 Chromium 所做的工作,只是它們默認情況下會渲染信息,而 curl
會下載并顯示原始信息。實際上,curl
命令可以做更多的事情,并且能夠使用多種協(xié)議與服務(wù)器進行雙向傳輸數(shù)據(jù),這些協(xié)議包括 HTTP、FTP、SFTP、IMAP、POP3、LDAP、SMB、SMTP 等。對于普通終端用戶來說,這是一個有用的工具;而對于系統(tǒng)管理員,這非常便捷;對于微服務(wù)和云開發(fā)人員來說,它是一個質(zhì)量保證工具。
curl
被設(shè)計為在沒有用戶交互的情況下工作,因此與 Firefox 不同,你必須從頭到尾考慮與在線數(shù)據(jù)的交互。例如,如果想要在 Firefox 中查看網(wǎng)頁,你需要啟動 Firefox 窗口。打開 Firefox 后,在地址欄或搜索引擎中輸入要訪問的網(wǎng)站。然后,導航到網(wǎng)站,然后單擊要查看的頁面。
對于 curl
來說也是如此,不同之處在于你需要一次執(zhí)行所有操作:在啟動 curl
的同時提供需要訪問的互聯(lián)網(wǎng)地址,并告訴它是否要將數(shù)據(jù)保存在終端或文件中。當你必須與需要身份驗證的網(wǎng)站或 API 進行交互時,會變得有點復(fù)雜,但是一旦你學習了 curl
命令語法,它就會變得自然而然。為了幫助你掌握它,我們在一個方便的備忘錄中收集了相關(guān)的語法信息。
你可以通過提供指向特定 URL 的鏈接來使用 curl
命令下載文件。如果你提供的 URL 默認為 index.html
,那么將下載此頁面,并將下載的文件顯示在終端屏幕上。你可以將數(shù)據(jù)通過管道傳遞到 less
、tail
或任何其它命令:
$ curl "http://example.com" | tail -n 4 <h2>Example Domain</h2> <p>This domain is for use in illustrative examples in documents. You may use this domain in literature without prior coordination or asking for permission.</p> <p><a href="https://www.iana.org/domains/example">More information...</a></p></div></body></html>
由于某些 URL 包含特殊字符,shell 通常會將其解釋,因此最安全的做法用引號將 URL 包起來。
某些文件無法很好的在終端中轉(zhuǎn)換顯示。你可以使用 --remote-name
選項使文件根據(jù)服務(wù)器上的命名進行保存:
$ curl --remote-name "https://example.com/linux-distro.iso"$ lslinux-distro.iso
或者,你可以使用 --output
選項來命名你想要下載的內(nèi)容:
curl "http://example.com/foo.html" --output bar.html
因為 curl
不是交互式的,所以很難瀏覽頁面上的可下載元素。如果你要連接的遠程服務(wù)器允許,可以使用 curl
來列出目錄的內(nèi)容:
$ curl --list-only "https://example.com/foo/"
如果你正在下載一個非常大的文件,你可能會發(fā)現(xiàn)有時候必須中斷下載。curl
非常智能,可以確定下載從何處中斷并繼續(xù)下載。這意味著,下一次當你下載一個 4GB 的 Linux 發(fā)行版的 ISO 出現(xiàn)問題時,就不必重新開始了。--continue-at
的語法有點不尋常:如果你知道下載中斷時的字節(jié)數(shù),你可以提供給 curl
;否則,你可以使用單獨的一個破折號(-
)指示 curl 自動檢測:
$ curl --remote-name --continue-at - "https://example.com/linux-distro.iso"
如果你需要下載多個文件而不是一個大文件,那么 curl
可以幫助你解決這個問題。假設(shè)你知道要下載的文件的位置和文件名模式,則可以使用 curl
的序列標記:中括號里是整數(shù)范圍的起點和終點。對于輸出文件名,使用 #1
表示第一個變量:
$ curl "https://example.com/file_[1-4].webp" --output "file_#1.webp"
如果你需要使用其它變量來表示另一個序列,按照每個變量在命令中出現(xiàn)的順序表示它們。例如,在這個命令中,#1
指目錄 images_000
到 images_009
,而 #2
指目錄 file_1.webp
至 file_4.webp
:
$ curl "https://example.com/images_00[0-9]/file_[1-4].webp" --output "file_#1-#2.webp"
你也可以僅使用 curl
和 grep
進行一些基本的 Web 抓取操作,以找到想要下載的內(nèi)容。例如,假設(shè)你需要下載與正在歸檔網(wǎng)頁關(guān)聯(lián)的所有圖像,首先,下載引用了圖像的頁面。將頁面內(nèi)通過管道傳輸?shù)?nbsp;grep
,搜索所需的圖片類型(在此示例中為 PNG)。最后,創(chuàng)建一個 while
循環(huán)來構(gòu)造下載 URL,并將文件保存到你的計算機:
$ curl https://example.com |\grep --only-matching 'src="[^"]*.[png]"' |\cut -d\" -f2 |\while read i; do \curl https://example.com/"${i}" -o "${i##*/}"; \done
這只是一個示例,但它展示了 curl
與 Unix 管道和一些基本而巧妙的解析結(jié)合使用時是多么的靈活。
用于數(shù)據(jù)交換的協(xié)議在計算機發(fā)送通信的數(shù)據(jù)包中嵌入了大量元數(shù)據(jù)。HTTP 頭是數(shù)據(jù)初始部分的組件。在連接一個網(wǎng)站出現(xiàn)問題時,查看這些報文頭(尤其是響應(yīng)碼)會有所幫助:
curl --head "https://example.com"HTTP/2 200accept-ranges: bytesage: 485487cache-control: max-age=604800content-type: text/html; charset=UTF-8date: Sun, 26 Apr 2020 09:02:09 GMTetag: "3147526947"expires: Sun, 03 May 2020 09:02:09 GMTlast-modified: Thu, 17 Oct 2019 07:18:26 GMTserver: ECS (sjc/4E76)x-cache: HITcontent-length: 1256
響應(yīng) 200 通常是 HTTP 成功指示符,這是你與服務(wù)器連接時通常期望的結(jié)果。著名的 404 響應(yīng)表示找不到頁面,而 500 則表示服務(wù)器在處理請求時出現(xiàn)了錯誤。
要查看協(xié)商過程中發(fā)生了什么錯誤,添加 --show-error
選項:
$ curl --head --show-error "http://opensource.ga"
除非你可以訪問要連接的服務(wù)器,否則這些問題將很難解決,但是 curl
通常會盡力連接你指定的地址。有時在網(wǎng)絡(luò)上進行測試時,無休止的重試似乎只會浪費時間,因此你可以使用 --fail-early
選項來強制 curl
在失敗時迅速退出:
curl --fail-early "http://opensource.ga"
300 這個系列的響應(yīng)更加靈活。具體來說,301 響應(yīng)意味著一個 URL 已被永久移動到其它位置。對于網(wǎng)站管理員來說,重新定位內(nèi)容并留下“痕跡”是一種常見的方式,這樣訪問舊地址的人們?nèi)匀豢梢哉业剿DJ情況下,curl
不會進行 301 重定向,但你可以使用 --localtion
選項使其繼續(xù)進入 301 響應(yīng)指向的目標:
$ curl "https://iana.org" | grep title<title>301 Moved Permanently</title>$ curl --location "https://iana.org"<title>Internet Assigned Numbers Authority</title>
如果你想要在訪問短網(wǎng)址之前先查看它們,那么 --location
選項非常有用。短網(wǎng)址對于有字符限制的社交網(wǎng)絡(luò)(當然,如果你使用現(xiàn)代和開源的社交網(wǎng)絡(luò)的話,這可能不是問題),或者對于用戶不能復(fù)制粘貼長地址的印刷媒體來說是有用處的。但是,它們也可能存在風險,因為其目的地址本質(zhì)上是隱藏的。通過結(jié)合使用 --head
選項僅查看 HTTP 頭,--location
選項可以查看一個 URL 的最終地址,你可以查看一個短網(wǎng)址而無需加載其完整的資源:
$ curl --head --location "<https://bit.ly/2yDyS4T>"
一旦你開始考慮了將探索 web 由一條命令來完成,那么 curl
就成為一種快速有效的方式,可以從互聯(lián)網(wǎng)上獲取所需的信息,而無需麻煩圖形界面。為了幫助你適應(yīng)到工作流中,我們創(chuàng)建了一個 curl 備忘錄,它包含常見的 curl
用法和語法,包括使用它查詢 API 的概述。
到此,關(guān)于“如何使用curl從命令行訪問互聯(lián)網(wǎng)”的學習就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關(guān)知識,請繼續(xù)關(guān)注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。