Wget kullanarak, gerçek HTML yerine gzip edilmiş sürümü almak için doğru komut nedir


18

Bunun hakkında konuşan bu web sitesine rastladım .

Peki, gzipli sürümü alarak tüm web sitesini indirirken, doğru komut nedir?

Bu komutu test ettim, ama wget'in gerçekten gzipli versiyonunu alıp almadığımı bilmiyorum:

wget --header="accept-encoding: gzip" -m -Dlinux.about.com -r -q -R gif,png,jpg,jpeg,GIF,PNG,JPG,JPEG,js,rss,xml,feed,.tar.gz,.zip,rar,.rar,.php,.txt -t 1 http://linux.about.com/

Bu komutu test ettiğinizi söylüyorsunuz, ancak @ EightBitTony'nin aşağıdaki cevabı, bundan daha fazla dosya için site üzerinden herhangi bir özyineleme olmadan ilk isabetin bir gzip dosyası olacağını söylüyor gibi görünüyor. Elde ettiğin sonuç bu muydu?
Caleb

linux.about.com gzip sıkıştırılmıştır ve bu komut tüm siteyi geri alır. Bu komutu başka bir web sitesinde test ettim ve tüm siteyi de geri aldım. Bu yüzden gerçekten gzipli sürümü
indirip indirmeme

Yanıtlar:


19

Eğer gzip'ed içerik talep ederseniz (doğru olan kabul-kodlama: gzip başlığını kullanarak), o zaman wget'in içeriği okuyamayacağını anlıyorum. Böylece, vurduğunuz ilk sayfa için diskte tek bir gzip dosyasıyla karşılaşacaksınız, ancak başka içerik yok.

yani gget ile sıkıştırılmış içerik istemek ve sitenin tamamını aynı anda geri almak için wget kullanamazsınız.

Bence wget bu işlevi desteklemek için izin veren bir yama var ama varsayılan dağıtım sürümünde değil.

-S bayrağını eklerseniz, web sunucusunun doğru türde içerikle yanıt verip vermediğini anlayabilirsiniz. Örneğin,

wget -S --header="accept-encoding: gzip" wordpress.com
--2011-06-17 16:06:46--  http://wordpress.com/
Resolving wordpress.com (wordpress.com)... 72.233.104.124, 74.200.247.60, 76.74.254.126
Connecting to wordpress.com (wordpress.com)|72.233.104.124|:80... connected.
HTTP request sent, awaiting response...
  HTTP/1.1 200 OK
  Server: nginx
  Date: Fri, 17 Jun 2011 15:06:47 GMT
  Content-Type: text/html; charset=UTF-8
  Connection: close
  Vary: Accept-Encoding
  Last-Modified: Fri, 17 Jun 2011 15:04:57 +0000
  Cache-Control: max-age=190, must-revalidate
  Vary: Cookie
  X-hacker: If you're reading this, you should visit automattic.com/jobs and apply to join the fun, mention this header.
  X-Pingback: http://wordpress.com/xmlrpc.php
  Link: <http://wp.me/1>; rel=shortlink
  X-nananana: Batcache
  Content-Encoding: gzip
Length: unspecified [text/html]

Kodlama içeriği açıkça gzip'i belirtir, ancak linux.about.com (şu anda) için,

wget -S --header="accept-encoding: gzip" linux.about.com
--2011-06-17 16:12:55--  http://linux.about.com/
Resolving linux.about.com (linux.about.com)... 207.241.148.80
Connecting to linux.about.com (linux.about.com)|207.241.148.80|:80... connected.
HTTP request sent, awaiting response...
  HTTP/1.1 200 OK
  Date: Fri, 17 Jun 2011 15:12:56 GMT
  Server: Apache
  Set-Cookie: TMog=B6HFCs2H20kA1I4N; domain=.about.com; path=/; expires=Sat, 22-Sep-12 14:19:35 GMT
  Set-Cookie: Mint=B6HFCs2H20kA1I4N; domain=.about.com; path=/
  Set-Cookie: zBT=1; domain=.about.com; path=/
  Vary: *
  PRAGMA: no-cache
  P3P: CP="IDC DSP COR DEVa TAIa OUR BUS UNI"
  Cache-Control: max-age=-3600
  Expires: Fri, 17 Jun 2011 14:12:56 GMT
  Connection: close
  Content-Type: text/html
Length: unspecified [text/html]

Metin / html döndürüyor.

Bazı eski tarayıcılarda hala gzip kodlu içerikle ilgili sorunlar olduğundan, birçok site bu siteyi yalnızca tarayıcı kimliğine göre etkinleştirir. Genellikle varsayılan olarak kapatırlar ve yalnızca tarayıcının onu destekleyebileceğini bildiklerinde kapatırlar ve genellikle bu listeye wget eklemezler. Bu, site tarayıcınız için böyle görünse bile wget'in asla gzip içeriği döndürmediğini anlamına gelir.


Ama bir sürü dosyam var ve tek bir gzip dosyası değil ... ya da wget versiyonum farklı mı? (Ubuntu 11.04 kullanarak)
jomnana

-S kullanırsanız, sunucudan döndürülen başlıkları görebilirsiniz ve bunu linux.about.com'a karşı yaptığınızda, içeriği gzip yerine html döndürdüğünü açıkça görebilirsiniz. wget -S --header = "kabul-kodlaması: gzip" linux.about.com İçerik Türü: metin / html
EightBitTony 17:09

Tüm tarayıcılar gzip kodlamasını desteklemediğinden (IE'nin önemli sorunları vardır), birçok web sitesi yalnızca tarayıcı başına gzip kodlamasını etkinleştirir ve bunu wget için yapma zahmetine girmez. Bu muhtemelen linux.about.com'un neden wget tarafından sorulduğunda gzip yapmadığını açıklıyor. Ancak (AFAIK) wget'in gzip edilmiş içeriği geri getirememesi ana sorununu düzeltmez.
EightBitTony

1
Sadece bunu denedim: wget çıktısı hala Content-Type: text/html; charset=UTF-8, ama var Content-Encoding: gzip. MIME türünü gzip yapmaya zorlarsa şeffaf sıkıştırma olmaz ... strace -s 128 wget ...Aslında soketten okunan / diske yazılan baytlardan bazılarını görmeye koştum . ASCII değildirler. Bence 2011'de emriniz gzip edilmiş bir versiyon almamış olsa da, 2015'te aynı emir aldı. (wget 1.15).
Peter Cordes

Ben sayfa stdout gidiyor ve daha sonra gzip ve büyük ve html ile gzip aracılığıyla boru değil zaman bozuk ve küçük olduğundan emin olmak için gunzip içine boru almak için "-O -" yapmak istiyorum ...
nroose

0

html sayfasını almak ve sıkıştırmak veya herhangi bir dosya ve sıkıştırılmış almak için basit komut.

$ wget -qO - <url> | gzip -c > file_name.gz

seçenek hakkında daha fazla bilgi için. man komutunu kullan.


2
OP, verilerin aktarımı sırasında sıkıştırılmasını istiyor (kabul-kodlama: gzip), sonra değil
xhienne
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.