Я хочу раздувать веб-страницы HTML. Я использую функции zlib
inflateInit2(&zstream,15+32);
а потом
inflate(&zstream,Z_SYNC_FLUSH);
Он работает для многих веб-страниц правильно, но для «www.tabnak.ir» он не работает правильно.
invalid distance too far back
ОШИБКА, которую я получил за этот сайт.
Эта веб-страница также gzip и utf8.
Как мне с этим бороться?
Это для Bing.com, который отлично работает
1f 8b 08 00 ef 8c 77 56 00 ff ec 5a eb 73 9c 46
12 ff 9e aa fc 0f 04 d5 9d ad 78 1f c0 3e b4 0b
96 52 b2 24 2b ba 73 1c 9d 2d 27 b9 8a af b6 06
Это для tabnak.ir, который приводит к invalid distance too far back
ошибка
1f 8b 08 00 00 00 00 00 00 03 ed fd db 73 5b d7
99 2f 8a 3e ab ab d6 ff 30 ac ae ac d8 3b 82 80
39 71 a7 6d 55 39 89 7b 75 f7 4a d2 7d 92 74 af
Формат zlib / gzip выполняет сжатие, говоря что-то вроде «Следующие 22 байта совпадают с 22 байтами, которые мы видели 1013 байтов назад.
В этом случае запись, описывающая повторение, происходит до размера «окна».
Учитывая, что вы указали максимальный размер окна, вероятность того, что формат данных немного изменился, или полученные вами данные не совпадают с отправленными.
Некоторые вещи, чтобы проверить.
gunzip
, winzip
) может распаковать данные.'rb'
против 'rt'
)Если это не помогло, попробуйте просмотреть данные и понять, что такое сбой в gzip.
Может показаться, что файл, который вы пытаетесь «накачать» (распаковать с помощью zlib), не является допустимым zip-файлом. Поскольку bing.com, скорее всего, не является файлом zlib, вполне возможно, что вы нашли что-то довольно раннее, что предотвратило распаковку.