Tôi đã viết một tập lệnh bash nhận đầu ra từ một trang web bằng cách sử dụng curl và thực hiện một loạt các thao tác chuỗi trên đầu ra html. Vấn đề là khi tôi chạy nó trên một trang web đang trả lại đầu ra của nó được nén. Đi đến trang web trong một trình duyệt hoạt động tốt.
Khi tôi chạy curl bằng tay, tôi nhận được đầu ra được nén:
$ curl "http://example.com"
Đây là tiêu đề từ trang web cụ thể đó:
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
Tôi biết dữ liệu trả về được nén, bởi vì điều này trả về html, như mong đợi:
$ curl "http://example.com" | gunzip
Tôi không muốn chuyển đầu ra qua gunzip, vì tập lệnh hoạt động như trên các trang web khác và đường ống qua gzip sẽ phá vỡ chức năng đó.
Những gì tôi đã thử
- thay đổi tác nhân người dùng (Tôi đã thử cùng một chuỗi trình duyệt của tôi gửi, "Mozilla / 4.0", v.v.)
- người đàn ông cuộn tròn
- tìm kiếm trên google
- tìm kiếm stackoverflow
Mọi thứ trở nên trống rỗng
Có ý kiến gì không?
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
) - đã giải quyết nó bằng cách xóabr
khỏiAccept-Encoding
. xem stackoverflow.com/questions/18983719/ khăn