كيفية الانتقال إلى Manifest V3 لملحقات Chrome

كيفية الانتقال إلى Manifest V3 لملحقات Chrome

كيفية الانتقال إلى Manifest V3 لملحقات Chrome PlatoBlockchain Data Intelligence. البحث العمودي. منظمة العفو الدولية.

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

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

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

لماذا يعد الانتقال إلى Manifest 3 مهمًا

Manifest V3 هي واجهة برمجة تطبيقات ستستخدمها Google في متصفح Chrome الخاص بها. إنه خليفة API الحالي ، Manifest V2 ، ويحكم كيفية تفاعل ملحقات Chrome مع المتصفح. يُدخل Manifest V3 تغييرات مهمة على قواعد الامتدادات ، بعضها سيكون الدعامة الأساسية الجديدة من V2 التي اعتدنا عليها.

الانتقال إلى Manifest V3 يمكن تلخيصها على هذا النحو:

  1. كان الانتقال مستمرًا منذ عام 2018.
  2. سيبدأ طرح Manifest V3 رسميًا في يناير 2023.
  3. بحلول حزيران (يونيو) 2023 ، لن تكون الإضافات التي تشغل Manifest V2 متاحة على سوق Chrome الإلكتروني.
  4. ستتم إزالة الإضافات التي لا تتوافق مع القواعد الجديدة المقدمة في Manifest V3 في النهاية من سوق Chrome الإلكتروني.

أحد الأهداف الرئيسية لـ Manifest V3 هو جعل المستخدمين أكثر أمانًا وتحسين تجربة المتصفح بشكل عام. في السابق ، كانت العديد من ملحقات المستعرض تعتمد على التعليمات البرمجية الموجودة في السحابة ، مما يعني أنه قد يكون من الصعب القيام بذلك تقييم ما إذا كان التمديد محفوفًا بالمخاطر. يهدف Manifest V3 إلى معالجة ذلك من خلال طلب الإضافات لاحتواء جميع التعليمات البرمجية التي سيتم تشغيلها ، مما يسمح لـ Google بمسحها ضوئيًا واكتشاف المخاطر المحتملة. كما يفرض على الإضافات طلب إذن من Google للتغييرات التي يمكنهم تنفيذها على المتصفح.

يعد البقاء على اطلاع دائم بانتقال Google إلى Manifest V3 لأنه يقدم قواعد جديدة للإضافات التي تهدف إلى تحسين أمان المستخدم وتجربة المتصفح العامة ، وستتم إزالة الإضافات التي لا تتوافق مع هذه القواعد في النهاية من Chrome Web متجر.

باختصار ، قد يكون كل عملك الشاق في إنشاء امتدادات تستخدم Manifest V2 هباءً إذا لم تقم بهذا الانتقال في الأشهر المقبلة.

٢٨ يونيو ٢٠٢٠ ٢٨
سيتم إيقاف دعم ملحقات Manifest V2 في قنوات Chrome's Canary و Dev و Beta. لن يسمح سوق Chrome الإلكتروني بعد الآن بنشر امتدادات Manifest V2 برؤية معينة على "عام". سيزيل سوق Chrome الإلكتروني جميع ملحقات Manifest V2 المتبقية.
سيكون البيان V3 مطلوبًا للشارة المميزة في سوق Chrome الإلكتروني. ستصبح امتدادات Manifest V2 الحالية المنشورة والمرئية بشكل عام غير مدرجة. سينتهي دعم Manifest 2 لجميع قنوات Chrome ، بما في ذلك القناة الثابتة ، ما لم يتم تمديد قناة Enterprise.

الاختلافات الرئيسية بين Manifest V2 و V3

هناك العديد من الاختلافات بين الاثنين ، وأنا أوصي بشدة بالقراءة دليل Chrome's "Migrating to Manifest V3"، إليك ملخص قصير ولطيف للنقاط الرئيسية:

  1. عمال الخدمة استبدال صفحات الخلفية في Manifest V3.
  2. يتم التعامل مع تعديل طلب الشبكة مع الإصدار الجديد declarativeNetRequest API في Manifest V3.
  3. في Manifest V3 ، يمكن للملحقات تنفيذ JavaScript المضمنة في الحزمة الخاصة بهم فقط ولا يمكنها استخدام التعليمات البرمجية المستضافة عن بُعد.
  4. يقدم Manifest V3 promise دعم العديد من الطرق ، على الرغم من أن عمليات الاسترجاعات لا تزال مدعومة كبديل.
  5. تعتبر أذونات المضيف في Manifest V3 عنصرًا منفصلاً ويجب تحديدها في ملف "host_permissions" الميدان.
  6. سياسة أمان المحتوى في Manifest V3 عبارة عن كائن به أعضاء يمثلون سياقات سياسة أمان المحتوى البديلة (CSP) ، بدلاً من سلسلة كما كانت في Manifest V2.

