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

~からGNUwgetマニュアル:

--compression=type

使用する圧縮の種類を選択します。有効な値はautogzipおよびですnone

またはが指定されている場合、autoサーバーはファイルを圧縮するために圧縮形式を使用するように要求されます。サーバーがファイルを圧縮し、適切に設定されたヘッダーフィールドで応答すると、ファイルは自動的に解凍されます。gzipwgetgzipContent-Encoding

none指定した場合、wgetサーバーはファイルの圧縮を要求せず、すべてのサーバー応答は解凍されません。これがデフォルト設定です。

圧縮サポートは現在実験的です。開いている場合「バグがあれば報告してください。[Eメール保護]」。

答え3

答えが遅かったのですが、ウェブ参照用です。

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

文書キャッシュは「よく知られている」。タイムアウト/再試行オプション(-cや-Tなど)は、ワイヤレスネットワークで断続的な「リンク損失」に役立ちます。もちろん、すべてのオプションはオプションです。

関連情報