curl을 사용하여 웹 사이트에서 출력을 얻고 html 출력에서 많은 문자열 조작을 수행하는 bash 스크립트를 작성했습니다. 문제는 출력 결과를 반환하는 사이트에 대해 실행할 때입니다. 브라우저에서 사이트로 이동하면 제대로 작동합니다.
손으로 컬을 실행하면 gzipped 출력이 나타납니다.
$ curl "http://example.com"
특정 사이트의 헤더는 다음과 같습니다.
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
예상대로 HTML이 반환되므로 반환 된 데이터가 압축 된 것을 알고 있습니다.
$ curl "http://example.com" | gunzip
스크립트는 다른 사이트에서 그대로 작동하고 gzip을 통한 파이프 연결은 해당 기능을 중단하기 때문에 gunzip을 통해 출력을 파이프하고 싶지 않습니다.
내가 시도한 것
- 사용자 에이전트 변경 (브라우저가 보내는 동일한 문자열, "Mozilla / 4.0"등을 시도했습니다)
- 남자 컬
- 구글 검색
- stackoverflow 검색
모든 것이 비워졌습니다
어떤 아이디어?
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
)의 압축을 풀 수 없어서br
에서 제거하여 문제를 해결 했다는 것Accept-Encoding
입니다. 참조 stackoverflow.com/questions/18983719/...