উইজেট - পুনরাবৃত্তভাবে এবং কেবল নির্দিষ্ট মাইম-প্রকার / এক্সটেনশানগুলি কীভাবে ডাউনলোড করবেন (কেবলমাত্র পাঠ্য)


22

কীভাবে একটি সম্পূর্ণ ওয়েবসাইট ডাউনলোড করবেন তবে সমস্ত বাইনারি ফাইল উপেক্ষা করছেন।

wget-rপতাকাটি ব্যবহার করে এই কার্যকারিতা রয়েছে তবে এটি সমস্ত কিছু ডাউনলোড করে এবং কিছু ওয়েবসাইটগুলি একটি স্বল্প সংস্থান মেশিনের জন্য খুব বেশি এবং নির্দিষ্ট সাইট কারণ আমি সাইটটি ডাউনলোড করছি এটি ব্যবহারের নয়।

আমি যে কমান্ড লাইনটি ব্যবহার করছি তা এখানে: wget -P 20 -r -l 0 http://www.omardo.com/blog(আমার নিজস্ব ব্লগ)


1
উইজেট কেবল ফাইল প্রত্যয় দিয়ে ফিল্টার করতে পারে
ডেইজি

@ warl0ck আমি জানি না, ধন্যবাদ! -আর এবং -আর বিকল্পগুলি আমার ক্রিয়াকলাপের জন্য খুব দরকারী।
ওমর আল-ইতাওয়াই

উত্তর:


21

আপনি অনুমোদিত সম্মানের একটি তালিকা নির্দিষ্ট করতে পারেন। অনুমোদিত ফাইল নাম নিদর্শনগুলি:

অনুমোদিত:

-A LIST
--accept LIST

অননুমোদিত:

-R LIST
--reject LIST

LIST ফাইল নাম নিদর্শন / এক্সটেনশনের কমা দ্বারা বিযুক্ত তালিকা।

নিদর্শন নির্দিষ্ট করতে আপনি নিম্নলিখিত সংরক্ষিত অক্ষরগুলি ব্যবহার করতে পারেন:

  • *
  • ?
  • [
  • ]

উদাহরণ:

  • কেবল পিএনজি ফাইল ডাউনলোড করুন: -A png
  • সিএসএস ফাইল ডাউনলোড করবেন না: -R css
  • "অবতার" দিয়ে শুরু হওয়া পিএনজি ফাইলগুলি ডাউনলোড করবেন না: -R avatar*.png

যদি ফাইলটির কোনও এক্সটেনশন শ্বাস থাকে না। ফাইলের নামের কোনও প্যাটার্ন নেই যা আপনি ব্যবহার করতে পারেন, আপনার মাইম টাইপ পার্সিং দরকার হবে, আমার ধারণা ( লার্স কোথথস এর উত্তর দেখুন )।


2

আপনি এমএমআই টাইপ দ্বারা ফিল্টার করার জন্য এটি ( এখানেও ) প্যাচিং উইজেটের চেষ্টা করতে পারেন । এই প্যাচটি যদিও এখন বেশ পুরানো, সুতরাং এটি আর কাজ করবে না।


এটিকে একটি শট দিচ্ছি ... ftp.gnu.org/gnu/wget আমি এই সাথে উইজেটের নতুন সংস্করণটি প্যাচিংয়ের জন্য পাশা ঘুরিয়েছি তবে কোনও ভাগ্য নেই (অবশ্যই)। আমি প্যাচটি আপডেট করার চেষ্টা করব তবে খোলামেলা চপগুলি সি ++ এ থাকা উচিত নয় যাতে এটি একটি সময় ডুবে না। আমি যে উইজেটের জন্য রচনা করা হয়েছিল সেটির সংস্করণটি দখল করতে এবং পরিচালনাটি পরিচালনা করেছিলাম। এসএসএল সমর্থন দিয়ে সংকলন করার পরেও আমার সমস্যা হয়েছিল কারণ আমি কী ওপেনসেলটি গ্রহন করার দরকার তা বুঝতে পারি না।
MageProspero

এটি দুর্দান্ত দেখাচ্ছে কোন ধারণা কেন এই প্যাচটি এখনও গৃহীত হয়নি (চার বছর পরে)?
ডেভিড পোর্টাবেলা

