Ho scritto uno script bash che ottiene l'output da un sito Web usando curl e fa un sacco di manipolazione delle stringhe sull'output html. Il problema è quando lo eseguo su un sito che sta restituendo il suo output gzip. Andare al sito in un browser funziona bene.
Quando eseguo il ricciolo a mano, ottengo un output gzip:
$ curl "http://example.com"
Ecco l'intestazione di quel particolare sito:
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
So che i dati restituiti sono compressi con gzip, perché questo restituisce html, come previsto:
$ curl "http://example.com" | gunzip
Non voglio reindirizzare l'output tramite gunzip, perché lo script funziona così com'è su altri siti e il piping tramite gzip interromperà tale funzionalità.
Quello che ho provato
- cambiando lo user-agent (ho provato la stessa stringa che il mio browser invia, "Mozilla / 4.0", ecc.)
- uomo arricciato
- ricerca Google
- ricerca stackoverflow
Tutto è risultato vuoto
Qualche idea?
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
) - risolto rimuovendolobr
daAccept-Encoding
. vedi stackoverflow.com/questions/18983719/...