الاستضافة الذاتية في نظام التشغيل Linux

Linux هو النظام الأساسي الوحيد الذي يمكن لمستخدمي Chrome من خلاله تثبيت الإضافات التي تتم استضافتها خارج سوق Chrome الإلكتروني توضّح هذه المقالة كيفية تجميع crx واستضافتها وتعديلها. من خادم ويب للأغراض العامة. إذا كنت توزّع إضافة أو مظهرًا فقط من خلال سوق Chrome الإلكتروني، استشر استضافة متجر الويب .

الحزمة

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

تنزيل ملف .crx من "سوق Chrome الإلكتروني"

في حال استضافة إضافة على "سوق Chrome الإلكتروني"، يمكن تنزيل ملف .crx من "سوق Chrome الإلكتروني". لوحة بيانات المطوِّر. حدِّد موقع الإضافة ضمن "بياناتك". وانقر على "مزيد من المعلومات" في جلسة المعمل، النافذة المنبثقة، انقر على الرابط main.crx الأزرق لتنزيلها.

تنزيل ملف .crx من "لوحة بيانات المطوّر"

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

إنشاء crx .على الجهاز

يتم تحويل أدلة الإضافات إلى ملفات .crx في صفحة إدارة الإضافات. الانتقال إلى chrome://extensions/ في المربّع المتعدد الاستخدامات، أو انقر على قائمة Chrome، اضغط مع الاستمرار على مؤشر الماوس فوق "المزيد من الأدوات" ثم حدد "الإضافات".

في صفحة إدارة الإضافات، فعِّل "وضع مطور البرامج" من خلال النقر على مفتاح التبديل بجانب وضع المطوِّر: بعد ذلك، انقر على الزر إضافة حزمة.

تم "فحص" وضع مطوّر البرامج ثم انقر على "حزمة الإضافة"

حدِّد المسار إلى مجلد الإضافة في حقل الدليل الجذري للإضافة، ثم انقر على زر إضافة حزمة. تجاهَل حقل المفتاح الخاص في حزمة المرة الأولى.

حدِّد مسار الإضافة ثم انقر على حزمة الإضافة.

سينشئ Chrome ملفَّين، ملف .crx وملف .pem يتضمّن الملف الخاص.

ملفات الإضافات المجمعة

لا تفقد المفتاح الخاص. الاحتفاظ بملف ".pem" في مكان سري وآمن هَتْكُونْ مطلوبة من أجل تحديث الإضافة.

تحديث حزمة crx.

عدِّل ملف .crx للإضافة من خلال زيادة رقم الإصدار في manifest.json.

{
  ...
  "version": "1.5",
  ...
  }
}
{
  ...
  "version": "1.6",
  ...
  }
}

ارجع إلى صفحة إدارة الإضافات وانقر على زر إضافة حزمة. تحديد إلى دليل الإضافات وموقع المفتاح الخاص.

تعديل ملفات الإضافات

ستوفر الصفحة مسار الإضافة المجمعة التي تم تحديثها.

تعديل ملفات الإضافات

إنشاء حزمة من خلال سطر الأوامر

إضافات الحِزم في سطر الأوامر عن طريق استدعاء chrome.exe استخدام --pack-extension لتحديد موقع مجلد الإضافة وعلامة --pack-extension-key لتحديد موقع ملف المفتاح الخاص للإضافة.

chrome.exe --pack-extension=C:\myext --pack-extension-key=C:\myext.pem

المضيف

يجب أن يستخدم الخادم الذي يستضيف ملفات .crx عناوين HTTP مناسبة للسماح للمستخدمين بتثبيت الإضافة بالنقر على أحد الروابط.

يعتبر Google Chrome ملفًا قابلاً للتثبيت إذا كان أي مما يلي صحيحًا:

  • نوع المحتوى في الملف هو application/x-chrome-extension
  • لاحقة الملف هي .crx وكلا الأمرَين التاليَين صحيحان:
    • لا يتم عرض الملف باستخدام عنوان HTTP X-Content-Type-Options: nosniff
    • يتم عرض الملف مع أحد أنواع المحتوى التالية:
    • سلسلة فارغة
    • "text/plain"
    • "application/octet-stream"
    • "unknown/unknown"
    • "application/unknown"
    • "\*/\*"

يرجع السبب الأكثر شيوعًا لتعذُّر التعرف على ملف قابل للتثبيت إلى أن الخادم يرسل الرأس X-Content-Type-Options: nosniff. السبب الثاني الأكثر شيوعًا هو أن الخادم يرسل نوع محتوى غير معروف، نوع غير موجود في القائمة السابقة لإصلاح مشكلة عنوان HTTP، يمكنك إما تغيير إعدادات الخادم أو محاولة استضافة ملف .crx على خادم آخر

تعديل

يتحقّق المتصفّح كل بضع ساعات من الإضافات المثبّتة بحثًا عن عنوان URL للتحديث. لكل منها، إرسال طلب إلى عنوان URL هذا بحثًا عن ملف بيان تحديث XML.

  • المحتوى الذي يعرضه البحث عن تحديثات هو مستند XML بيان تحديث يتضمن أحدث محتوى إصدار من الإضافة.

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

ملاحظة: للحفاظ على خصوصية المستخدم، لا يُرسل Google Chrome أي عناوين لملفات تعريف الارتباط تتضمّن طلبات بيان تحديث تلقائي، كما يتجاهل أي عناوين Set-Cookie في الردود على هذه الطلبات.

