이것은 파일을 다운로드하는 내 컬 명령입니다. 다운로드한 파일이 손상되어 열 수 없습니다. 파일 URL은 다음과 같습니다.https://www.carscoops.com/wp-content/uploads/2022/12/Buick-Encore-GX-Scoop-4.jpg
curl -iv --output abc.jpg --request GET \
--url https://www.carscoops.com/wp-content/uploads/2022/12/Buick-Encore-GX-Scoop-4.jpg
Chrome에서 컬의 전체 복사본을 사용해 보았지만 작동하지 않았습니다.
curl 'https://www.carscoops.com/wp-content/uploads/2022/12/Buick-Encore-GX-Scoop-4.jpg' --output "abc.jpg" \
-H 'authority: www.carscoops.com' \
-H 'accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9' \
-H 'accept-language: en-US,en;q=0.9' \
-H 'cache-control: no-cache' \
-H 'pragma: no-cache' \
-H 'sec-ch-ua: "Not?A_Brand";v="8", "Chromium";v="108", "Google Chrome";v="108"' \
-H 'sec-ch-ua-mobile: ?0' \
-H 'sec-ch-ua-platform: "macOS"' \
-H 'sec-fetch-dest: document' \
-H 'sec-fetch-mode: navigate' \
-H 'sec-fetch-site: none' \
-H 'sec-fetch-user: ?1' \
-H 'upgrade-insecure-requests: 1' \
-H 'user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36'
또한 작동하지 않지만 wget
브라우저를 통해 계속 액세스할 수 있습니다. 어떤 종류의 기술로 다운로드를 막을 수 있습니까?
답변1
이미지가 Brotli로 인코딩되고 있지만( Content-Encoding: br
응답 헤더 참조) 컬 버전이 brotli를 지원하지 않을 가능성이 높으므로 디코딩을 자동으로 무시합니다. 이 옵션을 추가하면 컬 버전이 반환된 인코딩을 지원하는지 확인할 수 있습니다 --compressed
. Curl은 콘텐츠 인코딩을 이해하지 못하면 실패합니다. 예(Debian Buster에서 테스트됨):
$ curl --compressed "https://www.carscoops.com/wp-content/uploads/2022/12/Buick-Encore-GX-Scoop-4.jpg" > abc.jpg
curl: (61) Unrecognized content encoding type. libcurl understands deflate, gzip content encodings.
컬 버전을 업그레이드해 보세요. 최신 버전에서는 br을 지원해야 합니다.
아니면브로틀리출력을 파이핑하여 "압축 해제"할 수 있는 명령줄 도구(확실히 이미 압축된 JPEG 이미지의 경우 인코딩은 간단하므로 실제로 이미지를 "압축 해제"하기 위해 몇 바이트만 제거하면 되지만 대부분은 작업에 적합한 도구입니다..):
$ curl "https://www.carscoops.com/wp-content/uploads/2022/12/Buick-Encore-GX-Scoop-4.jpg" \
| brotli -d > abc.jpg