Ich habe ein Bash-Skript geschrieben, das mithilfe von Curl von einer Website ausgegeben wird und eine Reihe von Zeichenfolgenmanipulationen an der HTML-Ausgabe vornimmt. Das Problem ist, wenn ich es für eine Site ausführe, die ihre Ausgabe gzipped zurückgibt. Das Aufrufen der Site in einem Browser funktioniert einwandfrei.
Wenn ich Curl von Hand laufen lasse, erhalte ich eine gezippte Ausgabe:
$ curl "http://example.com"
Hier ist der Header von dieser bestimmten Site:
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
Ich weiß, dass die zurückgegebenen Daten komprimiert sind, da dies erwartungsgemäß HTML zurückgibt:
$ curl "http://example.com" | gunzip
Ich möchte die Ausgabe nicht über gunzip leiten, da das Skript auf anderen Websites unverändert funktioniert und das Weiterleiten durch gzip diese Funktionalität beeinträchtigen würde.
Was ich versucht habe
- Ändern des Benutzeragenten (Ich habe versucht, dieselbe Zeichenfolge zu verwenden, die mein Browser sendet, "Mozilla / 4.0" usw.)
- Mann locken
- Google-Suche
- Suche nach Stackoverflow
Alles war leer
Irgendwelche Ideen?
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
) nicht dekomprimieren konnte - es wurde durch Entfernenbr
von gelöstAccept-Encoding
. siehe stackoverflow.com/questions/18983719/…