日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

使用 curl 從命令行訪問(wèn)互聯(lián)網(wǎng)

 

要在不使用圖形界面的情況下從互聯(lián)網(wǎng)上獲取所需的信息,curl 是一種快速有效的方法。

• 來(lái)源:linux.cn • 作者:Seth Kenlon • 譯者:MjSeven •

(本文字?jǐn)?shù):4904,閱讀時(shí)長(zhǎng)大約:6 分鐘)

下載我們整理的 curl 備忘錄。要在不使用圖形界面的情況下從互聯(lián)網(wǎng)上獲取所需的信息,curl 是一種快速有效的方法。

curl 通常被視作一款非交互式 Web 瀏覽器,這意味著它能夠從互聯(lián)網(wǎng)上獲取信息,并在你的終端中顯示,或?qū)⑵浔4娴轿募小谋砻婵矗@是 Web 瀏覽器,類似 Firefox 或 Chromium 所做的工作,只是它們默認(rèn)情況下會(huì)渲染信息,而 curl 會(huì)下載并顯示原始信息。實(shí)際上,curl 命令可以做更多的事情,并且能夠使用多種協(xié)議與服務(wù)器進(jìn)行雙向傳輸數(shù)據(jù),這些協(xié)議包括 HTTP、FTP、SFTP、IMAP、POP3、LDAP、SMB、SMTP 等。對(duì)于普通終端用戶來(lái)說(shuō),這是一個(gè)有用的工具;而對(duì)于系統(tǒng)管理員,這非常便捷;對(duì)于微服務(wù)和云開(kāi)發(fā)人員來(lái)說(shuō),它是一個(gè)質(zhì)量保證工具。

curl 被設(shè)計(jì)為在沒(méi)有用戶交互的情況下工作,因此與 Firefox 不同,你必須從頭到尾考慮與在線數(shù)據(jù)的交互。例如,如果想要在 Firefox 中查看網(wǎng)頁(yè),你需要啟動(dòng) Firefox 窗口。打開(kāi) Firefox 后,在地址欄或搜索引擎中輸入要訪問(wèn)的網(wǎng)站。然后,導(dǎo)航到網(wǎng)站,然后單擊要查看的頁(yè)面。

對(duì)于 curl 來(lái)說(shuō)也是如此,不同之處在于你需要一次執(zhí)行所有操作:在啟動(dòng) curl 的同時(shí)提供需要訪問(wèn)的互聯(lián)網(wǎng)地址,并告訴它是否要將數(shù)據(jù)保存在終端或文件中。當(dāng)你必須與需要身份驗(yàn)證的網(wǎng)站或 API 進(jìn)行交互時(shí),會(huì)變得有點(diǎn)復(fù)雜,但是一旦你學(xué)習(xí)了 curl 命令語(yǔ)法,它就會(huì)變得自然而然。為了幫助你掌握它,我們?cè)谝粋€(gè)方便的 備忘錄 中收集了相關(guān)的語(yǔ)法信息。

使用 curl 下載文件

你可以通過(guò)提供指向特定 URL 的鏈接來(lái)使用 curl 命令下載文件。如果你提供的 URL 默認(rèn)為 index.html,那么將下載此頁(yè)面,并將下載的文件顯示在終端屏幕上。你可以將數(shù)據(jù)通過(guò)管道傳遞到 less、tail 或任何其它命令:

$ curl "http://example.com" | tail -n 4
    <h1>Example Domain</h1>
    <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 通常會(huì)將其解釋,因此最安全的做法用引號(hào)將 URL 包起來(lái)。

某些文件無(wú)法很好的在終端中轉(zhuǎn)換顯示。你可以使用 --remote-name 選項(xiàng)使文件根據(jù)服務(wù)器上的命名進(jìn)行保存:

$ curl --remote-name "https://example.com/linux-distro.iso"
$ ls
linux-distro.iso

或者,你可以使用 --output 選項(xiàng)來(lái)命名你想要下載的內(nèi)容:

