10 wget Command Examples เพื่อช่วยคุณแก้ไขปัญหา – wget Test

หนึ่งในยูทิลิตี้ที่ใช้บ่อยโดยผู้ดูแลระบบคือ wget จะมีประโยชน์มากในระหว่างการแก้ไขปัญหาเกี่ยวกับเว็บ

คำสั่ง wget คืออะไร?

คำสั่ง wget เป็นยูทิลิตีบรรทัดคำสั่ง Unix/Linux ยอดนิยมสำหรับการดึงเนื้อหาจากเว็บ ใช้งานได้ฟรีและให้วิธีการดาวน์โหลดไฟล์จากเว็บแบบไม่โต้ตอบ คำสั่ง wget รองรับโปรโตคอล HTTPS, HTTP และ FTP แบบสำเร็จรูป นอกจากนี้ คุณยังสามารถใช้พร็อกซี HTTP กับมันได้

wget ช่วยคุณแก้ปัญหาอย่างไร?

มีหลายวิธี

ในฐานะผู้ดูแลระบบ ส่วนใหญ่แล้วคุณจะทำงานบนเทอร์มินัล และเมื่อแก้ไขปัญหาเกี่ยวกับเว็บแอปพลิเคชัน คุณอาจไม่ต้องการตรวจสอบทั้งหน้าแต่ต้องการตรวจสอบการเชื่อมต่อเท่านั้น หรือคุณต้องการตรวจสอบเว็บไซต์อินทราเน็ต หรือคุณต้องการดาวน์โหลดบางหน้าเพื่อยืนยันเนื้อหา

wget เป็นแบบไม่มีการโต้ตอบ ซึ่งหมายความว่าคุณสามารถเรียกใช้ในพื้นหลังได้แม้ในขณะที่คุณออกจากระบบ มีหลายกรณีที่คุณจำเป็นต้องยกเลิกการเชื่อมต่อจากระบบ แม้ว่าจะทำการดึงไฟล์จากเว็บก็ตาม ในพื้นหลัง wget จะทำงานและทำงานที่ได้รับมอบหมายให้เสร็จสิ้น

นอกจากนี้ยังสามารถใช้เพื่อรับเว็บไซต์ทั้งหมดบนเครื่องท้องถิ่นของคุณ สามารถติดตามลิงก์ในหน้า XHTML และ HTML เพื่อสร้างเวอร์ชันท้องถิ่น ในการดำเนินการดังกล่าว จะต้องดาวน์โหลดหน้าซ้ำ สิ่งนี้มีประโยชน์มากเพราะคุณสามารถใช้เพื่อดาวน์โหลดหน้าหรือเว็บไซต์ที่สำคัญสำหรับการดูแบบออฟไลน์

เรามาดูพวกเขาในการดำเนินการ ไวยากรณ์ของ wget มีดังต่อไปนี้

wget [option] [URL]

ดาวน์โหลดหน้าเว็บ

มาลองโหลดเพจกัน เช่น github.com

wget github.com

หากการเชื่อมต่อดี ก็จะดาวน์โหลดหน้าแรกและแสดงผลลัพธ์ดังนี้

[email protected]:~# wget github.com
URL transformed to HTTPS due to an HSTS policy
--2020-02-23 10:45:52--  https://github.com/
Resolving github.com (github.com)... 140.82.118.3
Connecting to github.com (github.com)|140.82.118.3|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Saving to: ‘index.html’

index.html                                       [ <=>                                                                                        ] 131.96K  --.-KB/s    in 0.04s   

2020-02-23 10:45:52 (2.89 MB/s) - ‘index.html’ saved [135126]

[email protected]:~#

ดาวน์โหลดไฟล์หลายไฟล์

สะดวกเมื่อคุณต้องดาวน์โหลดไฟล์หลายไฟล์พร้อมกัน สิ่งนี้สามารถให้แนวคิดเกี่ยวกับการดาวน์โหลดไฟล์อัตโนมัติผ่านสคริปต์บางตัว