عنوان URL الخاص بالتحديث

يجب أن تشتمل الإضافات المستضافة على خوادم خارج "سوق Chrome الإلكتروني" على الحقل update_url في ملف manifest.json الخاص به.

{
  "name": "My extension",
  ...
  "update_url": "https://myhost.com/mytestextension/updates.xml",
  ...
}

تعديل البيان

يجب أن يكون بيان التحديث الذي يعرضه الخادم مستند XML.

<?xml version='1.0' encoding='UTF-8'?>
<gupdate xmlns='http://www.google.com/update2/response' protocol='2.0'>
  <app appid='aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'>
    <updatecheck codebase='https://myhost.com/mytestextension/mte_v2.crx' version='2.0' />
  </app>
</gupdate>

تم استعارة تنسيق XML هذا من الذي تستخدمه Omaha، وهي البنية الأساسية للتحديث في Google. تشير رسالة الأشكال البيانية الإضافات السمات التالية للعنصرين <app> و<updatecheck> تحديث البيان:

appid
يتم إنشاء رقم تعريف الإضافة استنادًا إلى تجزئة المفتاح العام، كما هو موضّح في الحزمة. يتم عرض معرّف الإضافة في صفحة إدارة الإضافات.
قاعدة الرموز
عنوان URL يستخدم HTTPS يؤدي إلى ملف .crx
إصدار
يستخدمه البرنامج لتحديد ما إذا كان يجب تنزيل ملف .crx المحدّد من خلال codebase. يجب أن تتطابق قيمة "version" مع قيمة "version" في الملف manifest.json الخاص بملف .crx.

قد يحتوي ملف XML الخاص ببيان التعديل على معلومات حول إضافات متعدّدة من خلال تضمين عدة إضافات. <app>.

الاختبار

يبلغ معدل التكرار التلقائي للبحث عن التحديثات عدة ساعات، ولكن يمكن فرض التحديث باستخدام زر الإضافات الآن في صفحة إدارة الإضافات.

تعديل الإضافات الآن

سيؤدي ذلك إلى بدء عمليات التحقّق من جميع الإضافات المثبّتة.

الاستخدام المتقدم: معلَمات الطلب

تم تصميم آلية التحديث التلقائي الأساسية لجعل العمل من جهة الخادم سهلاً مثل إزالة ملف XML ثابت على أي خادم ويب عادي، مثل Apache، وتعديل ملف XML هذا على أنّه جديد يتم طرح إصدارات من الإضافات.

قد يتحقّق المطوّرون الذين يستضيفون إضافات متعدّدة من معلَمات الطلب التي تشير إلى رقم تعريف الإضافة. والإصدار في طلب التحديث. يؤدي تضمين هذه المعلمات إلى السماح للإضافات بالتحديث من عنوان URL نفسه بتشغيل رمز ديناميكي من جهة الخادم بدلاً من ملف XML ثابت.

تنسيق معلَمات الطلب هو:

?x=EXTENSION_DATA

حيث يكون EXTENSION_DATA عبارة عن سلسلة مرمّزة بعنوان URL من التنسيق:

id=EXTENSION_ID&v=EXTENSION_VERSION

على سبيل المثال، تشير إضافتان إلى عنوان URL نفسه للتحديث (https://test.com/extension_updates.php):

  • الإضافة 1
    • المعرّف: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa،
    • الإصدار: "1.1"
  • الإضافة 2
    • المعرّف: "bbbbbbbbbbbbbbbbbbbbbbbbbbc bbbbbbbbbbbbbbbb
    • الإصدار: "0.4"

سيكون طلب تحديث كل إضافة فردية

https://test.com/extension_updates.php?x=id%3Daaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa%26v%3D1.1

و

https://test.com/extension_updates.php?x=id%3Dbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb%26v%3D0.4

يمكن إدراج عدة إضافات في طلب واحد لكل عنوان URL فريد للتحديث. بالنسبة إلى العنصر السابق على سبيل المثال، إذا تم تثبيت الإضافتين لدى المستخدم، سيتم دمج الطلبين في طلب واحد:

https://test.com/extension_updates.php?x=id%3Daaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa%26v%3D1.1&x=id%3Dbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb%26v%3D0.4

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

الاستخدام المتقدّم: الحد الأدنى لإصدار المتصفّح

عند إضافة المزيد من واجهات برمجة التطبيقات إلى نظام الإضافات، سيعمل إصدار محدَّث من الإضافة. مع الإصدارات الأحدث من المتصفح فقط. بينما يتم تحديث Google Chrome نفسه تلقائيًا، قد يستغرق الأمر بضعة أيام قبل تحديث غالبية قاعدة المستخدمين إلى أي إصدار جديد معيّن. إلى ضمان تطبيق تحديث معين فقط على إصدارات Google Chrome في مستوى أضف الإصدار "prodversionmin" إلى العنصر <app> في استجابة التحديث.

<?xml version='1.0' encoding='UTF-8'?>
<gupdate xmlns='http://www.google.com/update2/response' protocol='2.0'>
  <app appid='aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'>
    <updatecheck codebase='http://myhost.com/mytestextension/mte_v2.crx' version='2.0' prodversionmin='3.0.193.0'/>
  </app>
</gupdate>

سيضمن ذلك تحديث المستخدمين تلقائيًا إلى الإصدار 2 فقط في حال تشغيل Google Chrome. 3.0.193.0 أو أعلى.