Wget

برنامج GNU Wget (أو Wget اختصارًا ، وكان يُعرف سابقًا باسم Geturl ، ويُكتب أيضًا باسم حزمته wget ) هو برنامج حاسوبي يسترجع المحتوى من خوادم الويب . وهو جزء من مشروع جنو . اسمه مشتق من " الشبكة العنكبوتية العالمية " و" get "، وهي طريقة طلب HTTP. يدعم البرنامج التنزيل عبر HTTP و HTTPS و FTP .

تتضمن ميزاته التنزيل المتكرر، وتحويل الروابط لعرض صفحات HTML المحلية دون اتصال بالإنترنت، ودعم الخوادم الوكيلة. ظهر البرنامج عام ١٩٩٦، بالتزامن مع ازدهار شعبية الإنترنت، مما أدى إلى انتشاره الواسع بين مستخدمي أنظمة يونكس وتوزيعه مع معظم توزيعات لينكس الرئيسية . كُتب Wget بلغة C ، ويمكن تثبيته بسهولة على أي نظام شبيه بيونكس. تم نقل Wget إلى أنظمة مايكروسوفت ويندوز ، وماك أو إس ، وأوبن في إم إس ، وإتش بي-يو إكس ، وأميغا أو إس ، ومورف أو إس ، وسولاريس . منذ الإصدار ١.١٤، أصبح بإمكان Wget حفظ مخرجاته بتنسيق WARC، وهو معيار أرشفة الويب . [ ٣ ]

تاريخ

ينحدر برنامج Wget من برنامج سابق يسمى Geturl من نفس المؤلف، [ 4 ] والذي بدأ تطويره في أواخر عام 1995. تم تغيير الاسم إلى Wget بعد أن أصبح المؤلف على دراية ببرنامج Amiga سابق يسمى GetURL، كتبه جيمس بيرتون في AREXX .

سدّ برنامج Wget ثغرةً في برامج تنزيل الملفات من الإنترنت غير المتناسقة المتوفرة في منتصف التسعينيات. لم يكن هناك برنامج واحد قادر على استخدام بروتوكولي HTTP و FTP معًا لتنزيل الملفات بكفاءة. كانت البرامج الموجودة إما تدعم بروتوكول FTP (مثل NcFTP وdl) أو مكتوبة بلغة Perl ، التي لم تكن منتشرة على نطاق واسع آنذاك. مع أن Wget استُلهم من بعض ميزات البرامج الموجودة، إلا أنه كان يدعم بروتوكولي HTTP وFTP، وكان بالإمكان بناؤه باستخدام أدوات التطوير القياسية الموجودة في جميع أنظمة Unix.

في ذلك الوقت، عانى العديد من مستخدمي نظام يونكس من بطء شديد في اتصالات الإنترنت الجامعية واتصالات الطلب الهاتفي ، مما أدى إلى تزايد الحاجة إلى وكيل تنزيل يمكنه التعامل مع حالات فشل الشبكة العابرة دون مساعدة من المشغل البشري.

سمات

المتانة

صُمم برنامج Wget ليكون فعالاً حتى مع اتصالات الشبكة البطيئة أو غير المستقرة. فإذا لم يكتمل التنزيل بسبب مشكلة في الشبكة ، سيحاول Wget تلقائيًا استئناف التنزيل من حيث توقف، ويكرر هذه العملية حتى يتم تنزيل الملف بالكامل. وكان من أوائل برامج التنزيل التي استخدمت Rangeرأس HTTP الجديد آنذاك لدعم هذه الميزة.

تنزيل متكرر