في بيان ملحق Chrome البسيط الذي يغير خلفية صفحة الويب ، قد يبدو هذا على النحو التالي:

// Manifest V2
{ "manifest_version": 2, "name": "Shane's Extension", "version": "1.0", "description": "A simple extension that changes the background of a webpage to Shane's face.", "background": { "scripts": ["background.js"], "persistent": true }, "browser_action": { "default_popup": "popup.html" }, "permissions": [ "activeTab", ], "optional_permissions": ["<all_urls>"]
}
// Manifest V3
{ "manifest_version": 3, "name": "Shane's Extension", "version": "1.0", "description": "A simple extension that changes the background of a webpage to Shane's face.", "background": { "service_worker": "background.js" }, "action": { "default_popup": "popup.html" }, "permissions": [ "activeTab", ], "host_permissions": [ "<all_urls>" ]
}

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

كيفية الانتقال بسلاسة إلى Manifest V3

لقد لخصت الانتقال إلى Manifest V3 في أربعة مجالات رئيسية. بالطبع ، في حين أن هناك العديد من الأجراس والصفارات في Manifest V3 الجديد الذي يجب تنفيذه من الإصدار القديم Manifest V2 ، فإن تنفيذ التغييرات في هذه المجالات الأربعة سيجعل امتداد Chrome على المسار الصحيح للانتقال النهائي.

المجالات الأربعة الرئيسية هي:

  1. تحديث البنية الأساسية للبيان الخاص بك.
  2. تعديل أذونات المضيف الخاص بك.
  3. قم بتحديث سياسة أمان المحتوى.
  4. تعديل معالجة طلب الشبكة الخاص بك.

مع هذه المجالات الأربعة ، ستكون أساسيات Manifest جاهزة للانتقال إلى Manifest V3. دعنا نلقي نظرة على كل من هذه الجوانب الرئيسية بالتفصيل ونرى كيف يمكننا العمل من أجل التحقق من امتداد Chrome في المستقبل من هذا الانتقال.

تحديث البنية الأساسية للبيان الخاص بك

يعد تحديث البنية الأساسية للبيان هو الخطوة الأولى في الانتقال إلى Manifest V3. أهم تغيير ستحتاج إلى إجرائه هو تغيير قيمة "manifest_version" عنصر ل 3، والذي يحدد أنك تستخدم مجموعة ميزات Manifest V3.

أحد الاختلافات الرئيسية بين Manifest V2 و V3 هو استبدال صفحات الخلفية بعامل خدمة تمديد واحد في Manifest V3. سوف تحتاج إلى تسجيل عامل الخدمة تحت "background" المجال ، باستخدام "service_worker" مفتاح وحدد ملف JavaScript واحد. على الرغم من أن Manifest V3 لا يدعم العديد من البرامج النصية للخلفية ، يمكنك اختياريًا إعلان عامل الخدمة كوحدة ES من خلال تحديد "type": "module"، والذي يسمح لك باستيراد المزيد من التعليمات البرمجية.

في مانيفست V3 ، ملف "browser_action" و "page_action" يتم توحيد الخصائص في ملف واحد "action" خاصية. سوف تحتاج إلى استبدال هذه الخصائص بـ "action" في البيان الخاص بك. وبالمثل ، فإن "chrome.browserAction" و "chrome.pageAction" يتم توحيد واجهات برمجة التطبيقات في واجهة برمجة تطبيقات "إجراء" واحدة في Manifest V3 ، وستحتاج إلى الترحيل إلى واجهة برمجة التطبيقات هذه.

// Manifest V2 "background": { "scripts": ["background.js"], "persistent": false
}, "browser_action": { "default_popup": "popup.html"
},
// Manifest V3 "background": { "service_worker": "background.js"
}, "action": { "default_popup": "popup.html"
}

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

تعديل أذونات المضيف الخاص بك

الخطوة الثانية في الانتقال إلى Manifest V3 هي تعديل أذونات المضيف. في Manifest V2 ، تحدد أذونات المضيف في ملف "permissions" في ملف البيان. في Manifest V3 ، تعتبر أذونات المضيف عنصرًا منفصلاً ، ويجب عليك تحديدها في ملف "host_permissions" الحقل في ملف البيان.

