自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

七個(gè)使用 wget 命令的技巧

系統(tǒng) Linux
wget 是一個(gè)下載網(wǎng)頁(yè)文件的免費(fèi)工具。它將互聯(lián)網(wǎng)上的數(shù)據(jù)保存到一個(gè)文件或展示在終端上。實(shí)際上這也是像 Firefox 或 Chromium 這樣的網(wǎng)頁(yè)瀏覽器的工作原理。

[[436165]]

用你的 Linux 終端中從互聯(lián)網(wǎng)上下載文件。

wget 是一個(gè)下載網(wǎng)頁(yè)文件的免費(fèi)工具。它將互聯(lián)網(wǎng)上的數(shù)據(jù)保存到一個(gè)文件或展示在終端上。實(shí)際上這也是像 Firefox 或 Chromium 這樣的網(wǎng)頁(yè)瀏覽器的工作原理。有一個(gè)區(qū)別是,網(wǎng)頁(yè)瀏覽器默認(rèn)將網(wǎng)頁(yè) 渲染render在圖形窗口中,并且通常需要用戶主動(dòng)來(lái)操作它們。而 wget 工具是無(wú)交互的使用方式,也就是說(shuō)你可以使用腳本或定期使用 wget 來(lái)下載文件,不論你人是否在電腦面前。

使用 wget 下載文件

你可以通過(guò)提供一個(gè)特定 URL 的鏈接,用 wget 下載一個(gè)文件。如果你提供一個(gè)默認(rèn)為 index.html 的 URL,那么就會(huì)下載該索引頁(yè)。默認(rèn)情況下,文件會(huì)被下載到你當(dāng)前的工作目錄,并保持原來(lái)的名字。

  1. $ wget http://example.com
  2. --2021-09-20 17:23:47-- http://example.com/
  3. Resolving example.com... 93.184.216.34, 2606:2800:220:1:248:1893:25c8:1946
  4. Connecting to example.com|93.184.216.34|:80... connected.
  5. HTTP request sent, awaiting response... 200 OK
  6. Length: 1256 (1.2K) [text/html]
  7. Saving to: 'index.html'

通過(guò)使用 --output-document 和 - 符號(hào),你可以指示 wget 將數(shù)據(jù)發(fā)送到 標(biāo)準(zhǔn)輸出stdout

  1. $ wget http://example.com --output-document - | head -n4
  2. <!doctype html>
  3. <html>
  4. <head>
  5. <title>Example Domain</title>

你可以使用 --output-document 選項(xiàng)(簡(jiǎn)寫為 -O)將下載文件命名為任何你想要的名稱:

  1. $ wget http://example.com --output-document foo.html

斷點(diǎn)續(xù)傳

如果你正在下載一個(gè)超大文件,你可能會(huì)遇到中斷下載的情況。使用 --continue(簡(jiǎn)寫為 -c),wget 可以確定從文件的哪個(gè)位置開(kāi)始繼續(xù)下載。也就是說(shuō),下次你在下載一個(gè) 4 GB 的 Linux 發(fā)行版 ISO 時(shí),如果出現(xiàn)了錯(cuò)誤導(dǎo)致中斷,你不必重新從頭開(kāi)始。

  1. $ wget --continue https://example.com/linux-distro.iso

下載一系列的文件

如果你要下載的不是單個(gè)大文件,而是一系列的文件,wget 也能提供很好的幫助。假如你知道要下載文件的路徑以及文件名的通用范式,你可以使用 Bash 語(yǔ)法指示一個(gè)數(shù)字范圍的起始和終點(diǎn)來(lái)表示這一系列文件名:

  1. $ wget http://example.com/file_{1..4}.webp

鏡像整個(gè)站點(diǎn)

使用 --mirror 選項(xiàng)你可以下載整個(gè)站點(diǎn),包括它的目錄結(jié)構(gòu)。這與使用選項(xiàng) --recursive --level inf --timestamping --no-remove-listing 的效果是一樣的,該選項(xiàng)表明可以進(jìn)行無(wú)限制的遞歸,得到你指定域下的所有內(nèi)容。但你也可能會(huì)得到比預(yù)期多得多的內(nèi)容,這取決于站點(diǎn)本身的老舊程度。

