J'ai écrit un script bash qui obtient la sortie d'un site Web en utilisant curl et fait un tas de manipulations de chaînes sur la sortie html. Le problème est lorsque je l'exécute sur un site qui renvoie sa sortie gzippée. Accéder au site dans un navigateur fonctionne très bien.
Lorsque je lance curl à la main, j'obtiens une sortie gzippée:
$ curl "http://example.com"
Voici l'en-tête de ce site particulier:
HTTP/1.1 200 OK
Server: nginx
Content-Type: text/html; charset=utf-8
X-Powered-By: PHP/5.2.17
Last-Modified: Sat, 03 Dec 2011 00:07:57 GMT
ETag: "6c38e1154f32dbd9ba211db8ad189b27"
Expires: Sun, 19 Nov 1978 05:00:00 GMT
Cache-Control: must-revalidate
Content-Encoding: gzip
Content-Length: 7796
Date: Sat, 03 Dec 2011 00:46:22 GMT
X-Varnish: 1509870407 1509810501
Age: 504
Via: 1.1 varnish
Connection: keep-alive
X-Cache-Svr: p2137050.pubip.peer1.net
X-Cache: HIT
X-Cache-Hits: 425
Je sais que les données renvoyées sont gzippées, car cela renvoie du html, comme prévu:
$ curl "http://example.com" | gunzip
Je ne veux pas diriger la sortie via gunzip, car le script fonctionne tel quel sur d'autres sites, et le fait de passer par gzip casserait cette fonctionnalité.
Ce que j'ai essayé
- changer le user-agent (j'ai essayé la même chaîne que mon navigateur envoie, "Mozilla / 4.0", etc.)
- homme curl
- recherche Google
- recherche stackoverflow
Tout est venu vide
Des idées?
curl 7.54.0 (x86_64-apple-darwin17.0) libcurl/7.54.0 LibreSSL/2.0.20 zlib/1.2.11 nghttp2/1.24.0
) - le résolvait en supprimantbr
deAccept-Encoding
. voir stackoverflow.com/questions/18983719/…