فيما يلي مثال على كيفية تعديل أذونات المضيف:

// Manifest V2 "permissions": [ "activeTab", "storage", "http://www.css-tricks.com/", ":///*" ]
// Manifest V3 "permissions": [ "activeTab", "scripting", "storage"
], "host_permissions": [ "http://www.css-tricks.com/" ], "optional_host_permissions": [ ":///*" ]

قم بتحديث سياسة أمان المحتوى

لتحديث CSP الخاص بامتداد Manifest V2 الخاص بك ليكون متوافقًا مع Manifest V3 ، ستحتاج إلى إجراء بعض التغييرات على ملف البيان الخاص بك. في Manifest V2 ، تم تحديد CSP كسلسلة في ملف "content_security_policy" مجال البيان.

في Manifest V3 ، أصبح CSP الآن كائنًا به أعضاء مختلفون يمثلون سياقات بديلة لـ CSP. بدلا من واحد "content_security_policy" ، سيتعين عليك الآن تحديد حقول منفصلة لـ "content_security_policy.extension_pages" و "content_security_policy.sandbox"، حسب نوع صفحات الامتداد التي تستخدمها.

يجب عليك أيضًا إزالة أي إشارات إلى المجالات الخارجية في ملف "script-src", "worker-src", "object-src"و "style-src" التوجيهات إذا كانت موجودة. من المهم إجراء هذه التحديثات على CSP لضمان أمان واستقرار امتدادك في Manifest V3.

// Manifest V2 "content_security_policy": "script-src 'self' https://css-tricks.com; object-src 'self'"
// Manfiest V3 "content_security_policy.extension_pages": "script-src 'self' https://example.com; object-src 'self'", "content_security_policy.sandbox": "script-src 'self' https://css-tricks.com; object-src 'self'"

تعديل معالجة طلب الشبكة الخاص بك

الخطوة الأخيرة في الانتقال إلى Manifest V3 هي تعديل معالجة طلب الشبكة. في Manifest V2 ، كنت ستستخدم ملف chrome.webRequest API لتعديل طلبات الشبكة. ومع ذلك ، يتم استبدال واجهة برمجة التطبيقات هذه في Manifest V3 بامتداد declarativeNetRequest API.

لاستخدام واجهة برمجة التطبيقات الجديدة هذه ، ستحتاج إلى تحديد ملف declarativeNetRequest الإذن في البيان الخاص بك وتحديث التعليمات البرمجية الخاصة بك لاستخدام واجهة برمجة التطبيقات الجديدة. أحد الاختلافات الرئيسية بين واجهتي API هو أن ملف declarativeNetRequest تتطلب واجهة برمجة التطبيقات منك تحديد قائمة بالعناوين المحددة مسبقًا لحظرها ، بدلاً من القدرة على حظر فئات كاملة من طلبات HTTP كما يمكنك باستخدام chrome.webRequest API.

من المهم إجراء هذه التغييرات في التعليمات البرمجية الخاصة بك للتأكد من أن امتدادك يستمر في العمل بشكل صحيح ضمن Manifest V3. فيما يلي مثال على كيفية تعديل البيان الخاص بك لاستخدام ملف declarativeNetRequest API في Manifest V3:

// Manifest V2 "permissions": [ "webRequest", "webRequestBlocking"
]
// Manifest V3 "permissions": [ "declarativeNetRequest"
]

ستحتاج أيضًا إلى تحديث كود الامتداد الخاص بك لاستخدام ملف declarativeNetRequest API بدلا من chrome.webRequest API.