يمكن لبرنامج Wget، عند الحاجة، العمل كبرنامج زحف ويب، وذلك باستخراج الموارد المرتبطة بصفحات HTML وتنزيلها بالتسلسل، مع تكرار العملية بشكل متكرر حتى يتم تنزيل جميع الصفحات أو الوصول إلى أقصى عمق تكرار يحدده المستخدم. تُحفظ الصفحات التي تم تنزيلها في بنية دليل مشابهة لتلك الموجودة على الخادم البعيد. يُمكّن هذا "التنزيل المتكرر" من نسخ مواقع الويب جزئيًا أو كليًا عبر بروتوكول HTTP. يمكن تعديل الروابط في صفحات HTML التي تم تنزيلها لتشير إلى المواد التي تم تنزيلها محليًا لعرضها دون اتصال بالإنترنت . عند إجراء هذا النوع من النسخ التلقائي لمواقع الويب، يدعم Wget معيار استبعاد الروبوتات (ما لم يتم استخدام الخيار ).-e robots=off

يدعم التنزيل المتكرر بروتوكول نقل الملفات (FTP) أيضًا، حيث يُصدر برنامج Wget LISTالأمر لتحديد الملفات الإضافية المراد تنزيلها، ويكرر هذه العملية للمجلدات والملفات الموجودة ضمن المجلد المحدد في عنوان URL الرئيسي . ويدعم البرنامج استخدام الأحرف البديلة (البدل ) عند طلب تنزيل عناوين URL الخاصة ببروتوكول نقل الملفات (FTP).

عند التنزيل المتكرر عبر بروتوكول HTTP أو FTP ، يمكن توجيه Wget لفحص الطوابع الزمنية للملفات المحلية والبعيدة، وتنزيل الملفات البعيدة الأحدث من الملفات المحلية المقابلة لها فقط. يتيح هذا نسخ مواقع HTTP و FTP بسهولة ، ولكنه يُعتبر غير فعال وأكثر عرضة للأخطاء مقارنةً بالبرامج المصممة خصيصًا للنسخ، مثل rsync . من ناحية أخرى، لا يتطلب Wget برامج خادم خاصة لهذه المهمة.

عدم التفاعل

برنامج Wget غير تفاعلي، بمعنى أنه بمجرد تشغيله، لا يتطلب أي تدخل من المستخدم ولا يحتاج إلى التحكم في طرفية (TTY) ، إذ يسجل تقدمه في ملف منفصل لمراجعته لاحقًا. يمكن للمستخدمين تشغيل Wget وتسجيل الخروج منه ، تاركين البرنامج يعمل دون مراقبة. على النقيض من ذلك، تتطلب معظم متصفحات الويب ذات واجهة المستخدم الرسومية أو النصية من المستخدم البقاء مسجلاً الدخول وإعادة تشغيل التنزيلات الفاشلة يدويًا، مما قد يشكل عائقًا كبيرًا عند نقل كميات كبيرة من البيانات.

سهولة الحمل

كُتب برنامج Wget بلغة C بأسلوب قابل للنقل بسهولة، ويعتمد بشكل كبير على مكتبات خارجية، ولا يتطلب سوى مُصرّف C وواجهة شبيهة بواجهة BSD لشبكات TCP/IP . صُمم البرنامج في الأصل كبرنامج Unix يُستدعى من سطر أوامر Unix ، وقد نُقل إلى العديد من بيئات وأنظمة Unix، بما في ذلك Microsoft Windows عبر Cygwin و macOS . كما يتوفر أيضًا كبرنامج أصلي لنظام Microsoft Windows ضمن حزم GnuWin .

ميزات أخرى

كُتب برنامج GNU Wget بواسطة هرفوي نيكسيتش بمساهمات من العديد من الأشخاص الآخرين، بمن فيهم دان هاركليس، وإيان أبوت، وماورو تورتونيسي. تُذكر المساهمات الهامة في ملف AUTHORS المرفق بالتوزيعة، بينما تُوثق جميع المساهمات الأخرى في سجلات التغييرات المرفقة بالبرنامج. يتولى جوزيبي سكريفانو وتيم روهسن حاليًا صيانة برنامج Wget. [ 5 ]

حقوق الطبع والنشر لبرنامج Wget تعود إلى مؤسسة البرمجيات الحرة ، التي تنص سياستها على اشتراط التنازل عن حقوق الطبع والنشر لجميع المساهمات غير البسيطة في برمجيات جنو. [ 6 ]

رخصة

