成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

使用curl從命令行訪問互聯網

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

[[349585]]

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

curl 通常被視作一款非交互式 Web 瀏覽器,這意味著它能夠從互聯網上獲取信息,并在你的終端中顯示,或將其保存到文件中。從表面看,這是 Web 瀏覽器,類似 Firefox 或 Chromium 所做的工作,只是它們默認情況下會渲染信息,而 curl 會下載并顯示原始信息。實際上,curl 命令可以做更多的事情,并且能夠使用多種協議與服務器進行雙向傳輸數據,這些協議包括 HTTP、FTP、SFTP、IMAP、POP3、LDAP、SMB、SMTP 等。對于普通終端用戶來說,這是一個有用的工具;而對于系統管理員,這非常便捷;對于微服務和云開發人員來說,它是一個質量保證工具。

curl 被設計為在沒有用戶交互的情況下工作,因此與 Firefox 不同,你必須從頭到尾考慮與在線數據的交互。例如,如果想要在 Firefox 中查看網頁,你需要啟動 Firefox 窗口。打開 Firefox 后,在地址欄或搜索引擎中輸入要訪問的網站。然后,導航到網站,然后單擊要查看的頁面。

對于 curl 來說也是如此,不同之處在于你需要一次執行所有操作:在啟動 curl 的同時提供需要訪問的互聯網地址,并告訴它是否要將數據保存在終端或文件中。當你必須與需要身份驗證的網站或 API 進行交互時,會變得有點復雜,但是一旦你學習了 curl 命令語法,它就會變得自然而然。為了幫助你掌握它,我們在一個方便的備忘錄中收集了相關的語法信息。

使用 curl 下載文件

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

  1. $ curl "http://example.com" | tail -n 4
  2. <h1>Example Domain</h1>
  3. <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>
  4. <p><a href="https://www.iana.org/domains/example">More information...</a></p>
  5. </div></body></html>

由于某些 URL 包含特殊字符,shell 通常會將其解釋,因此最安全的做法用引號將 URL 包起來。

某些文件無法很好的在終端中轉換顯示。你可以使用 --remote-name 選項使文件根據服務器上的命名進行保存:

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

或者,你可以使用 --output 選項來命名你想要下載的內容:

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

使用 curl 列出帶有遠程目錄的內容

因為 curl 不是交互式的,所以很難瀏覽頁面上的可下載元素。如果你要連接的遠程服務器允許,可以使用 curl 來列出目錄的內容:

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

繼續中斷下載

如果你正在下載一個非常大的文件,你可能會發現有時候必須中斷下載。curl 非常智能,可以確定下載從何處中斷并繼續下載。這意味著,下一次當你下載一個 4GB 的 Linux 發行版的 ISO 出現問題時,就不必重新開始了。--continue-at 的語法有點不尋常:如果你知道下載中斷時的字節數,你可以提供給 curl;否則,你可以使用單獨的一個破折號(-)指示 curl 自動檢測:

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

下載文件序列

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

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

如果你需要使用其它變量來表示另一個序列,按照每個變量在命令中出現的順序表示它們。例如,在這個命令中,#1 指目錄 images_000 到 images_009,而 #2 指目錄 file_1.webp 至 file_4.webp

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

從站點下載所有 PNG 文件

你也可以僅使用 curl 和 grep 進行一些基本的 Web 抓取操作,以找到想要下載的內容。例如,假設你需要下載與正在歸檔網頁關聯的所有圖像,首先,下載引用了圖像的頁面。將頁面內通過管道傳輸到 grep,搜索所需的圖片類型(在此示例中為 PNG)。最后,創建一個 while 循環來構造下載 URL,并將文件保存到你的計算機:

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

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

獲取 HTML 頭

用于數據交換的協議在計算機發送通信的數據包中嵌入了大量元數據。HTTP 頭是數據初始部分的組件。在連接一個網站出現問題時,查看這些報文頭(尤其是響應碼)會有所幫助:

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

快速失敗