curl "http://example.com/foo.html" --output bar.html

使用 curl 列出帶有遠(yuǎn)程目錄的內(nèi)容

因?yàn)?curl 不是交互式的,所以很難瀏覽頁(yè)面上的可下載元素。如果你要連接的遠(yuǎn)程服務(wù)器允許,可以使用 curl 來(lái)列出目錄的內(nèi)容:

$ curl --list-only "https://example.com/foo/"

繼續(xù)中斷下載

如果你正在下載一個(gè)非常大的文件,你可能會(huì)發(fā)現(xiàn)有時(shí)候必須中斷下載。curl 非常智能,可以確定下載從何處中斷并繼續(xù)下載。這意味著,下一次當(dāng)你下載一個(gè) 4GB 的 Linux 發(fā)行版的 ISO 出現(xiàn)問(wèn)題時(shí),就不必重新開(kāi)始了。--continue-at 的語(yǔ)法有點(diǎn)不尋常:如果你知道下載中斷時(shí)的字節(jié)數(shù),你可以提供給 curl;否則,你可以使用單獨(dú)的一個(gè)破折號(hào)(-)指示 curl 自動(dòng)檢測(cè):

$ curl --remote-name --continue-at - "https://example.com/linux-distro.iso"

下載文件序列

如果你需要下載多個(gè)文件而不是一個(gè)大文件,那么 curl 可以幫助你解決這個(gè)問(wèn)題。假設(shè)你知道要下載的文件的位置和文件名模式,則可以使用 curl 的序列標(biāo)記:中括號(hào)里是整數(shù)范圍的起點(diǎn)和終點(diǎn)。對(duì)于輸出文件名,使用 #1 表示第一個(gè)變量:

$ curl "https://example.com/file_[1-4].webp" --output "file_#1.webp"

如果你需要使用其它變量來(lái)表示另一個(gè)序列,按照每個(gè)變量在命令中出現(xiàn)的順序表示它們。例如,在這個(gè)命令中,#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"

從站點(diǎn)下載所有 PNG 文件

你也可以僅使用 curl 和 grep 進(jìn)行一些基本的 Web 抓取操作,以找到想要下載的內(nèi)容。例如,假設(shè)你需要下載與正在歸檔網(wǎng)頁(yè)關(guān)聯(lián)的所有圖像,首先,下載引用了圖像的頁(yè)面。將頁(yè)面內(nèi)通過(guò)管道傳輸?shù)?grep,搜索所需的圖片類型(在此示例中為 PNG)。最后,創(chuàng)建一個(gè) while 循環(huán)來(lái)構(gòu)造下載 URL,并將文件保存到你的計(jì)算機(jī):

$ curl https://example.com |
grep --only-matching 'src="[^"]*.[png]"' |
cut -d" -f2 |
while read i; do 
curl https://example.com/"${i}" -o "${i##*/}"; 
done

這只是一個(gè)示例,但它展示了 curl 與 Unix 管道和一些基本而巧妙的解析結(jié)合使用時(shí)是多么的靈活。

獲取 HTML 頭

用于數(shù)據(jù)交換的協(xié)議在計(jì)算機(jī)發(fā)送通信的數(shù)據(jù)包中嵌入了大量元數(shù)據(jù)。HTTP 頭是數(shù)據(jù)初始部分的組件。在連接一個(gè)網(wǎng)站出現(xiàn)問(wèn)題時(shí),查看這些報(bào)文頭(尤其是響應(yīng)碼)會(huì)有所幫助:

curl --head "https://example.com"
HTTP/2 200
accept-ranges: bytes
age: 485487
cache-control: max-age=604800
content-type: text/html; charset=UTF-8
date: Sun, 26 Apr 2020 09:02:09 GMT
etag: "3147526947"
expires: Sun, 03 May 2020 09:02:09 GMT
last-modified: Thu, 17 Oct 2019 07:18:26 GMT
server: ECS (sjc/4E76)
x-cache: HIT
content-length: 1256

