Example #1
0
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:]
Example #2
0
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)