Saya menulis skrip bash yang mendapatkan output dari situs web menggunakan curl dan melakukan banyak manipulasi string pada output html. Masalahnya adalah ketika saya menjalankannya terhadap situs yang mengembalikan outputnya dalam bentuk gzip. Membuka situs di browser berfungsi dengan baik.
Saat saya menjalankan curl dengan tangan, saya mendapatkan hasil gzip:
$ curl "http://example.com"
Berikut tajuk dari situs tersebut:
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
Saya tahu data yang dikembalikan adalah gzip, karena ini mengembalikan html, seperti yang diharapkan:
$ curl "http://example.com" | gunzip
Saya tidak ingin menyalurkan output melalui gunzip, karena skrip berfungsi sebagaimana adanya di situs lain, dan menyalurkan melalui gzip akan merusak fungsi itu.
Apa yang saya coba
- mengubah agen pengguna (Saya mencoba string yang sama yang dikirimkan browser saya, "Mozilla / 4.0", dll)
- pria ikal
- pencarian Google
- mencari stackoverflow
Semuanya kosong
Ada ide?
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
) - menyelesaikannya dengan menghapusbr
dariAccept-Encoding
. lihat stackoverflow.com/questions/18983719/…