الوصول إلى الأجهزة على الويب

اختر واجهة برمجة التطبيقات المناسبة للاتصال بأي جهاز من اختيارك.

فادي مجدي
فرانسوا بوفورت

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

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

🕹 تلقّي أحداث الإدخال من هذا الجهاز

حاوِل الاستماع إلى حدثَي لوحة المفاتيح والمؤشر. إذا كان هذا الجهاز عبارة عن وحدة تحكّم في الألعاب، استخدِم واجهة برمجة تطبيقات Gamepad API لمعرفة الأزرار التي يتم الضغط عليها والمحاور التي يتم نقلها.

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

📸 الوصول إلى الصوت والفيديو من هذا الجهاز

استخدِم MediaDevices.getUserMedia() للحصول على محتوى صوتي وفيديوهات بث مباشر من هذا الجهاز والتعرّف على كيفية تسجيل الصوت والفيديو. يمكنك أيضًا التحكّم في العرض الشامل والإمالة والتكبير/التصغير في الكاميرا وغيرها من إعدادات الكاميرا، مثل السطوع والتباين، وحتى التقاط صور ثابتة. يمكن استخدام Web Audio لإضافة تأثيرات إلى الصوت، أو إنشاء عروض مرئية صوتية، أو تطبيق تأثيرات مكانية (مثل العرض الشامل). يمكنك الاطّلاع أيضًا على طريقة تحليل أداء تطبيقات Web Audio في Chrome.

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

🖨 الطباعة على هذا الجهاز

استخدِم window.print() لفتح مربع حوار المتصفح الذي يتيح للمستخدم اختيار هذا الجهاز كوجهة لطباعة المستند الحالي.

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

🔐 المصادقة باستخدام هذا الجهاز

استخدِم WebAuthn لإنشاء بيانات اعتماد مفتاح عام قوي ومصدَّق عليه وعلى نطاق المصدر باستخدام جهاز أمان الجهاز هذا لمصادقة المستخدمين. كما يتيح استخدام تقنية البلوتوث وNFC وأجهزة المصادقة U2F أو FIDO2 للتجوال عبر USB، والمعروفة أيضًا باسم مفاتيح الأمان، بالإضافة إلى أداة المصادقة على النظام الأساسي التي تتيح للمستخدمين المصادقة باستخدام بصمات الأصابع أو أقفال الشاشة. اطّلِع على القسم إنشاء أول تطبيق WebAuthn.

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

🗄 الوصول إلى الملفات على هذا الجهاز

استخدِم File System Access API لقراءة التغييرات وحفظها مباشرةً في الملفات والمجلدات على جهاز المستخدم. ويمكنك استخدام File API لتطلب من المستخدم اختيار الملفات المحلية من مربّع حوار المتصفّح ثم قراءة محتوى هذه الملفات، إن لم تكن متاحة.

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

🧲 الوصول إلى أجهزة الاستشعار على هذا الجهاز.

استخدِم واجهة برمجة التطبيقات العامة للمستشعر لقراءة قيم أداة الاستشعار الأولية من أجهزة استشعار الحركة (مثل مقياس التسارع أو الجيروسكوب) وأدوات الاستشعار في البيئة المحيطة (مثل الضوء المحيط ومقياس المغناطيسية). وفي حال عدم توفّرها، يمكنك استخدام الحدثَين DeviceMotion وDeviceOrientation للوصول إلى مقياس التسارع والجيروسكوب والبوصلة المدمجة في الأجهزة الجوّالة.

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

🛰 الوصول إلى إحداثيات نظام تحديد المواقع العالمي (GPS) على هذا الجهاز

يمكنك استخدام واجهة برمجة التطبيقات للموقع الجغرافي للحصول على خط العرض وخط الطول للموضع الحالي للمستخدم على هذا الجهاز.

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

🔋 التحقّق من مستوى شحن البطارية على هذا الجهاز

استخدِم البطارية API للحصول على معلومات المضيف حول مستوى شحن البطارية وتلقّي إشعارات عندما يتغيّر مستوى شحن البطارية أو حالة الشحن.

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

🛍 يمكنك التواصل مع هذا الجهاز عبر الشبكة.

في الشبكة المحلية، يمكنك استخدام واجهة برمجة التطبيقات للتشغيل عن بُعد لبث الصوت و/أو الفيديو على جهاز تشغيل عن بُعد (مثل تلفزيون ذكي أو مكبّر صوت لاسلكي) أو استخدام Presentation API لعرض صفحة ويب على شاشة ثانية (مثل شاشة ثانوية متصلة بكابل HDMI أو تلفزيون ذكي متصل لاسلكيًا).

