wget을 사용하여 실제 HTML 대신 gzipped 버전을 얻는 올바른 명령은 무엇입니까


18

나는 이것 에 대해 이야기 하는 이 웹 사이트 를 우연히 발견 했습니다.

따라서 gzipped 버전을 가져 와서 전체 웹 사이트를 다운로드 할 때 올바른 명령은 무엇입니까?

이 명령을 테스트했지만 wget이 실제로 gzipped 버전을 얻는 지 모르겠습니다.

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/

당신은 그 명령을 테스트했다고 말하지만, 아래의 @EightBitTony의 대답은 당신이 얻을 수있는 것이 더 많은 파일을 위해 사이트를 통해 재귀없이 첫 번째 히트의 gzip 파일 일 것이라고 말합니다. 그 결과를 얻었습니까?
Caleb

linux.about.com은 gzip으로 압축되며이 명령은 전체 사이트를 반복합니다. 다른 웹 사이트 에서이 명령을 테스트했으며 전체 사이트도 반복됩니다. 그것이 실제로 gzipped 버전을 다운로드했는지 아닌지 약간 혼란스러워하는 이유
jomnana

답변:


19

gzip의 컨텐츠를 요청하면 (accept-encoding : gzip 헤더 사용) 올바른 wget이 컨텐츠를 읽을 수 없다는 것을 이해합니다. 따라서 첫 번째 방문한 페이지에 대해 디스크에 하나의 gzip으로 압축 된 파일이 만들어 지지만 다른 내용은 없습니다.

즉, wget을 사용하여 gzip으로 압축 된 컨텐츠를 요청하고 전체 사이트를 동시에 재귀 할 수는 없습니다.

wget 이이 기능을 지원할 수있는 패치가 있다고 생각하지만 기본 배포 버전에는 없습니다.

-S 플래그를 포함하면 웹 서버가 올바른 유형의 컨텐츠로 응답하는지 알 수 있습니다. 예를 들어

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]

콘텐츠 인코딩에는 gzip이 명시되어 있지만 linux.about.com (현재),

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]

text / html을 반환합니다.

일부 구형 브라우저는 여전히 gzip으로 인코딩 된 컨텐츠에 문제가 있기 때문에 많은 사이트는 브라우저 식별을 통해서만이를 활성화합니다. 그들은 종종 기본적으로 그것을 끄고 브라우저가 그것을 지원할 수 있다는 것을 알고있을 때만 그것을 끄고-일반적으로 그 목록에 wget을 포함시키지 않습니다. 즉, 사이트에서 브라우저 용으로 표시되는 경우에도 wget에서 gzip 내용을 반환하지 않을 수 있습니다.


그러나 하나의 gzipped 파일이 아닌 많은 파일이 있습니다 ... 또는 내 wget 버전이 다른가요? (Ubuntu 11.04 사용)
jomnana

-S를 사용하면 서버에서 헤더가 반환되는 것을 볼 수 있으며 linux.about.com에 대해 헤더를 사용하면 gzip 내용이 아닌 html이 반환되는 것을 명확하게 볼 수 있습니다. wget -S --header = "accept-encoding : gzip"linux.about.com 콘텐츠 유형 : text / html
EightBitTony

모든 브라우저가 gzip 인코딩을 지원하는 것은 아니기 때문에 (IE에는 큰 문제가 있음) 많은 웹 사이트는 브라우저별로 gzip 인코딩 만 활성화하며 wget을 위해 신경 쓰지 않습니다. 그것은 아마도 wget이 요청할 때 linux.about.com이 gzip을 사용하지 않는 이유를 설명합니다. 그러나 (AFAIK) wget이 gzipped 컨텐츠를 재귀 할 수 없다는 주요 문제는 해결하지 못합니다.
EightBitTony

1
방금 이것을 시도했습니다 : wget 출력은 여전히 Content-Type: text/html; charset=UTF-8있지만 또한 있습니다 Content-Encoding: gzip. MIME 유형의 모든 gzip을 강제로 사용하면 투명 압축이 아닐 것입니다 ... strace -s 128 wget ...실제로 소켓에서 읽거나 디스크에 쓴 바이트 중 일부를 보았습니다. 그들은 비 ASCII입니다. 따라서 2011 년에는 귀하의 명령이 gzipped 버전을받지 못했지만 2015 년에는 동일한 명령이 수행되었습니다. (1.15를 얻음).
Peter Cordes

"-O-"를 사용하여 페이지가 stdout으로 이동 한 다음 gunzip으로 파이프하여 gzip 및 gzip을 통해 파이프하지 않을 때 깨져서 작고 gzip을 통해 파이프 될 때 html을 확인합니다.
nroose

0

간단한 명령으로 html 페이지를 가져 와서 압축하거나 파일을 가져 와서 압축하십시오.

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

옵션에 대한 자세한 내용은. man 명령을 사용하십시오.


2
OP는 데이터가 전송 중에 압축되고 싶어 (동의 인코딩 : gzip을),하지 후
xhienne
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.