Comment faire pour gérer correctement un format de page lors de l'utilisation de curl?

J'ai écrit un script bash qui obtient de sortie à partir d'un site web à l'aide de curl et fait un tas de manipulation de chaîne sur la sortie html. Le problème est que quand je le lance contre un site qui est de retour de sa sortie au format gzip. Va sur le site dans un navigateur fonctionne très bien.

Quand je lance le roulage à la main, je reçois format de sortie:

$ curl "http://example.com"

Voici l'en-tête à partir de ce site en 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 retournées sont au format gzip, parce que cela renvoie html, comme prévu:

$ curl "http://example.com" | gunzip

Je ne veux pas le tuyau de la sortie à travers gunzip, parce que le script fonctionne comme sur d'autres sites, et de la tuyauterie par gzip serait briser cette fonctionnalité.

Ce que j'ai essayé de

  1. de changer le user-agent (j'ai essayé la même chaîne de mon navigateur envoie, "Mozilla/4.0", etc)
  2. homme curl
  3. recherche google
  4. recherche stackoverflow

Tout est venu vide

Des idées?

  • Pour moi, le problème était que cURL n'était pas en mesure de décompresser Brotli (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) - résolu en supprimant br de Accept-Encoding. voir stackoverflow.com/questions/18983719/...
InformationsquelleAutor BryanH | 2011-12-03