ลองดาวน์โหลดไฟล์ Python 3.8.1 และ 3.5.1 กัน

wget https://www.python.org/ftp/python/3.8.1/Python-3.8.1.tgz https://www.python.org/ftp/python/3.5.1/Python-3.5.1.tgz

อย่างที่คุณเดาได้ ไวยากรณ์จะเป็นดังนี้

wget URL1 URL2 URL3

คุณเพียงแค่ต้องแน่ใจว่ามีช่องว่างระหว่าง URL

จำกัดความเร็วในการดาวน์โหลด

มันจะมีประโยชน์เมื่อคุณต้องการตรวจสอบว่าไฟล์ของคุณใช้เวลาในการดาวน์โหลดที่แบนด์วิดท์ต่างกันนานแค่ไหน

  วิธีควบคุมบ้านอัจฉริยะทั้งหมดของคุณผ่านแอพเดียว

การใช้ตัวเลือก –limit-rate คุณสามารถจำกัดความเร็วในการดาวน์โหลด

นี่คือผลลัพธ์ของการดาวน์โหลดไฟล์ Nodejs

[email protected]:~# wget https://nodejs.org/dist/v12.16.1/node-v12.16.1-linux-x64.tar.xz
--2020-02-23 10:59:58--  https://nodejs.org/dist/v12.16.1/node-v12.16.1-linux-x64.tar.xz
Resolving nodejs.org (nodejs.org)... 104.20.23.46, 104.20.22.46, 2606:4700:10::6814:162e, ...
Connecting to nodejs.org (nodejs.org)|104.20.23.46|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 14591852 (14M) [application/x-xz]
Saving to: ‘node-v12.16.1-linux-x64.tar.xz’

node-v12.16.1-linux-x64.tar.xz               100%[===========================================================================================>]  13.92M  --.-KB/s    in 0.05s   

2020-02-23 10:59:58 (272 MB/s) - ‘node-v12.16.1-linux-x64.tar.xz’ saved [14591852/14591852]

ดาวน์โหลดไฟล์ 13.92 MB ใช้เวลา 0.05 วินาที ทีนี้ลองจำกัดความเร็วไว้ที่ 500K

[email protected]:~# wget --limit-rate=500k https://nodejs.org/dist/v12.16.1/node-v12.16.1-linux-x64.tar.xz
--2020-02-23 11:00:18--  https://nodejs.org/dist/v12.16.1/node-v12.16.1-linux-x64.tar.xz
Resolving nodejs.org (nodejs.org)... 104.20.23.46, 104.20.22.46, 2606:4700:10::6814:162e, ...
Connecting to nodejs.org (nodejs.org)|104.20.23.46|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 14591852 (14M) [application/x-xz]
Saving to: ‘node-v12.16.1-linux-x64.tar.xz.1’

node-v12.16.1-linux-x64.tar.xz.1             100%[===========================================================================================>]  13.92M   501KB/s    in 28s     

2020-02-23 11:00:46 (500 KB/s) - ‘node-v12.16.1-linux-x64.tar.xz.1’ saved [14591852/14591852]

การลดแบนด์วิดท์ใช้เวลาในการดาวน์โหลดนานขึ้น – 28 วินาที ลองนึกภาพ ผู้ใช้ของคุณบ่นเกี่ยวกับการดาวน์โหลดช้า และคุณรู้ว่าแบนด์วิดท์เครือข่ายของพวกเขาต่ำ คุณสามารถลองใช้ –limit-rate เพื่อจำลองปัญหาได้อย่างรวดเร็ว

ดาวน์โหลดในพื้นหลัง

การดาวน์โหลดไฟล์ขนาดใหญ่อาจต้องใช้เวลาหรือตามตัวอย่างด้านบนซึ่งคุณต้องการกำหนดขีดจำกัดอัตราด้วยเช่นกัน นี่เป็นสิ่งที่คาดหวัง แต่ถ้าคุณไม่ต้องการจ้องที่เทอร์มินัลของคุณล่ะ