2

একটি নতুন উইজেট (উইজেট 2) এর মধ্যে ইতিমধ্যে বৈশিষ্ট্য রয়েছে:

--filter-mime-type    Specify a list of mime types to be saved or ignored`

### `--filter-mime-type=list`

Specify a comma-separated list of MIME types that will be downloaded.  Elements of list may contain wildcards.
If a MIME type starts with the character '!' it won't be downloaded, this is useful when trying to download
something with exceptions. For example, download everything except images:

  wget2 -r https://<site>/<document> --filter-mime-type=*,\!image/*

It is also useful to download files that are compatible with an application of your system. For instance,
download every file that is compatible with LibreOffice Writer from a website using the recursive mode:

  wget2 -r https://<site>/<document> --filter-mime-type=$(sed -r '/^MimeType=/!d;s/^MimeType=//;s/;/,/g' /usr/share/applications/libreoffice-writer.desktop)

উইজেট 2 আজ হিসাবে প্রকাশিত হয়নি, তবে শীঘ্রই হবে। দেবিয়ান অস্থির ইতিমধ্যে একটি আলফা সংস্করণ পাঠানো হয়েছে।

https://gitlab.com/gnuwget/wget2 আরও তথ্যের জন্য। আপনি সরাসরি বাগ / উইজেট@gnu.org এ প্রশ্ন / মন্তব্য পোস্ট করতে পারেন।


1

আমি সম্পূর্ণ ভিন্ন পদ্ধতির চেষ্টা করেছি স্কেরাপি ব্যবহার করা, তবে এতে একই সমস্যা রয়েছে! আমি এটি কীভাবে সমাধান করেছি তা এখানে: এসও: পাইথন স্কেরাপি - ম-টাইপ ভিত্তিক ফিল্টারটি অ-পাঠ্য ফাইল ডাউনলোডগুলি এড়াতে?

সমাধানটি হল একটি Node.jsপ্রক্সি সেটআপ করা এবং http_proxyপরিবেশ পরিবর্তনশীলের মাধ্যমে এটি ব্যবহারের জন্য স্কেরাপি কনফিগার করা ।

কি প্রক্সি করা উচিৎ হল:

  • স্কেরাপি থেকে এইচটিটিপি অনুরোধ নিন এবং ক্রল হওয়ার কারণে এটি সার্ভারে প্রেরণ করে। তারপরে এটি স্ক্র্যাপির প্রতিক্রিয়া ফিরিয়ে দেয় অর্থাত্ সমস্ত এইচটিটিপি ট্র্যাফিককে আটকান।
  • বাইনারি ফাইলগুলির জন্য (আপনি বাস্তবায়িত হিউরিস্টিকের ভিত্তিতে) এটি 403 Forbiddenস্ক্রাপিতে ত্রুটি প্রেরণ করে এবং তাত্ক্ষণিকভাবে অনুরোধ / প্রতিক্রিয়া বন্ধ করে দেয়। এটি সময় বাঁচাতে সহায়তা করে, ট্র্যাফিক এবং স্কেরাপি ক্রাশ হবে না।

নমুনা প্রক্সি কোড যা আসলে কাজ করে!

http.createServer(function(clientReq, clientRes) {
    var options = {
        host: clientReq.headers['host'],
        port: 80,
        path: clientReq.url,
        method: clientReq.method,
        headers: clientReq.headers
    };


    var fullUrl = clientReq.headers['host'] + clientReq.url;

    var proxyReq = http.request(options, function(proxyRes) {
        var contentType = proxyRes.headers['content-type'] || '';
        if (!contentType.startsWith('text/')) {
            proxyRes.destroy();            
            var httpForbidden = 403;
            clientRes.writeHead(httpForbidden);
            clientRes.write('Binary download is disabled.');
            clientRes.end();
        }

        clientRes.writeHead(proxyRes.statusCode, proxyRes.headers);
        proxyRes.pipe(clientRes);
    });

    proxyReq.on('error', function(e) {
        console.log('problem with clientReq: ' + e.message);
    });

    proxyReq.end();

}).listen(8080);
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.