gzip을 통해서만 응답하는 사이트를 미러링하려면 wget을 사용하세요.

gzip을 통해서만 응답하는 사이트를 미러링하려면 wget을 사용하세요.

사이트를 미러링하려고 하는데 서버가 gzip으로 압축된 페이지에만 응답하므로 wget이 반복되지 않습니다. 검색해 보니 wget에 gzip 지원을 추가하는 패치에 대한 참조가 있지만 오래된 것 같습니다. 이를 수행할 수 있는 방법이 있습니까? 그렇지 않다면 nginx를 통한 역방향 프록시를 고려하고 있습니다.

답변1

4가지 방법이 있습니다:

  1. wget그런 gunzip다음 HTML에서 다시 처리합니다. 완료될 때까지 반복합니다.

    wget -m http://example.org/page.html
    find . -name \*gz -exec gzip -d {} \;
    find . -name \*html -exec wget -M -F {} \;</code></pre>
    

    속도는 느리지만 작동할 것입니다.

  2. Privoxy를 설치하고 요청된 페이지의 압축을 풀도록 구성합니다.

    + 압축 방지

    웹사이트의 데이터 압축을 방지합니다. 일부 사이트에서는 이 작업을 수행합니다. 이는 +filter 및 +gif-deanimate가 압축된 데이터에서 작동하지 않기 때문에 zlib 지원 없이 빌드할 때 Privoxy에 문제가 됩니다. 그러나 이러한 사이트에 대한 연결 속도가 느려집니다.

  3. Privoxy 또는 기타 프록시는 압축된 페이지를 가져와 압축되지 않은 사본을 클라이언트 Google에 전달할 수도 있습니다.

  4. wget요청 콘텐츠의 "Accept-Encoding: gzip" 헤더를 보내지 않습니다 . gzip왜 이런 일이 발생하는지 확인하세요. 어쩌면 그것을 추가하는 에이전트가 있습니까? Privoxy를 사용하여 이 헤더를 제거할 수도 있습니다.

답변2

wget -m -q --compression=auto http://example.com

~에서GNU wget매뉴얼:

--compression=type

사용할 압축 유형을 선택합니다. 유효한 값은 auto, gzip및 입니다 none.

또는 가 지정되면 auto서버는 파일을 압축하기 위해 압축 형식을 사용하도록 요청받습니다. 서버가 파일을 압축하고 적절하게 설정된 헤더 필드로 응답하면 파일이 자동으로 압축 해제됩니다.gzipwgetgzipContent-Encoding

none지정된 경우 wget서버는 파일 압축을 요청하지 않으며 모든 서버 응답은 압축 해제되지 않습니다. 이것이 기본 설정입니다.

압축 지원은 현재 실험적입니다. 열려 있는 경우 "버그가 있으면 신고해 주세요.[이메일 보호됨]".

답변3

답변이 늦었지만 웹 참조용입니다.

wget -O - $URL | zcat | wget -B $URL -i - -F -c -T 45 -k -r --page-requisites

문서 캐싱은 "잘 알려져 있습니다". 시간 초과/재시도 옵션(예: -c 및 -T 사용)은 무선 네트워크에서 간헐적인 "링크 손실"에 유용할 수 있습니다. 물론 모든 옵션은 선택사항입니다.

관련 정보