คุณสามารถใช้อาร์กิวเมนต์ -b เพื่อเริ่ม wget ในพื้นหลังได้

[email protected]:~# wget -b https://slack.com
Continuing in background, pid 25430.
Output will be written to ‘wget-log.1’.
[email protected]:~#

ละเว้นข้อผิดพลาดของใบรับรอง

สิ่งนี้มีประโยชน์เมื่อคุณต้องการตรวจสอบเว็บแอปพลิเคชันอินทราเน็ตที่ไม่มีใบรับรองที่ถูกต้อง โดยค่าเริ่มต้น wget จะแสดงข้อผิดพลาดเมื่อใบรับรองไม่ถูกต้อง

[email protected]:~# wget https://expired.badssl.com/
--2020-02-23 11:24:59--  https://expired.badssl.com/
Resolving expired.badssl.com (expired.badssl.com)... 104.154.89.105
Connecting to expired.badssl.com (expired.badssl.com)|104.154.89.105|:443... connected.
ERROR: cannot verify expired.badssl.com's certificate, issued by ‘CN=COMODO RSA Domain Validation Secure Server CA,O=COMODO CA Limited,L=Salford,ST=Greater Manchester,C=GB’:
  Issued certificate has expired.
To connect to expired.badssl.com insecurely, use `--no-check-certificate'.

ตัวอย่างข้างต้นใช้สำหรับ URL ที่ใบรับรองหมดอายุ ดังที่คุณเห็นได้แนะนำให้ใช้ –no-check-certificate ซึ่งจะละเว้นการตรวจสอบใบรับรองใด ๆ

[email protected]:~# wget https://untrusted-root.badssl.com/ --no-check-certificate
--2020-02-23 11:33:45--  https://untrusted-root.badssl.com/
Resolving untrusted-root.badssl.com (untrusted-root.badssl.com)... 104.154.89.105
Connecting to untrusted-root.badssl.com (untrusted-root.badssl.com)|104.154.89.105|:443... connected.
WARNING: cannot verify untrusted-root.badssl.com's certificate, issued by ‘CN=BadSSL Untrusted Root Certificate Authority,O=BadSSL,L=San Francisco,ST=California,C=US’:
  Self-signed certificate encountered.
HTTP request sent, awaiting response... 200 OK
Length: 600 [text/html]
Saving to: ‘index.html.6’

index.html.6                                 100%[===========================================================================================>]     600  --.-KB/s    in 0s      

2020-02-23 11:33:45 (122 MB/s) - ‘index.html.6’ saved [600/600]

[email protected]:~#

เจ๋งใช่มั้ย

  วิธีสร้างขอบหน้าใน Microsoft Word

ดูส่วนหัวการตอบสนอง HTTP ของไซต์ที่กำหนดบนเทอร์มินัล

การใช้ -S จะพิมพ์ส่วนหัวดังที่คุณเห็นด้านล่างสำหรับ Coursera

[email protected]:~# wget https://www.coursera.org -S
--2020-02-23 11:47:01--  https://www.coursera.org/
Resolving www.coursera.org (www.coursera.org)... 13.224.241.48, 13.224.241.124, 13.224.241.82, ...
Connecting to www.coursera.org (www.coursera.org)|13.224.241.48|:443... connected.
HTTP request sent, awaiting response... 
  HTTP/1.1 200 OK
  Content-Type: text/html
  Content-Length: 511551
  Connection: keep-alive
  Cache-Control: private, no-cache, no-store, must-revalidate, max-age=0
  Date: Sun, 23 Feb 2020 11:47:01 GMT
  etag: W/"7156d-WcZHnHFl4b4aDOL4ZSrXP0iBX3o"
  Server: envoy
  Set-Cookie: CSRF3-Token=1583322421.s1b4QL6OXSUGHnRI; Max-Age=864000; Expires=Wed, 04 Mar 2020 11:47:02 GMT; Path=/; Domain=.coursera.org
  Set-Cookie: __204u=9205355775-1582458421174; Max-Age=31536000; Expires=Mon, 22 Feb 2021 11:47:02 GMT; Path=/; Domain=.coursera.org
  Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
  X-Content-Type-Options: nosniff
  x-coursera-render-mode: html
  x-coursera-render-version: v2
  X-Coursera-Request-Id: NCnPPlYyEeqfcxIHPk5Gqw
  X-Coursera-Trace-Id-Hex: a5ef7028d77ae8f8
  x-envoy-upstream-service-time: 1090
  X-Frame-Options: SAMEORIGIN
  x-powered-by: Express
  X-XSS-Protection: 1; mode=block
  X-Cache: Miss from cloudfront
  Via: 1.1 884d101a3faeefd4fb32a5d2a8a076b7.cloudfront.net (CloudFront)
  X-Amz-Cf-Pop: LHR62-C3
  X-Amz-Cf-Id: vqvX6ZUQgtZAde62t7qjafIAqHXQ8BLAv8UhkPHwyTMpvH617yeIbQ==
Length: 511551 (500K) [text/html]

จัดการ User-Agent

อาจมีสถานการณ์ที่คุณต้องการเชื่อมต่อไซต์โดยใช้ user-agent แบบกำหนดเอง หรือ user-agent ของเบราว์เซอร์เฉพาะ สามารถทำได้โดยการระบุ –user-agent ตัวอย่างด้านล่างสำหรับตัวแทนผู้ใช้เป็น MyCustomUserAgent

[email protected]:~# wget https://gf.dev --user-agent="MyCustomUserAgent"

เมื่อแอปพลิเคชันยังอยู่ในระหว่างการพัฒนา คุณอาจไม่มี URL ที่เหมาะสมในการทดสอบ หรือคุณอาจต้องการทดสอบอินสแตนซ์ HTTP แต่ละรายการโดยใช้ IP แต่คุณต้องระบุส่วนหัวของโฮสต์เพื่อให้แอปพลิเคชันทำงานได้อย่างถูกต้อง ในสถานการณ์นี้ –header จะมีประโยชน์

  วิธีอัปเดตเกม Nintendo Switch

ลองมาดูตัวอย่างการทดสอบ http://10.10.10.1 กับส่วนหัวของโฮสต์เป็น application.com

wget --header="Host: application.com" http://10.10.10.1

ไม่ใช่แค่โฮสต์ แต่คุณสามารถใส่ส่วนหัวใดก็ได้ตามต้องการ

เชื่อมต่อโดยใช้ Proxy

หากคุณกำลังทำงานในสภาพแวดล้อม DMZ คุณอาจไม่สามารถเข้าถึงอินเทอร์เน็ตไซต์ได้ แต่คุณสามารถใช้พรอกซีในการเชื่อมต่อได้

wget -e use_proxy=yes http_proxy=$PROXYHOST:PORT http://externalsite.com

อย่าลืมอัปเดตตัวแปร $PROXYHOST:PORT ด้วยตัวแปรจริง

เชื่อมต่อโดยใช้โปรโตคอล TLS เฉพาะ

โดยปกติ ฉันขอแนะนำให้ใช้ OpenSSL เพื่อทดสอบโปรโตคอล TLS แต่คุณสามารถใช้ wget ได้เช่นกัน

wget –secure-protocol=TLSv1_2 https://example.com

ด้านบนจะบังคับให้ wget เชื่อมต่อผ่าน TLS 1.2

บทสรุป

การรู้คำสั่งที่จำเป็นสามารถช่วยคุณได้ในที่ทำงาน ฉันหวังว่าข้อมูลข้างต้นจะช่วยให้คุณทราบว่าคุณสามารถทำอะไรกับ wget ได้บ้าง

เรื่องล่าสุด

x