إذا كان هذا الجهاز يعرض خادم ويب، استخدِم Fetch API و/أو WebSockets لجلب بعض البيانات من هذا الجهاز عن طريق الوصول إلى نقاط النهاية المناسبة. على الرغم من عدم توفر مقابس TCP وUDP على الويب، اطلع على WebTransport للتعامل مع اتصالات الشبكة التفاعلية والثنائية الاتجاه ومتعددة الإرسال. يمكن أيضًا استخدام WebRTC لتوصيل البيانات في الوقت الفعلي بالمتصفِّحات الأخرى باستخدام بروتوكول الند للند.

🧱 التعرّف على كيفية التواصل باستخدام جهازك.

إنّ خيار واجهة برمجة التطبيقات منخفضة المستوى التي يجب استخدامها يتم تحديده وفقًا لطبيعة اتصالك المادي بالجهاز. إذا كان الاتصال لاسلكيًا، جرِّب تقنية NFC على الويب للاطّلاع على اتصالات لاسلكية قصيرة المدى جدًا وتقنية Web Bluetooth للأجهزة اللاسلكية القريبة.

  • باستخدام تقنية NFC على الويب، يمكنك القراءة والكتابة على هذا الجهاز عندما يكون على مقربة من جهاز المستخدم (عادةً ما يكون من 5 إلى 10 سم أو 2 إلى 4 بوصة). تتيح لك أدوات مثل NFC TagInfo من NXP تصفح محتوى هذا الجهاز لأغراض الهندسة العكسية.

  • باستخدام تقنية البلوتوث على الويب، يمكنك الاتصال بهذا الجهاز عبر اتصال بلوتوث منخفض الطاقة. وينبغي أن يكون من السهل جدًا التواصل معها عند استخدام خدمات GATT الموحَّدة من البلوتوث (مثل خدمة البطارية) لأنّ سلوكها موثَّق بالكامل. وإذا لم يكن الأمر كذلك، فيجب عليك في هذه المرحلة إما العثور على بعض وثائق الأجهزة لهذا الجهاز أو إجراء هندسة عكسية لها. يمكنك استخدام أدوات خارجية مثل nRF Connect for Mobile وأدوات المتصفح المضمَّنة مثل الصفحة الداخلية about://bluetooth-internals في المتصفحات المستندة إلى Chromium لإجراء ذلك. يمكنك الاطّلاع على المقالة Reverse-Engineering a Bluetooth Lightulation (مصباح بلوتوث العكسي) من Uri Shaked. تجدر الإشارة إلى أنّ الأجهزة التي تتضمّن بلوتوث قد تستخدِم أيضًا بروتوكول HID أو البروتوكولات التسلسلية.

إذا كنت سلكيًا، فتحقق من واجهات برمجة التطبيقات هذه بالترتيب المحدد:

  1. من خلال WebHID، يُعدّ فهم تقارير HID وأدوات وصف التقارير من خلال المجموعات عاملاً أساسيًا لفهمك لهذا الجهاز. قد يكون هذا أمرًا صعبًا بدون وثائق البائع لهذا الجهاز. يمكن أن تساعدك أدوات مثل Wireshark في إجراء هندسة عكسية لها. يمكنك أيضًا استخدام تطبيق الويب HID Explorer لإرسال معلومات أجهزة HID إلى تنسيق يمكن للمستخدمين قراءته.

  2. من خلال برنامج Web Serial، بدون مستندات المورِّدين الخاصة بهذا الجهاز وما يتطلب من توافق هذا الجهاز، قد يصعب على هذا الجهاز ولكنه لا يزال ممكنًا مع التخمين. ويمكن إجراء الهندسة العكسية على هذا الجهاز من خلال التقاط حركة بيانات USB أولية باستخدام أدوات مثل Wireshark. يمكنك أيضًا استخدام تطبيق الويب "المحطة التسلسلية" لتجربة هذا الجهاز إذا كان يستخدم بروتوكولاً يمكن للإنسان قراءته.

  3. مع WebUSB، بدون وثائق واضحة لهذا الجهاز وما يوصي به USB من هذا الجهاز، فإن ذلك أمر صعب ولكن لا يزال من الممكن مع التخمين. شاهِد الفيديو بعنوان Exploring WebUSB وإمكاناته المشوّقة من "سوز هينتون". يمكنك أيضًا إجراء هندسة عكسية لهذا الجهاز من خلال التقاط عدد زيارات USB أولي وفحص أدوات وصف USB باستخدام أدوات خارجية مثل Wireshark وأدوات المتصفِّح المضمَّنة مثل الصفحة الداخلية about://usb-internals في المتصفّحات المستندة إلى Chromium.

شكر وتقدير

شكرًا لكل من رايلي غرانت وتوماس شتاينر وكايس باسك لمراجعة هذه المقالة.

تصوير داريا تريفانافا على Unسبلاش