ホームページ > 記事 > ウェブフロントエンド > Web ページのソース コードの取得に関する問題_html/css_WEB-ITnose
gzip 復号化
質問:これ。 。 。 。
これ。 。 。 。
私は善良な市民です
0rnrn で終わる場合は、チャンク化されている可能性があります。チャンク化されたデータ構造を理解する必要があります
通常、
長さ 1rn + データ ブロック 1rn + 長さ 2rn + データ ブロック 2rn + です。 .. + 0rnrn
対応するデータブロックには末尾のrn部分のバイト数は含まれません(16進数)。 各ブロックの長さは必ずしも同じである必要はありません。これらを結合して完全なファイルを形成します。rfc2616 標準には、この点に関する詳細な手順が記載されています。
たとえば、NetEase のホームページ http://www.163.com
gzip を送信すると、gzip+chunked が返されます。 *、html+chunked が返されます
x04 rn abcd rn x10 rn efghijklmnopqrst rn 0 rnrn
abcdefghijklmnopqrst
別の例を挙げてみましょう
x04rnabcdrnx10rnefghijklmnopqrstrn0rnrn
abcdefghijklmnopqrst
データ パケットを取得しました。形式は gzip である必要があります。ただし、それらはすべて 16 進数です。では、この Web ページを復元するにはどうすればよいでしょうか?いつも失敗する。ありがとう。
もちろん、復元するにはプログラミング言語の解凍モジュールが必要です。それ以外の場合は、gzip アルゴリズムを自分で勉強する必要があります。
gzip の先頭は 1F 8B 08.これで始まるので、直接解凍してください。 解凍が間違っている場合は、完全に受信できていないはずです
ヘッダーの content-length で完了かどうか判断できます
末尾が 30 0D 0A の場合0D 0A の場合、それはチャンク化されます。上で述べたことによると、最初にデータ部分をデコードしてから、それが gzip
チャンク化されたデータであるかどうかを判断します。長さは固定されていないため、ヘッダーには長さの記述がありません。それが完了したかどうかは最後に依存します
それを復元する方法は、もちろんプログラミング言語の解凍モジュールが必要です。そうでない場合、私にはそれを解決するためにgzipアルゴリズムを勉強する必要があります
。
gzip の先頭が 1F 8B 08 で始まる場合は、直接解凍してください。解凍時にエラーがあった場合は、ヘッダーの content-length で完全かどうかを判断できます。
末尾が 30 0D 0A 0D 0A の場合は、チャンク化されています。まずデータ部分を解決してから、1 つであるかどうかを判断してください。