جوانب أخرى تحتاج إلى التحقق منها

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

  • ترحيل البرامج النصية الخلفية إلى سياق تنفيذ عامل الخدمة: كما ذكرنا سابقًا ، يستبدل Manifest V3 صفحات الخلفية بعامل خدمة ملحق واحد ، لذلك قد يكون من الضروري تحديث البرامج النصية الخلفية للتكيف مع سياق تنفيذ عامل الخدمة.
  • توحيد **chrome.browserAction** و **chrome.pageAction** واجهات التطبيق البرمجية: يتم توحيد هاتين واجهتي برمجة التطبيقات المكافئتين في واجهة برمجة تطبيقات واحدة في Manifest V3 ، لذلك قد يكون من الضروري الترحيل إلى Action API.
  • ترحيل الدالات التي تتوقع سياق خلفية Manifest V2: لا يتوافق اعتماد عمال الخدمة في Manifest V3 مع أساليب مثل chrome.runtime.getBackgroundPage(), chrome.extension.getBackgroundPage(), chrome.extension.getExtensionTabs()و chrome.extension.getViews(). قد يكون من الضروري الترحيل إلى تصميم يمرر الرسائل بين السياقات الأخرى وعامل خدمة الخلفية.
  • نقل طلبات CORS في نصوص المحتوى إلى عامل خدمة الخلفية: قد يكون من الضروري نقل طلبات CORS في نصوص المحتوى إلى عامل خدمة الخلفية من أجل الامتثال لـ Manifest V3.
  • الترحيل بعيدًا عن تنفيذ تعليمات برمجية خارجية أو سلاسل عشوائية: لم يعد Manifest V3 يسمح بتنفيذ المنطق الخارجي باستخدام chrome.scripting.executeScript({code: '...'}), eval()و new Function(). قد يكون من الضروري نقل جميع التعليمات البرمجية الخارجية (JavaScript و WebAssembly و CSS) إلى حزمة الملحقات وتحديث مراجع البرنامج النصي والنمط لتحميل الموارد من حزمة الملحقات واستخدامها chrome.runtime.getURL() لبناء عناوين URL للمورد في وقت التشغيل.
  • تحديث بعض أساليب البرمجة النصية و CSS في Tabs API: كما ذكرنا سابقًا ، تنتقل عدة طرق من Tabs API إلى Scripting API في Manifest V3. قد يكون من الضروري تحديث أي استدعاءات لهذه الطرق لاستخدام واجهة Manifest V3 API الصحيحة.

و أكثر من ذلك بكثير!

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

من ناحية أخرى ، إذا كنت جديدًا في برمجة ملحقات Chrome وتتطلع إلى البدء ، فإن الطريقة الرائعة للقيام بذلك هي الغوص في عالم أدوات مطور الويب في Chrome. لقد فعلت ذلك من خلال دورة تدريبية Linkedin التعلم، الأمر الذي جعلني أعمل على زيادة السرعة بسرعة كبيرة. بمجرد حصولك على هذه المعرفة الأساسية ، عد إلى هذه المقالة وترجم ما تعرفه إلى Manifest V3!

إذن ، كيف سأستخدم الميزات في Manifest V3 الجديد من الآن فصاعدًا؟

حسنًا ، بالنسبة لي ، الانتقال إلى Manifest V3 وإزالة chrome.webRequest يبدو أن واجهة برمجة التطبيقات تعمل على تحويل الامتدادات بعيدًا عن حالات الاستخدام المتمحورة حول البيانات (مثل أدوات منع الإعلانات) إلى استخدامات أكثر وظيفية وقائمة على التطبيقات. لقد ظللت بعيدًا عن تطوير التطبيقات مؤخرًا لأنه يمكن أن يصبح هادئًا موارد كثيفة في بعض الأحيان. ومع ذلك ، قد يكون هذا التحول هو ما يعيدني!

أدى ظهور أدوات الذكاء الاصطناعي في الآونة الأخيرة ، مع العديد من واجهات برمجة التطبيقات المتاحة للاستخدام ، إلى إطلاق الكثير من تطبيقات SaaS الجديدة والجديدة. أنا شخصياً أعتقد أنه يأتي في وقت مثالي مع التحول إلى المزيد من ملحقات Chrome القائمة على التطبيقات! في حين أن العديد من الامتدادات القديمة قد يتم محوها من هذا الانتقال ، فإن الكثير من الإضافات الجديدة المبنية حول أفكار SaaS الجديدة ستحل محلها.

وبالتالي ، يعد هذا تحديثًا مثيرًا للتنقل وتجديد الإضافات القديمة أو إنشاء ملحقات جديدة! أنا شخصياً أرى العديد من الاحتمالات في استخدام واجهات برمجة التطبيقات التي تتضمن استخدام الذكاء الاصطناعي في الإضافات لتحسين تجربة تصفح المستخدم. لكن هذا في الحقيقة مجرد غيض من فيض. إذا كنت تتطلع حقًا إلى الدخول في أشياء باستخدام الإضافات المهنية الخاصة بك أو الوصول إلى الشركات لإنشاء / تحديث ملحقات لها ، فإنني أوصي ترقية حساب Gmail الخاص بك للفوائد التي يوفرها في التعاون والتطوير ونشر الإضافات إلى سوق Chrome الإلكتروني.

ومع ذلك ، تذكر أن متطلبات كل مطور مختلفة ، لذا تعرف على ما تحتاجه للحفاظ على الإضافات الحالية قائمة أو استمرار الإضافات الجديدة!

الطابع الزمني:

اكثر من الخدع المغلق