يُوزَّع برنامج GNU Wget بموجب شروط رخصة جنو العمومية العامة ، الإصدار 3 أو أحدث، مع استثناء خاص يسمح بتوزيع الملفات الثنائية المرتبطة بمكتبة OpenSSL . فيما يلي نص الاستثناء: [ 2 ]

إذن إضافي بموجب رخصة جنو العمومية العامة الإصدار 3 القسم 7

إذا قمت بتعديل هذا البرنامج، أو أي عمل مشمول، عن طريق ربطه أو دمجه مع مكتبة OpenSSL التابعة لمشروع OpenSSL (أو نسخة معدلة منها)، والتي تحتوي على أجزاء مشمولة بشروط تراخيص OpenSSL أو SSLeay، فإن مؤسسة البرمجيات الحرة تمنحك إذنًا إضافيًا لنقل العمل الناتج. يجب أن يتضمن المصدر المقابل لشكل غير مصدري من هذا الدمج شفرة المصدر لأجزاء OpenSSL المستخدمة، بالإضافة إلى شفرة المصدر للعمل المشمول.

من المتوقع إزالة بند الاستثناء بمجرد تعديل Wget ليرتبط أيضًا بمكتبة GnuTLS .

تُوزَّع وثائق Wget ، على شكل دليل مرجعي لـ Texinfo ، بموجب شروط رخصة جنو للوثائق الحرة ، الإصدار 1.2 أو أحدث. أما صفحة الدليل (man page) التي تُوزَّع عادةً على أنظمة يونكس، فتُنشأ تلقائيًا من جزء من دليل Texinfo وتخضع لشروط الرخصة نفسها.

تطوير

يتم تطوير Wget بطريقة مفتوحة المصدر، حيث تُناقش معظم قرارات التصميم عادةً على القائمة البريدية العامة [ 7 ] التي يتابعها المستخدمون والمطورون. ويتم إرسال تقارير الأخطاء والتصحيحات إلى نفس القائمة.

مساهمة المصدر

الطريقة المُفضلة للمساهمة في كود Wget وتوثيقه هي عبر تحديثات المصدر على شكل تصحيحات نصية تُنشئها أداة diff . تُرسل التصحيحات المُراد إدراجها في Wget إلى القائمة البريدية [ 7 ] حيث يراجعها القائمون على الصيانة. تُثبّت التصحيحات التي تجتاز تدقيق القائمين على الصيانة في المصادر. تتوفر تعليمات إنشاء التصحيحات، بالإضافة إلى إرشادات الأسلوب، على ويكي المشروع. [ 8 ]

يمكن أيضًا تتبع شفرة المصدر عبر مستودع تحكم إصدارات عن بُعد ، يستضيف سجل المراجعات بدءًا من الإصدار 1.5.3. يعمل المستودع حاليًا بنظام Git . [ 9 ] قبل ذلك، كانت شفرة المصدر مُستضافة على (بالترتيب العكسي): Bazaar ، [ 10 ] Mercurial ، Subversion ، وعبر CVS .

يطلق

عندما يتراكم عدد كافٍ من الميزات أو إصلاحات الأخطاء أثناء التطوير، يُطرح برنامج Wget للجمهور عبر موقع GNU FTP ومواقع النسخ الاحتياطية التابعة له. وبما أنه يُدار بالكامل من قِبل متطوعين، فلا توجد ضغوط خارجية لإصدار نسخة، كما لا توجد مواعيد نهائية ملزمة للإصدار.

تُرقّم الإصدارات على شكل أرقام رئيسية.ثانية[.مراجعة] ، مثل Wget 1.11 أو Wget 1.8.2 . تشير زيادة رقم الإصدار الرئيسي إلى تغييرات كبيرة، وربما غير متوافقة، في سلوك Wget أو إلى إعادة تصميم جذرية لقاعدة التعليمات البرمجية. وتشير زيادة رقم الإصدار الثانوي إلى إضافة ميزات جديدة وإصلاحات للأخطاء. أما المراجعة الجديدة فتشير إلى إصدار يحتوي، مقارنةً بالمراجعة السابقة، على إصلاحات للأخطاء فقط. تُحذف المراجعة صفر، مما يعني أن Wget 1.11، على سبيل المثال، هو نفسه 1.11.0. لا يستخدم Wget نظام ترقيم الإصدارات الفردي-الزوجي الشائع في لينكس.

