def compress_with_preset(data): initial = compress(PRESET + data) pos = 0 for i, j in zip(initial[4:], COMPRESSED_PRESET): if i != j: break pos += 1 return pos, initial[:4], initial[pos+4:]
ateallowcontent-basecontent-encodingcache-controlconnectiondatetrailertran sfer-encodingupgradeviawarningcontent-languagecontent-lengthcontent-locati oncontent-md5content-rangecontent-typeetagexpireslast-modifiedset-cookieMo ndayTuesdayWednesdayThursdayFridaySaturdaySundayJanFebMarAprMayJunJulAugSe pOctNovDecchunkedtext/htmlimage/pngimage/jpgimage/gifapplication/xmlapplic ation/xhtmltext/plainpublicmax-agecharset=iso-8859-1utf-8gzipdeflateHTTP/1 .1statusversionurlMozillaMacintoshIntelMacGeckoKHTMLVersionAppleWebKitMac 10_5_8OS XSafarigzipen """.strip().split()) # putting "en" at the end seems to improve compression ratio?? LEN_PRESET = len(PRESET) COMPRESSED_PRESET = compress(PRESET)[4:] def compress_with_preset(data): initial = compress(PRESET + data) pos = 0 for i, j in zip(initial[4:], COMPRESSED_PRESET): if i != j: break pos += 1 return pos, initial[:4], initial[pos+4:] def decompress_with_preset(pos, size, data): return decompress(size + COMPRESSED_PRESET[:pos] + data)[LEN_PRESET:] pos, size, output = compress_with_preset(HEADERS) input = decompress_with_preset(pos, size, output)