響應 200 通常是 HTTP 成功指示符,這是你與服務器連接時通常期望的結果。著名的 404 響應表示找不到頁面,而 500 則表示服務器在處理請求時出現了錯誤。

要查看協商過程中發生了什么錯誤,添加 --show-error 選項:

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

除非你可以訪問要連接的服務器,否則這些問題將很難解決,但是 curl 通常會盡力連接你指定的地址。有時在網絡上進行測試時,無休止的重試似乎只會浪費時間,因此你可以使用 --fail-early 選項來強制 curl 在失敗時迅速退出:

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

由 3xx 響應指定的重定向查詢

300 這個系列的響應更加靈活。具體來說,301 響應意味著一個 URL 已被永久移動到其它位置。對于網站管理員來說,重新定位內容并留下“痕跡”是一種常見的方式,這樣訪問舊地址的人們仍然可以找到它。默認情況下,curl 不會進行 301 重定向,但你可以使用 --localtion 選項使其繼續進入 301 響應指向的目標:

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

展開短網址

如果你想要在訪問短網址之前先查看它們,那么 --location 選項非常有用。短網址對于有字符限制的社交網絡(當然,如果你使用現代和開源的社交網絡的話,這可能不是問題),或者對于用戶不能復制粘貼長地址的印刷媒體來說是有用處的。但是,它們也可能存在風險,因為其目的地址本質上是隱藏的。通過結合使用 --head 選項僅查看 HTTP 頭,--location 選項可以查看一個 URL 的最終地址,你可以查看一個短網址而無需加載其完整的資源:

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

下載我們的 curl 備忘錄

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

 

責任編輯:龐桂玉 來源: Linux中國
相關推薦

2012-02-08 16:37:36

ibmdw

2023-08-01 13:31:18

模型Alpacaicuna

2020-12-06 08:00:46

scanimage命令行Linux

2018-06-19 16:05:27

LinuxStratis存儲

2021-09-18 09:19:21

Linux

2016-12-15 08:30:02

Linux命令

2014-04-10 10:10:16

KVMDebianUbuntu

2021-09-30 07:03:12

gRPC服務Grpcurl

2015-06-24 15:35:54

2019-07-15 05:50:19

Linux命令行VirtualBox版

2022-06-30 12:19:22

Linux

2019-08-27 08:00:10

OpenStack命令虛擬機

2014-06-06 10:00:56

命令行監控Nginx Web服務

2019-01-22 13:46:01

LinuxUnix系統命令行

2014-10-22 12:03:14

Linux嗅探HTTP

2015-05-28 16:11:07

互聯網+

2014-01-15 14:35:35

云計算

2015-10-08 15:20:34

互聯網物聯網

2015-09-22 09:17:33

互聯網發展史

2015-10-30 17:50:18

互聯網金融
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品久久久久久久7电影 | 日产久久 | 亚洲影视在线 | 精品成人av| 中文字幕高清 | 伊人网站视频 | 不卡的av电影 | 欧美一区二区三区在线 | 五月婷婷在线视频 | 天堂成人国产精品一区 | 国产精品国产馆在线真实露脸 | 久久国产成人 | 一区二区三区欧美在线观看 | 一级片网站视频 | 综合国产 | 国产成人免费视频网站高清观看视频 | 黄视频免费在线 | 精品国产一区二区三区久久久蜜月 | 中文字幕一区二区三区精彩视频 | 久久三区 | 国产欧美精品一区 | 欧美不卡| 欧美日韩中文国产一区发布 | 国产精品av久久久久久久久久 | 91视频进入 | 毛片一级电影 | 亚洲一区二区精品视频在线观看 | 欧美成人精品一区二区男人看 | 亚洲播放| 精品一区二区三区四区五区 | 免费一区二区三区 | 亚洲 中文 欧美 日韩 在线观看 | 国产九九精品 | 欧美精品一二三 | 中文字幕久久久 | 国产精品美女久久久久久免费 | 伊人狠狠操 | 久热免费在线 | 亚洲国产aⅴ成人精品无吗 欧美激情欧美激情在线五月 | 亚洲第一福利视频 | 九九久久免费视频 |