快速失敗

響應(yīng) 200 通常是 HTTP 成功指示符,這是你與服務(wù)器連接時(shí)通常期望的結(jié)果。著名的 404 響應(yīng)表示找不到頁(yè)面,而 500 則表示服務(wù)器在處理請(qǐng)求時(shí)出現(xiàn)了錯(cuò)誤。

要查看協(xié)商過(guò)程中發(fā)生了什么錯(cuò)誤,添加 --show-error 選項(xiàng):

$ curl --head --show-error "http://opensource.ga"

除非你可以訪問(wèn)要連接的服務(wù)器,否則這些問(wèn)題將很難解決,但是 curl 通常會(huì)盡力連接你指定的地址。有時(shí)在網(wǎng)絡(luò)上進(jìn)行測(cè)試時(shí),無(wú)休止的重試似乎只會(huì)浪費(fèi)時(shí)間,因此你可以使用 --fail-early 選項(xiàng)來(lái)強(qiáng)制 curl 在失敗時(shí)迅速退出:

curl --fail-early "http://opensource.ga"

由 3xx 響應(yīng)指定的重定向查詢

300 這個(gè)系列的響應(yīng)更加靈活。具體來(lái)說(shuō),301 響應(yīng)意味著一個(gè) URL 已被永久移動(dòng)到其它位置。對(duì)于網(wǎng)站管理員來(lái)說(shuō),重新定位內(nèi)容并留下“痕跡”是一種常見(jiàn)的方式,這樣訪問(wèn)舊地址的人們?nèi)匀豢梢哉业剿DJ(rèn)情況下,curl 不會(huì)進(jìn)行 301 重定向,但你可以使用 --localtion 選項(xiàng)使其繼續(xù)進(jìn)入 301 響應(yīng)指向的目標(biāo):

$ curl "https://iana.org" | grep title
<title>301 Moved Permanently</title>
$ curl --location "https://iana.org"
<title>Internet Assigned Numbers Authority</title>

展開(kāi)短網(wǎng)址

如果你想要在訪問(wèn)短網(wǎng)址之前先查看它們,那么 --location 選項(xiàng)非常有用。短網(wǎng)址對(duì)于有字符限制的社交網(wǎng)絡(luò)(當(dāng)然,如果你使用 現(xiàn)代和開(kāi)源的社交網(wǎng)絡(luò) 的話,這可能不是問(wèn)題),或者對(duì)于用戶不能復(fù)制粘貼長(zhǎng)地址的印刷媒體來(lái)說(shuō)是有用處的。但是,它們也可能存在風(fēng)險(xiǎn),因?yàn)槠淠康牡刂繁举|(zhì)上是隱藏的。通過(guò)結(jié)合使用 --head 選項(xiàng)僅查看 HTTP 頭,--location 選項(xiàng)可以查看一個(gè) URL 的最終地址,你可以查看一個(gè)短網(wǎng)址而無(wú)需加載其完整的資源:

$ curl --head --location "<https://bit.ly/2yDyS4T>"

下載我們的 curl 備忘錄

一旦你開(kāi)始考慮了將探索 web 由一條命令來(lái)完成,那么 curl 就成為一種快速有效的方式,可以從互聯(lián)網(wǎng)上獲取所需的信息,而無(wú)需麻煩圖形界面。為了幫助你適應(yīng)到工作流中,我們創(chuàng)建了一個(gè) curl 備忘錄 ,它包含常見(jiàn)的 curl 用法和語(yǔ)法,包括使用它查詢 API 的概述。


via: opensource.com

作者: Seth Kenlon 選題: lujun9972 譯者: MjSeven 校對(duì): wxy

本文由 LCTT 原創(chuàng)編譯, Linux中國(guó) 榮譽(yù)推出

分享到:
標(biāo)簽:命令行
用戶無(wú)頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過(guò)答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫(kù),初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定