আমি একটি বাশ স্ক্রিপ্ট লিখেছিলাম যা কার্ল ব্যবহার করে কোনও ওয়েবসাইট থেকে আউটপুট পায় এবং এইচটিএমএল আউটপুটটিতে স্ট্রিং ম্যানিপুলেশন করে। সমস্যাটি যখন আমি কোনও সাইটের বিরুদ্ধে চালিত করি যা তার আউটপুট জিপিড ফিরে দিচ্ছে। ব্রাউজারে সাইটে যাওয়া ঠিক কাজ করে।
আমি যখন হাত দিয়ে কার্ল চালাই তখন আমি জিপিপড আউটপুট পাই:
$ 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
আমি জানি যে ফিরে আসা ডেটা জিপিপড, কারণ এটি প্রত্যাশা অনুযায়ী এইচটিএমএল ফেরত দেয়:
$ curl "http://example.com" | gunzip
আমি গানজিপের মাধ্যমে আউটপুটটি পাইপ করতে চাই না, কারণ স্ক্রিপ্টটি অন্য সাইটগুলিতে যেমন রয়েছে তেমন কাজ করে, এবং জিজিপের মাধ্যমে পাইপিং করা সেই কার্যকারিতাটি ভেঙে দেবে।
আমি কি চেষ্টা করেছি
- ব্যবহারকারী-এজেন্ট পরিবর্তন করা (আমি আমার ব্রাউজারটি "মোজিলা / 4.0" প্রেরণের একই স্ট্রিংটি চেষ্টা করেছি)
- ম্যান কার্ল
- Google অনুসন্ধান
- স্ট্যাকওভারফ্লো অনুসন্ধান
সবকিছু খালি উঠে এল
কোন ধারনা?
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/...