Usando wget, qual è il comando giusto per ottenere la versione gzip anziché l'HTML reale


18

Mi sono imbattuto in questo sito Web che ne parla.

Quindi, quando si scarica l'intero sito Web ottenendo la versione gzipped, qual è il comando giusto?

Ho testato questo comando, ma non so se wget sta davvero ottenendo la versione gzip:

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/

Dici di aver testato quel comando, ma la risposta di @ EightBitTony di seguito sembra dire che quello che otterresti sarebbe un file gzip del primo colpo senza alcuna ricorsione attraverso il sito per altri file. È stato questo il risultato?
Caleb,

linux.about.com è compresso con gzip e questo comando richiama l'intero sito. Ho testato questo comando su un altro sito Web e ha richiamato anche l'intero sito. Ecco perché mi sono un po 'confuso se scarica davvero la versione gzipped o no
jomnana,

Risposte:


19

Se richiedi il contenuto di gzip (usando l'intestazione accetta-codifica: gzip, che è corretta), allora ho capito che wget non può quindi leggere il contenuto. Quindi finirai con un singolo file gzip su disco, per la prima pagina che colpisci, ma nessun altro contenuto.

cioè non puoi usare wget per richiedere contenuti compressi con zip e per ricorrere allo stesso tempo all'intero sito.

Penso che ci sia una patch che consente a wget di supportare questa funzione ma non è nella versione di distribuzione predefinita.

Se si include il flag -S, è possibile sapere se il server Web risponde con il tipo di contenuto corretto. Per esempio,

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]

La codifica del contenuto indica chiaramente gzip, tuttavia per linux.about.com (attualmente),

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]

Restituisce text / html.

Poiché alcuni browser meno recenti presentano ancora problemi con il contenuto codificato gzip, molti siti lo abilitano solo in base all'identificazione del browser. Spesso lo disattivano per impostazione predefinita e lo disattivano solo quando sanno che il browser può supportarlo - e di solito non includono wget in quell'elenco. Ciò significa che potresti trovare che wget non restituisce mai contenuti gzip anche se il sito sembra farlo per il tuo browser.


Ma ho un sacco di file e non un singolo file gzip ... o la mia versione di wget è diversa? (usando Ubuntu 11.04)
jomnana,

Se usi -S puoi vedere le intestazioni restituite dal server e quando lo fai contro linux.about.com puoi vedere chiaramente che sta restituendo html, non contenuto gzip. wget -S --header = "accept-encoding: gzip" linux.about.com Content-Type: text / html
EightBitTony

Poiché non tutti i browser supportano la codifica gzip (IE ha problemi importanti), molti siti Web abilitano la codifica gzip solo per browser e non si preoccupano di farlo per wget. Questo probabilmente spiega perché linux.about.com non gzip quando richiesto da wget. Ma non risolve il problema principale che (AFAIK) wget non può ricorrere al contenuto compresso con gzip.
EightBitTony,

1
Ho appena provato questo: l'output di wget è ancora Content-Type: text/html; charset=UTF-8, ma c'è anche Content-Encoding: gzip. Non sarebbe una compressione trasparente se usandola forzassi il tipo MIME di tutto su gzip ... Corsi strace -s 128 wget ...per vedere effettivamente alcuni dei byte letti dal socket / scritti sul disco. Sono non ASCII. Quindi, mentre penso che nel 2011 il tuo comando non abbia ricevuto una versione gzip, nel 2015 lo stesso ha fatto. (wget 1.15).
Peter Cordes,

Mi piace fare "-O -" per fare in modo che la pagina vada a stdout e poi la installi in gunzip per assicurarmi che sia confusa e piccola quando non viene convogliata tramite gzip e grande e html quando convogliata attraverso gzip ...
nroose

0

comando semplice per ottenere la pagina HTML e comprimerlo o ottenere qualsiasi file e compresso.

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

per ulteriori informazioni sull'opzione. usa il comando man.


2
OP vuole che i dati vengano compressi durante il loro trasferimento (accetta-codifica: gzip), non dopo
xhienne
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.