يظهر برنامج Wget في فيلم " الشبكة الاجتماعية" الذي أنتجته شركة كولومبيا بيكتشرز عام 2010. الشخصية الرئيسية، وهي نسخة خيالية إلى حد ما من مارك زوكربيرج ، أحد مؤسسي فيسبوك ، تستخدم برنامج Wget لجمع صور الطلاب من مختلف أدلة مرافق السكن بجامعة هارفارد .

إصدارات بارزة

تمثل الإصدارات التالية محطات بارزة في تطوير برنامج Wget. تم اختصار الميزات المذكورة بجانب كل إصدار، ولا تُشكل معلومات شاملة عنه، والتي تتوفر في ملف NEWS الموزع مع برنامج Wget. [ 4 ]

  • كان برنامج Geturl 1.0، الذي صدر في يناير 1996، أول إصدار متاح للجمهور. ويمكن تتبع أول إعلان باللغة الإنجليزية إلى منشور إخباري على يوزنت، والذي يُرجح أنه يشير إلى Geturl 1.3.4 الذي صدر في يونيو. [ 11 ]
  • كان الإصدار Wget 1.4.0، الذي صدر في نوفمبر 1996، أول إصدار يستخدم اسم Wget . وكان أيضًا أول إصدار يتم توزيعه بموجب شروط رخصة جنو العمومية العامة (GPL) ، بينما تم توزيع برنامج Geturl بموجب ترخيص مخصص بدون ضمان .
  • كان Wget 1.4.3، الذي صدر في فبراير 1997، هو الإصدار الأول الذي تم إصداره كجزء من مشروع GNU مع حقوق الطبع والنشر المخصصة لمؤسسة البرمجيات الحرة (FSF) .
  • شكّل إصدار Wget 1.5.3، الذي صدر في سبتمبر 1998، علامة فارقة في انتشار البرنامج. وقد تم تضمين هذا الإصدار مع العديد من توزيعات لينكس ، مما ساهم في تعريف جمهور أوسع بكثير بالبرنامج.
  • تم تضمين Wget 1.6، الذي صدر في ديسمبر 1999، العديد من إصلاحات الأخطاء للإصدار 1.5.3 (الذي أصبح قديمًا آنذاك)، ويعود الفضل في ذلك إلى حد كبير إلى جهود دان هاركليس.
  • قدم الإصدار 1.7 من برنامج Wget، الذي صدر في يونيو 2001، دعم SSL وملفات تعريف الارتباط والاتصالات الدائمة .
  • أضافت النسخة 1.8 من برنامج Wget، التي صدرت في ديسمبر 2001، ميزة تقييد عرض النطاق الترددي ، ومؤشرات التقدم الجديدة، واجتياز الرسم البياني للارتباط التشعبي بالعرض أولاً .
  • تضمنت النسخة 1.9 من برنامج Wget، التي صدرت في أكتوبر 2003، دعمًا تجريبيًا لبروتوكول IPv6 ، والقدرة على إرسال البيانات إلى خوادم HTTP باستخدام POST.
  • أضاف الإصدار 1.10 من برنامج Wget، الذي صدر في يونيو 2005، دعمًا للملفات الكبيرة ، ودعمًا لبروتوكول IPv6 على الأنظمة ثنائية العائلة، ومصادقة NTLM ، وتحسينات على بروتوكول SSL . وتولى ماورو تورتونيسي مسؤولية صيانة البرنامج.
  • انتقل برنامج Wget 1.11، الذي صدر في يناير 2008، إلى الإصدار الثالث من رخصة جنو العمومية العامة ، وأضاف دعمًا أوليًا لرأس Content-Dispositionالملف، الذي غالبًا ما تستخدمه برامج CGI النصية للإشارة إلى اسم الملف المراد تنزيله. كما أُجريت تحسينات أمنية على رمز مصادقة HTTP. وتولى ميكا كوان مسؤولية صيانة المشروع.
  • أضافت النسخة 1.12 من برنامج Wget، التي صدرت في سبتمبر 2009، دعمًا لتحليل عناوين URL من محتوى CSS على الويب، وللتعامل مع معرفات الموارد الدولية .
  • يدعم الإصدار 1.13 من برنامج Wget، الذي صدر في أغسطس 2011، بروتوكول HTTP/1.1، وقد عالج بعض مشكلات قابلية النقل، واستخدم مكتبة GnuTLS افتراضيًا للاتصالات الآمنة. [ 12 ]
  • قام الإصدار Wget 1.14، الذي صدر في أغسطس 2012، بتحسين دعم TLS وإضافة دعم لمصادقة الوصول إلى ملخص RFC 2617 . 
  • أضافت النسخة 1.15 من برنامج Wget، التي صدرت في يناير 2014، --https-onlyدعمًا Perfect-Forwardللسرية.
  • قام Wget 1.16، الذي تم إصداره في أكتوبر 2014، بتغيير إخراج شريط التقدم الافتراضي، وإغلاق CVE - 2014-4877 ، وإضافة دعم لـ libpsl للتحقق من نطاقات ملفات تعريف الارتباط، وتقديم --start-pos للسماح ببدء التنزيلات من موضع محدد.
  • قام برنامج Wget 1.17، الذي تم إصداره في نوفمبر 2015، بإزالة خاصية التبديل السلبي إلى النشط في بروتوكول نقل الملفات (FTP) بسبب مخاوف تتعلق بالخصوصية، وأضاف دعمًا لبروتوكول FTPS و --if-modified-since.
  • قام الإصدار Wget 1.18، الذي صدر في يونيو 2016، بحل مشكلة CVE - 2016-4971 ، وأضاف الخيارات و .--bind-dns-address--dns-servers
  • أضاف الإصدار 1.19 من Wget، الذي صدر في فبراير 2017، خيارات جديدة لمعالجة ملف Metalink؛ وأضاف الإصدار 1.19.1 خيار --retry-on-http-errorإعادة محاولة التنزيل إذا استجاب خادم الويب برمز حالة HTTP معين.
  • تمت إضافة Wget 1.20، الذي تم إصداره في نوفمبر 2018، --retry-on-host-errorلمزيد من الموثوقية --accept-regexوخيارات --reject-regexلعمليات استرجاع FTP المتكررة.

