ব্রাউজার যখন করবে তখন কেন এই লিঙ্কটি ডাউনলোড করবেন না?


30

আমি ম্যাক ওএস 10.11.6 এল ক্যাপিটান চালাচ্ছি। আমি প্রোগ্রামের মাধ্যমে ডাউনলোড করতে চাই একটি লিঙ্ক আছে:

https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.16-osx10.11-x86_64.dmg

আমি যদি এই URL টি কোনও ব্রাউজারে (যেমন: সাফারি) পেস্ট করি তবে ডাউনলোডটি পুরোপুরি কার্যকর হয়।

তবে, যদি আমি কমান্ড লাইনটি ব্যবহার করে একই URL টি ডাউনলোড করার চেষ্টা করি তবে curlএটি কার্যকর হয় না — ফলাফলটি একটি খালি ফাইল:

$ ls -lA
$ curl -O https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.16-osx10.11-x86_64.dmg
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
$ ls -lA
total 0
-rw-r--r--  1 myname  staff  0 Nov  7 14:07 mysql-5.7.16-osx10.11-x86_64.dmg
$ 

অবশ্যই আমি ব্রাউজারের মাধ্যমে ফাইল পেতে পারেন, কিন্তু আমি বুঝতে চাই কেনcurl কমান্ড উপরে কাজ করে না।

কেন curlএই ফাইলটি সঠিকভাবে ডাউনলোড করতে পারবেন না , যখন এটি স্পষ্টত ওয়েবসাইটে উপস্থিত রয়েছে এবং কোনও গ্রাফিকাল ওয়েব ব্রাউজারের মাধ্যমে সঠিকভাবে অ্যাক্সেস এবং ডাউনলোড করা যায়?


7
আমি এটি উল্লেখ করতে চাই যে পুনঃনির্দেশগুলিতে টেকরফের উত্তর সম্পূর্ণরূপে সঠিক হলেও শিরোনামের মতো অন্যান্য কারণগুলির কারণে সার্ভার কোনও ফাইল ডাউনলোড করার কার্ল ক্লায়েন্টের অনুরোধ প্রত্যাখ্যান করতে পারে। উদাহরণস্বরূপ, যদি সার্ভারটির ব্যাকেন্ড ডিডিওএস সুরক্ষা থাকে, তবে এই জাতীয় সুরক্ষা সফ্টওয়্যারটি যথাযথভাবে থাকার মতো কার্যকর টেকসই ব্রাউজার শিরোনামগুলির জন্য পরীক্ষা করে User-Agent। অতিরিক্তভাবে, কিছু ব্রাউজার ডাউনলোড সেশন কুকিজের কারণে (যেমন আপনি লগ ইন থাকলে) কেবলমাত্র ব্রাউজারে উপস্থিত থাকার কারণে সফল হতে পারে।
জোসেফ এ।

6
কার্ল কমান্ডের সমস্যা সমাধানের জন্য, আপনি curl -v"ভারবোজ" ব্যবহার করতে পারেন । এটি সংযোগ, অনুরোধ এবং প্রতিক্রিয়া সম্পর্কে স্ট্যান্ডার্ড ত্রুটিতে মুদ্রণ করবে। এই ক্ষেত্রে, আপনি দেখতে পাবেন যে প্রতিক্রিয়াটিতে HTTP 302 Found(একটি রিডাইরেক্ট কোড) এবং LocationURL এ যাওয়ার সাথে একটি শিরোনাম রয়েছে to তারপরে আপনি man curlকীভাবে এটি পুনর্নির্দেশগুলি অনুসরণ করতে বলবেন তা খুঁজে পেতে পারেন।
নাথান লং

উত্তর:


59

ওয়েবসার্ভার-সাইডে নীচের ইউআরএলে পুনর্নির্দেশ রয়েছে: http://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.16-osx10.11-x86_64.dmg । কারণ এটি একটি সিডিএন, সঠিক আচরণ (আপনি পুনঃনির্দেশিত হন বা না হন) আপনার অবস্থানের উপর নির্ভর করে।

curlডিফল্ট অনুসারে পুনঃনির্দেশগুলি অনুসরণ করে না। এটি করতে বলতে, -Lযুক্তি যুক্ত করুন:

curl -L -O https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.16-osx10.11-x86_64.dmg

6
একটি HTTPS- থেকে HTTP পুনর্নির্দেশ? এটি ভয়াবহ, এবং আমি আশ্চর্য হইনি যে কার্ল এটিকে একা একা ভাল রেখে দেয় ...
টবি স্পিটি

এবং যদি এটি সমাধান না করে? .এএসপি স্টাফ দিয়ে কিছু করার আছে?
গণিত

4

যদি ব্রাউজারটি ফাইলটি ডাউনলোড করতে সক্ষম হয় তবে আপনি ব্রাউজারটি কী করছে তা পরীক্ষা করে দেখতে পারেন। গুগল ক্রোমে আপনি কী ঘটছে তা দেখতে নিম্নলিখিত ব্যবহার করতে পারেন।

1) [দেখুন> বিকাশকারী> বিকাশকারী সরঞ্জামসমূহ> নেটওয়ার্ক ট্যাব> শিরোনাম ট্যাব]

2) ডাউনলোড লিঙ্কে ক্লিক করুন।

3) ফাইল লিঙ্কটি বিকাশকারী সরঞ্জামগুলির ট্যাবে উপস্থিত হবে।

৪) ফাইলটিতে রাইট ক্লিক করুন এবং অনুলিপি করুন> সিআরএল হিসাবে অনুলিপি নির্বাচন করুন।

এখন আপনার একটি কার্ল লিঙ্ক রয়েছে যা কাজ করবে। এতে সম্ভবত অতিরিক্ত ট্রাম্পটারগুলি ছাঁটাতে পারবেন।

আরও বিশদ: https://lornajane.net/posts/2013/chrome-feature-copy-as-curl


0

আমি এই পোস্টে দেওয়া একটি মন্তব্যে একটি উত্তরে রূপান্তর করতে চলেছি।

অনেকগুলি এইচটিটিপি / এইচটিটিপিএস লিঙ্ক রয়েছে যার কাজ করার জন্য নির্দিষ্ট শিরোনাম প্রয়োজন। সুতরাং এটির ফলে কোনও ওয়েব ব্রাউজারের কার্যকারী প্রতিক্রিয়া হবে তবে কার্লের মতো ব্যাকএন্ড ওয়েব অনুরোধে কোনও কাজের প্রতিক্রিয়া নয়।

আমি স্রেফ এমন একটি সাইটে দৌড়েছি যা নিম্নলিখিত সমস্ত শিরোনামের প্রয়োজন। এগুলি নির্দিষ্ট করতে ব্যর্থতার ফলে একটি সময়সীমা শেষ হয়েছিল।

  httpget.setHeader("User-Agent", "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.62 Safari/537.36");
  httpget.setHeader("Upgrade-Insecure-Requests", "1");
  httpget.setHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8");
  httpget.setHeader("Accept-Encoding", "gzip, deflate, br");
  httpget.setHeader("Accept-Language", "en-US,en;q=0.9");
  httpget.setHeader("Connection", "keep-alive");
  httpget.setHeader("Host", "www.thehost.com");
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.