вот тестовый скрипт: PHP: import urllib.request as req import http.client import zlib #http.client.HTTPConnection.debuglevel = 1 def test(url, gzip=False): request = req.Request(url) if gzip: request.add_header('Accept-encoding', 'gzip, deflate') opener = req.build_opener() f = opener.open(request) isGzip = f.headers.get('Content-Encoding') data_src = f.read() if isGzip == 'gzip': print('is GZIP!') data = zlib.decompress(data_src, 16+zlib.MAX_WBITS) else: print('its NOT GZIP!') data = data_src data = data.decode('utf-8', 'ignore') print('downloaded: %d bytes' % len(data_src)) print('decompressed: %d bytes' % len(data)) print('-'*40) #url = 'http://www.thedowntown.ru' url = 'http://www.google.ru' test(url) # without gzip test(url, True) #with gzip внизу можно указать скачиваемый урл если качать даунтаун, получаем: а если качать гугл: при этом, если качать гугл браузером, то там видно что он возвращает контент в gzip и заголовок Content-Encoding : gzip на месте
а, в общем-то разобрался гзип он отдает только если отправлять реальный юзер-агент: is GZIP! downloaded: 8820 bytes decompressed: 24215 bytes интересно, что без юзер агента он возвращает несжатый ответ не в утф, а в вин2151
Это умолчания(defaults). А заголовок, по стандарту, называется 'Accept-Encoding', а не 'Accept-encoding', может быть и в этом причина. (з.ы. я у себя ставлю "deflate, gzip, x-gzip, identity, *;q=0")