Wget2

تم إصدار GNU Wget2 2.0.0 في 26 سبتمبر 2021. وهو مرخص بموجب رخصة GPL-3.0 أو أحدث ، ويعمل ضمن بيئة Libwget المرخصة بموجب رخصة LGPL-3.0 أو أحدث . [ 14 ] يتميز Wget2 بالعديد من التحسينات مقارنةً بـ Wget، وخاصةً أنه في كثير من الحالات، يكون التنزيل أسرع بكثير من Wget1.x بفضل دعمه للبروتوكولات والتقنيات التالية: [ 15 ]

لقطة شاشة لبرنامج GWget 1.0.4 على نظام فيدورا الإصدار 12 مع تثبيت بيئة سطح المكتب جنوم الإصدار 2.28.2

GWget

GWget هو برنامج مجاني بواجهة مستخدم رسومية لبرنامج Wget. تم تطويره بواسطة ديفيد سيدينو فرنانديز بالاعتماد على حزمة برامج جنوم . يدعم GWget جميع الميزات الرئيسية التي يوفرها Wget، بالإضافة إلى التنزيلات المتوازية. [ 16 ]

كليجيت

كليجيت هو برنامج تنزيل إضافات مفتوح المصدر لمتصفح فايرفوكس ، يستخدم مكتبات Curl وWget وAria2. وقد طوّره زيد عبد الله. [ 17 ] [ 18 ] [ 19 ]

المستنسخون

توجد نسخ مقلدة من برنامج GNU Wget مخصصة للأنظمة المدمجة ، والتي غالباً ما تكون محدودة في الذاكرة والتخزين. وهي تدعم أبسط خياراته، والتي تقتصر عادةً على التنزيل.