如果你正在使用 wget 來(lái)打包整個(gè)站點(diǎn),選項(xiàng) --no-cookies --page-requisites --convert-links 非常有用,它可以確保打包的站點(diǎn)是全新且完整的,站點(diǎn)副本或多或少是自包含的self-contained。

修改 HTML 標(biāo)頭

在計(jì)算機(jī)發(fā)送的通信報(bào)文里含有大量用于數(shù)據(jù)交換的元數(shù)據(jù)metadata。HTTP 標(biāo)頭是初始數(shù)據(jù)的組成部分。當(dāng)你瀏覽某個(gè)站點(diǎn)時(shí),你的瀏覽器會(huì)發(fā)送 HTTP 請(qǐng)求標(biāo)頭。使用 --debug 選項(xiàng)可以查看 wget 為每個(gè)請(qǐng)求發(fā)送了什么樣的標(biāo)頭信息:

  1. $ wget --debug example.com
  2. ---request begin---
  3. GET / HTTP/1.1
  4. User-Agent: Wget/1.19.5 (linux-gnu)
  5. Accept: */*
  6. Accept-Encoding: identity
  7. Host: example.com
  8. Connection: Keep-Alive
  9.  
  10. ---request end---

你可以使用 --header 選項(xiàng)修改請(qǐng)求標(biāo)頭。實(shí)際上經(jīng)常使用這種方式來(lái)模仿某特定瀏覽器,來(lái)測(cè)試或兼容某些編碼糟糕、只能與特定代理通信的站點(diǎn)。

讓請(qǐng)求被識(shí)別為來(lái)自 Windows 系統(tǒng)的 Microsoft Edge:

  1. $ wget --debug --header="User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36 Edg/91.0.864.59" http://example.com

你也可以假裝為某個(gè)移動(dòng)設(shè)備:

  1. $ wget --debug --header="User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 13_5_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.1.1 Mobile/15E148 Safari/604.1" http://example.com

查看響應(yīng)標(biāo)頭

與瀏覽器發(fā)送請(qǐng)求標(biāo)頭的方式一樣,響應(yīng)也包含有標(biāo)頭信息。你可以使用 --debug 選項(xiàng)來(lái)查看響應(yīng)中的標(biāo)頭信息:

  1. $ wget --debug example.com
  2. [...]
  3. ---response begin---
  4. HTTP/1.1 200 OK
  5. Accept-Ranges: bytes
  6. Age: 188102
  7. Cache-Control: max-age=604800
  8. Content-Type: text/html; charset=UTF-8
  9. Etag: "3147526947"
  10. Server: ECS (sab/574F)
  11. Vary: Accept-Encoding
  12. X-Cache: HIT
  13. Content-Length: 1256
  14.  
  15. ---response end---
  16. 200 OK
  17. Registered socket 3 for persistent reuse.
  18. URI content encoding = 'UTF-8'
  19. Length: 1256 (1.2K) [text/html]
  20. Saving to: 'index.html'

處理 301 響應(yīng)

200 響應(yīng)碼意味著一切都在預(yù)料之中。而 301 響應(yīng)則表示 URL 已經(jīng)被永久遷移到了另外一個(gè)地方。這是站點(diǎn)管理員的一種常用手段,內(nèi)容遷移后,為訪問(wèn)舊地址的用戶留下尋找新地址的“線索”。wget 會(huì)默認(rèn)跟隨重定向redirect,這也是大部分情況下用戶所希望的。

當(dāng)然,你可以使用 --max-redirect 選項(xiàng),用于控制 wget 默認(rèn)處理 301 響應(yīng)重定向的次數(shù)。設(shè)置為 0 意味著不會(huì)自動(dòng)重定向到新的地址:

  1. $ wget --max-redirect 0 http://iana.org
  2. --2021-09-21 11:01:35-- http://iana.org/
  3. Resolving iana.org... 192.0.43.8, 2001:500:88:200::8
  4. Connecting to iana.org|192.0.43.8|:80... connected.
  5. HTTP request sent, awaiting response... 301 Moved Permanently
  6. Location: https://www.iana.org/ [following]
  7. 0 redirections exceeded.

同時(shí),你也可以設(shè)置為其他的數(shù)值來(lái)控制 wget 能重定向多少次。

展開(kāi) URL 縮寫

使用--max-redirect 選項(xiàng)用于在實(shí)際訪問(wèn)之前查看 URL 縮寫shortened URL非常有用??s寫 URL 可用于用戶無(wú)法完整拷貝和粘貼一個(gè)長(zhǎng) URL 時(shí)的印刷媒體print media,或是具有字?jǐn)?shù)限制的社交網(wǎng)絡(luò)(在類似 Mastondon 這種現(xiàn)代開(kāi)源的社交網(wǎng)絡(luò)上這并不是一個(gè)問(wèn)題)。這種縮寫具有一定的風(fēng)險(xiǎn),因?yàn)楸举|(zhì)上這些目的地是隱藏的。組合使用 --head 選項(xiàng)和 --location 選項(xiàng)來(lái)來(lái)查看 HTTP 頭部并解開(kāi)最終的目的地,你可以在不加載整個(gè)資源的情況下查看到縮寫 URL 的完整內(nèi)容:

  1. $ wget --max-redirect 0 "https://bit.ly/2yDyS4T"
  2. --2021-09-21 11:32:04-- https://bit.ly/2yDyS4T
  3. Resolving bit.ly... 67.199.248.10, 67.199.248.11
  4. Connecting to bit.ly|67.199.248.10|:443... connected.
  5. HTTP request sent, awaiting response... 301 Moved Permanently
  6. Location: http://example.com/ [following]
  7. 0 redirections exceeded.

從 Location 開(kāi)始的倒數(shù)第二行輸出,展示了實(shí)際的目的地。

使用 wget

若你開(kāi)始考慮使用單個(gè)命令來(lái)實(shí)現(xiàn)整個(gè)網(wǎng)站訪問(wèn)的過(guò)程,wget 可以快速高效的幫你獲取互聯(lián)網(wǎng)上的信息,而不用在圖形界面上耗費(fèi)精力。為了幫你將它構(gòu)造在你平常的工作流中,我們創(chuàng)建了一個(gè) wget 常用使用方式和語(yǔ)法清單,包括使用它來(lái)查詢 API 的概述。在這里下載 Linux wget 速查表。 

 

責(zé)任編輯:龐桂玉 來(lái)源: Linux中國(guó)
相關(guān)推薦

2015-11-30 17:12:31

Git使用技巧

2023-09-07 16:28:46

JavaScrip

2021-11-17 15:28:06

LinuxLinux命令

2022-04-14 10:40:11

領(lǐng)導(dǎo)者IT團(tuán)隊(duì)遠(yuǎn)程團(tuán)隊(duì)

2021-08-17 10:08:44

HTML網(wǎng)站網(wǎng)絡(luò)

2024-06-25 15:41:41

2020-12-07 09:56:34

GitLinux版本控制系統(tǒng)

2018-05-24 08:47:15

數(shù)據(jù)存儲(chǔ)技巧

2023-05-30 09:59:38

2011-03-02 09:34:58

AppFuse

2019-09-09 10:32:51

基于意圖的網(wǎng)絡(luò)IBN網(wǎng)絡(luò)

2023-11-06 18:06:00

Docker容器

2023-12-21 18:01:58

Docker容器部署

2022-07-14 10:34:13

IT領(lǐng)導(dǎo)者CIO首席信息官

2018-04-27 09:22:21

數(shù)據(jù)存儲(chǔ)技巧

2021-06-28 11:46:31

GitLinux

2025-03-21 08:20:00

數(shù)據(jù)清洗Python編程

2016-03-04 10:18:24

xcode技巧開(kāi)發(fā)

2016-03-04 10:25:50

Xcode技巧開(kāi)發(fā)

2022-09-30 09:26:35

JavaScript技巧
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)