انظر أيضاً

ملحوظات

  1. رخصة جنو العمومية 3.0 أو أحدث مع استثناء OpenSSL.

مراجع

  1. دارشيت شاه (11 نوفمبر 2024). "تم إصدار wget-1.25.0 [ مستقر ] " . تم الاطلاع عليه بتاريخ 11 نوفمبر 2024 .
  2. 1 2 "ملف README" . تم الاطلاع عليه في 1 ديسمبر 2014 .
  3. 1 2 سكريفانو، جوزيبي (6 أغسطس 2012). "إصدار GNU wget 1.14" . إصدار GNU wget 1.14 . مؤسسة البرمجيات الحرة . تم الاطلاع عليه بتاريخ 25 فبراير 2016 .
  4. ١ ٢ " أخبار GNU Wget - تاريخ التغييرات المرئية للمستخدم" . Svn.dotsrc.org. ٢٠ مارس ٢٠٠٥. مؤرشف من الأصل في ١٣ مارس ٢٠٠٧. تم الاطلاع عليه في ٨ ديسمبر ٢٠١٢. Wget ١.٤.٠ [المعروف سابقًا باسم Geturl] هو إعادة كتابة شاملة لـ Geturl.
  5. "Wget - مشروع جنو" . 30 نوفمبر 2018. تم الاطلاع عليه بتاريخ 30 نوفمبر 2018 .
  6. "لماذا تحصل مؤسسة البرمجيات الحرة على تنازلات حقوق النشر من المساهمين - مشروع جنو - مؤسسة البرمجيات الحرة (FSF)" . Gnu.org . تم الاطلاع عليه بتاريخ 8 ديسمبر 2012 .
  7. 1 2 "Gmane Loom" . News.gmane.org. مؤرشف من الأصل في 9 يناير 2013. تم الاطلاع عليه في 8 ديسمبر 2012 .
  8. "إرشادات التصحيح - موسوعة Wget Wgiki" . Wget.addictivecode.org. 22 سبتمبر 2009. تم الاطلاع عليه بتاريخ 8 ديسمبر 2012 .
  9. "RepositoryAccess" . 31 يوليو 2012. تم الاطلاع عليه في 7 يونيو 2013 .
  10. "RepositoryAccess" . 22 مايو 2010. تم الاطلاع عليه في 20 يونيو 2010 .
  11. نيكسيتش، هرفوي (24 يونيو 1996). "Geturl: برنامج للتنزيل غير التفاعلي" . comp.infosystems.www.announce . تم الاطلاع عليه بتاريخ 17 نوفمبر 2016 .
  12. "/wget/trunk : محتويات NEWS في المراجعة 2608" . bzr.savannah.gnu.org . 
  13. تيم روهسن (4 يناير 2026). "إصدار wget2-2.2.1" . تم الاطلاع عليه بتاريخ 4 يناير 2026 .
  14. 1 2 "تم إصدار GNU Wget2 2.0.0" . gnu.org . 26 سبتمبر 2021.
  15. "wget2" . GitLab .
  16. "الصفحة الرئيسية لـ GWget" . 22 مارس 2013.
  17. "zaidka/cliget" . GitHub . تم الاطلاع عليه بتاريخ 25 أغسطس 2016 .
  18. "تعرّف على مطوّر cliget :: إضافات لمتصفح Firefox" . addons.mozilla.org . مؤرشف من الأصل بتاريخ 21 سبتمبر 2016. تم الاطلاع عليه بتاريخ 25 أغسطس 2016 . 
  19. "cliget" . addons.mozilla.org . تم الاطلاع عليه بتاريخ 25 أغسطس 2016 .
  20. "git.openwrt.org Git - project/uclient.git/summary" . git.openwrt.org . مؤرشف من الأصل في 6 أكتوبر 2021. تم الاطلاع عليه في 6 أكتوبر 2021 .
  21. 1 2 "landley/toybox" . 6 أكتوبر 2021 عبر GitHub.