ما هو المتصفح «بدون واجهة»؟ هل يساعد في عملية جمع البيانات أم يعيقها؟
المتصفح «بدون واجهة» هو متصفح ويب يفتقر إلى واجهة المستخدم الرسومية (GUI). ولا يحتوي على أي نافذة مرئية أو عنصر من عناصر واجهة المستخدم.
ما عليك سوى استخدام البرامج النصية للتعامل مع محتوى الصفحة.
وهذا يعني أنه يمكنك القيام بكل أنواع الأفعال السيئة.
لكننا سنقتصر اليوم على الحديث عن أنشطة «القبعة البيضاء» فقط.
ما الذي يميز المتصفح عديم الواجهة؟
- تفاعلات أسرع مع محتوى الويب – مما يعني أنه يمكنك الحصول على المزيد من البيانات التي تحتاجها.
- لا يتطلب تحميل الصفحة نفس القدر من النطاق الترددي أو الوقت – مما يعني أنك لن تضطر إلى الانتظار.
- يبدو الأمر رائعًا على غرار مسلسل «سليبي هولو» – وهو أمر رائع حقًّا.

ما هي استخدامات المتصفح عديم الواجهة؟
توفر المتصفحات عديمة الواجهة وصولاً سهلاً إلى نموذج كائنات المستند (DOM) لصفحة الويب، وهو أمر مفيد لمطوري الواجهة الأمامية الذين يستخدمون أطر عمل جافا سكريبت مثل AngularJS.
كما أنها تُستخدم عادةً لتحميل وتشغيل صفحات الويب الوظيفية على خادم بدون واجهة مستخدم أثناء الاختبار الآلي. ويُطلق على ذلك اسم «اختبار المتصفح بدون واجهة مستخدم».
اختبار المتصفح بدون واجهة مستخدم
يُعد «الاختبار بدون واجهة مستخدم» إحدى تقنيات الاختبار الآلي المستخدمة للتحقق من صحة صفحات الويب. حيث يتحكم برنامج ما في متصفح الويب باستخدام الأتمتة أو البرامج النصية أو أدوات أخرى، دون عرض العناصر الرسومية أو تنفيذ مكونات واجهة المستخدم المرئية. وقد تشمل أهداف اختبار المتصفح بدون واجهة مستخدم ما يلي:
- التحقق من صحة الترميز والمحتوى والتصميم في صفحة HTML/XHTML.
- التحقق من صحة نموذج ويب أو نموذج تسجيل الدخول.
- تقييم لغة جافا سكريبت فيما يتعلق بمعالجات الأحداث وعمليات AJAX.
الغرض من ذلك هو التحقق من عرض المحتويات الديناميكية على الشاشة مع ضبط موضعها بشكل صحيح، وما إلى ذلك.
تعمل المتصفحات عديمة الواجهة بشكل جيد مع البرامج الأخرى أيضًا. فإلى جانب الاختبار وتطوير الويب، يمكنها المساعدة في تسهيل عملية جمع البيانات.
استخراج البيانات باستخدام متصفح بدون واجهة مستخدم
يُعد «الاستخراج بدون واجهة» تقنيةً آليةً لاستخراج البيانات يمكنك استخدامها بالاقتران مع أداة استخراج البيانات من الويب.
متصفح في الوضع غير المرئي:
- يقوم باستخراج البيانات من المواقع الإلكترونية وتخزينها في دليل محلي على القرص.
- يستخرج عدة صفحات من معظم المواقع الإلكترونية الحديثة.
- يحاكي ملف تعريف وكيل المستخدم الضروري لتنفيذ عرض جافا سكريبت.
- يعمل بشكل أكثر كفاءة عند استخدام معلمات سطر الأوامر.
على سبيل المثال، تُستخدم المتصفحات عديمة الواجهة عادةً لاستخراج البيانات من الكتالوجات الإلكترونية، أو معلومات الأسعار من مواقع التجارة الإلكترونية، أو عناصر واجهة المستخدم/الأيقونات الخاصة بوسائل التواصل الاجتماعي المدمجة في موقع الشركة الإلكتروني.
ما هي بعض المتصفحات التي تعمل بدون واجهة مستخدم الشائعة؟

كروم بدون واجهة مستخدم
النسخة التي تعمل بدون واجهة مستخدم من متصفح «كروم» التابع لشركة «جوجل».
فايرفوكس بدون واجهة مستخدم
مشروع تابع لموزيلا يهدف إلى إنشاء نسخة «بدون واجهة مستخدم» من أحدث متصفح ويب تابع لها، مع دعم مفعَّل لـ WebGL و JavaScript.


HtlmUnit
إطار عمل للاختبار الوظيفي يستخدم متصفحات بدون واجهة مستخدم لتحميل صفحات الويب والتحقق من صحتها.
SimpleBrowser
متصفح بدون واجهة مستخدم تم تطويره باستخدام برمجيات Net 4، وهو قادر على تنفيذ أنشطة أتمتة المتصفح. لا يدعم هذا المتصفح لغة JavaScript، لكن يمكنك تعديل وكيل المستخدم، والمصدر المُحيل، ورؤوس الطلبات، وقيم النماذج، وغيرها من العناصر قبل الإرسال أو التنقل.


SlimerJS
مشروع من Mozilla يهدف إلى السماح باستخدام JavaScript و HTML5 في بيئة تشبه نظام الملفات. ويستخدم المشروع محرك Gecko (محرك المتصفح الذي يعمل عليه Firefox) كنواة له. وهذا سيمكّنه من دعم جميع واجهات برمجة تطبيقات JavaScript بشكل كامل (على سبيل المثال، حتى لو لم تكن مطبقة أو كانت غير مكتملة بأي شكل من الأشكال).
ZombieJS
يوفر «Zombie» واجهة برمجة تطبيقات (API) بلغة جافا سكريبت ويستخدم «Chromium». يمكن لـ «Chromium» العمل على صفحات ويب متنوعة، لكنه يُستخدم بشكل أساسي لاختبار واجهات برمجة تطبيقات DOM وسلوك مواقع الويب تلقائيًّا.

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

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


jsdom
تتطلب هذه المكتبة أيضًا حزمة تُسمى jsdom-global، تُستخدم لإنشاء الكائنات العالمية التي يحتاجها المتصفح عديم الواجهة.
محرك الدمى
تسهل مكتبة Puppeteer التحكم في متصفحي Chrome وChromium مقارنةً بمكتبات أخرى مثل Selenium/WebDriver. يمكنك تثبيتها باستخدام npm أو yarn في تطبيقات NodeJS لإجراء الاختبارات أو استخراج البيانات من صفحات الويب. وتوفر لك هذه المكتبة طرقًا لتحديد عنوان URL، وتنزيل الموارد، والتعامل مع ملفات تعريف الارتباط، وما إلى ذلك.

علينا أن نتذكر أن Puppeteer هي مكتبة تعتمد على الوعود: فهي تُجري استدعاءات غير متزامنة إلى مثيل Chrome الذي يعمل بدون واجهة مستخدم في «حجرة المحرك».

كابوس
تُستخدم هذه المكتبة في تطبيقات Electron. وهي تزود Electron بأدوات أتمتة يمكن للتطبيق استخدامها للتحكم في عملية متصفح Electron عبر اتصال عن بُعد.
السيلينيوم
تتوفر مجموعة محدودة من المكتبات الخاصة بـ JavaScript بدون واجهة مستخدم (headless) التي تستخدم واجهات ربط Selenium، مثل webdriver.js وselenium-webdriver.

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

أولاً، عليك تثبيت Puppeteer في دليل المشروع.
تثبيت Puppeteer
لاستخدام Puppeteer في متصفح بدون واجهة مستخدم، قم بتشغيل الأمر التالي:
npm i puppeteer
# or "yarn add puppeteer"
أو للحصول على نسخة مبسطة من Puppeteer، قم بتشغيل:
npm i puppeteer-core
# or "yarn add puppeteer-core"
كما ذكرنا أعلاه، يتم تشغيل كامل كود «puppeteer» في NodeJS. يتم تصديره كدالة مصنع (factory function) تعيد كائنًا يحتوي على طرق للتحكم في متصفح Chrome. يمكنك استخدامه لإنشاء مثيلات جديدة للمتصفح عبر طريقة launch، والانتقال إلى عناوين URL، ومعالجة الأحداث، وما إلى ذلك.
مقتطف الشفرة التالي مخصص لنص برمجي Puppeteer.
إذا كنت ترغب في زيارة ، فانتقل إلى https://example.com واحفظ لقطة شاشة باسمexample.png:
احفظ الملف باسمexample.js
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://example.com');
await page.screenshot({ path: 'example.png' });
await browser.close();
})();
تنفيذ البرنامج النصي عبر سطر الأوامر:
node example.js
إذا كنت ترغب في إنشاء ملف PDF:
احفظ الملف باسمhn.js.
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://news.ycombinator.com', {
waitUntil: 'networkidle2',
});
await page.pdf({ path: 'hn.pdf', format: 'a4' });
await browser.close();
})();
أمر سهل للغاية، أليس كذلك؟
المثال أعلاه ما هو إلا مقتطف بسيط من الكود. يمكنك الاطلاع على دليل تفصيلي حول Puppeteer للحصول على مزيد من المعلومات هنا.
ما هي بعض القيود التي تنطوي عليها استخدام أداة استخراج البيانات من الويب مع متصفح بدون واجهة مستخدم؟
عادةً ما تكون قدرتك على التحكم أقل عند استخدام خادم بدون واجهة مستخدم، حيث تتطلب العديد من المهام مكونات إضافية أو إعدادات يتم التعامل معها عبر متصفح ويب قياسي. على سبيل المثال، لا تدعم بعض المتصفحات التي تعمل بدون واجهة مستخدم محددات CSS، مما يجعل عملية استخراج البيانات من نموذج DOM أكثر صعوبة.
على الرغم من كفاءة المتصفح عديم الواجهة، إلا أن حجب المواقع قد يؤدي إلى إبطاء سرعة عملك. وبناءً على عدد الصفحات التي تخطط لاستخراجها، عليك التفكير في استخدام خدمة بروكسي. فخدمة البروكسي ستساعد في حماية عنوان IP الخاص بك من أي حجب محتمل.
أفضل الخوادم الوكيلة للاستخدام في الوضع بدون واجهة مستخدم
إذا تمت جميع مكالمات واجهة برمجة التطبيقات (API) وطلبات HTTP من نفس عنوان IP، فسيتم إيقاف العملية بأكملها.
أفضل البروكسيات التي يمكن استخدامها مع برامج استخراج البيانات من الويب هي البروكسيات الدورية. وبهذه الطريقة، يكون لكل مثيل متصفح عنوان IP مختلف.
تُعد البروكسيات السكنية المتناوبة، أو ما يُعرف بـ«بروكسيات الاتصال العكسي»، خيارًا مثاليًّا لاختبارات الأتمتة وتطبيقات الويب التي تعمل على جمع البيانات.
هل تريد معرفة المزيد عن الخوادم الوكيلة المستخدمة في استخراج البيانات من الويب باستخدام متصفح بدون واجهة مستخدم؟ اقرأ هذه المقالة لتتعرف على عدد الخوادم الوكيلة التي تحتاجها.

في هذا المقال، تحدثنا عن ماهية المتصفحات عديمة الواجهة (headless browsers) ولماذا قد تكون مفيدة لمن يرغبون في استخدامها كأداة لاستخراج البيانات.
إذا كانت لديك أي أسئلة إضافية حول المتصفحات عديمة الواجهة أو أي شيء يتعلق باستخراج البيانات من الويب، فلا تتردد في ترك تعليق أدناه!
الأسئلة الشائعة
كيف أبدأ؟
ما عليك سوى اختيار متصفح بدون واجهة مستخدم يناسب احتياجاتك في مجال أتمتة الويب. تتوفر مجموعة متنوعة من المتصفحات بدون واجهة مستخدم، مثل Headless Chromium وSlimerJS. ستحتاج أيضًا إلى مكتبة برمجية. فإذا كنت تخطط لاستخدام متصفح Chrome، على سبيل المثال، فستحتاج إلى تثبيت مكتبة Puppeteer.
لماذا سُمي هذا المتصفح بـ«المتصفح عديم الرأس»؟
لا يحتوي المتصفح غير المرئي على واجهة مستخدم رسومية (GLU)؛ والشيء الوحيد الذي ستراه أثناء تشغيله هو واجهة سطر الأوامر (CLI). ويستخدم مطورو الويب هذا النوع من المتصفحات لتنفيذ المهام الآلية مثل الاختبارات الوظيفية واستخراج البيانات من الويب.
تتيح لك واجهة سطر الأوامر (CLI) لمتصفحك عديم الواجهة تحميل مواقع الويب والتفاعل معها، من بين أمور أخرى. وهي تعمل أساسًا كخادم وكيل قابل للتكوين بدرجة كبيرة بينك وبين موقع (مواقع) الويب التي تقوم بتحميلها على خادمك عديم الواجهة. إذا كنت مبتدئًا في مجال استخراج البيانات من الويب أو المتصفحات عديمة الواجهة، فستعلمك هذه المقالة الأساسيات. وقد تكون مفيدة لك إذا كنت في بداية طريقك.
من الذي أنشأ «Headless Chrome»؟
«Headless Chrome» هو مشروع مفتوح المصدر تقوده شركة جوجل.
هل يمكنني استخدامه لأغراض أخرى غير استخراج البيانات الآلي من مواقع الويب؟
نعم! يمكنك استخدامه لإجراء الاختبارات الآلية والوظيفية. يجب أن تضع في اعتبارك جميع الخيارات المتاحة قبل أن تقرر أي خادم «بدون واجهة» يلبي احتياجاتك على أفضل وجه.
نظرًا لأن الغرض من المتصفحات عديمة الواجهة هو الأتمتة، فإنها تُعد أدوات رائعة لاستخراج البيانات، لا سيما عند استخدامها مع واجهة سطر الأوامر.
هل يمكنني تشغيل متصفحات بدون واجهة مستخدم من سطر الأوامر؟
نعم. تتيح لك العديد من الخوادم التي تعمل بدون واجهة مستخدم تشغيلها من واجهة سطر الأوامر الخاصة بها أو من خلال واجهة مستخدم ويب، مثل Chrome. وفي بعض الحالات، قد تضطر إلى استخدام كليهما للحصول على تحكم كامل في متصفحك الذي يعمل بدون واجهة مستخدم.
كيف أعرف ما إذا كان متصفح «بدون واجهة مستخدم» يعمل على جهازي؟
يمكنك التحقق من بنية النظام المحلي الذي تستخدمه ومقارنتها ببنية أي متصفحات عديمة الواجهة ترغب في استخدامها. بعض الخوادم عديمة الواجهة تعمل عبر الأنظمة المختلفة أو تدعم بنى متعددة، لكن ليس جميعها تعمل بهذه الطريقة. لذا، يجب عليك التحقق من ذلك قبل استخدام أي منها.
هل صحيح أن المتصفحات التي تعمل بدون واجهة مستخدم لا تدعم محددات CSS؟
وينطبق هذا على بعض الخوادم التي تعمل في الوضع غير المرئي (وليس جميعها)؛ وعلى وجه الخصوص، لا يدعم PhantomJS محددات CSS، في حين أن Headless Chrome يدعمها. وقد يختار مطورو كل متصفح يعمل في الوضع غير المرئي إضافة و/أو إزالة ميزات مختلفة في أي وقت، ولهذا السبب يجب عليك دائمًا التحقق قبل افتراض أي شيء.
هل تعمل المتصفحات عديمة الواجهة مع أكواد جافا سكريبت؟
في معظم الحالات، لا تواجه المتصفحات عديمة الواجهة أي مشاكل في تنفيذ أكواد جافا سكريبت. ويستخدم العديد من مطوري الويب المتصفحات عديمة الواجهة لأتمتة مهامهم، الأمر الذي يتطلب دعمًا كاملاً لجافا سكريبت لتحقيق أهدافهم.
نظرًا لأن المتصفحات التي تعمل بدون واجهة مستخدم لا تدعم جميعها لغة جافا سكريبت، فإنك تحتاج إلى البحث عن كل منها وتحديد ما إذا كانت ستلبي احتياجاتك المحددة أم لا.
هل صحيح أن بعض الخوادم التي لا تحتوي على وحدة معالجة مركزية (CPU) مزودة بواجهات برمجة تطبيقات (API)؟
نعم! تحتوي بعض الخوادم «التي تعمل بدون واجهة مستخدم» على واجهات برمجة تطبيقات (APIs) تتيح لك استخدامها بطرق مختلفة غير مجرد تحميل مواقع الويب عبر خادم بروكسي. يمكنك التحقق من أنواع واجهات برمجة التطبيقات التي يوفرها أي متصفح «يعمل بدون واجهة مستخدم» من خلال الاطلاع على وثائقها. وتعد هذه طريقة جيدة لتحديد ما إذا كان ينبغي عليك استخدامها مع أدوات استخراج البيانات من الويب أم لا، خاصةً إذا كانت واجهة برمجة تطبيقات البروكسي متاحة.
ما هي المتصفحات التي تعمل بدون واجهة مستخدم والتي تدعم محددات CSS؟
يدعم «Headless Chrome» حاليًا محددات CSS، في حين أن محرك WebKit الخاص بـ «PhantomJS» لا يدعمها. لمزيد من المعلومات حول تبعيات النظام، يمكنك زيارة هذا الموقع الإلكتروني.
لماذا لا تُعتبر جميع أدوات استخراج البيانات من الويب متصفحات عديمة الواجهة؟
تحاكي أدوات استخراج البيانات من الويب، مثل Scrapy، واجهة المستخدم (UI) لمتصفح الويب العادي من أجل استخراج البيانات من مواقع الويب. ومع ذلك، ونظرًا لأن هذه الأدوات لا تقوم بتحميل الصفحات في نافذة خاصة بها، فإننا لا نصنفها على أنها متصفحات عديمة الواجهة.
هل صحيح أنه لا يمكن استخدام المتصفحات التي تعمل بدون واجهة مستخدم لاستخراج البيانات من مواقع الويب المخصصة للأجهزة المحمولة؟
ليس من المؤكد أن تعمل المتصفحات غير المرئية على جميع صفحات المواقع الإلكترونية، لكنها قادرة على تشغيل معظمها دون مشاكل. أما المواقع المخصصة للأجهزة المحمولة، فغالبًا ما لا يتم تحميلها بشكل صحيح في الخوادم غير المرئية، حتى لو تمكنت من عرض الصفحة.
هل يمكنني اختبار متصفحاتي التي تعمل بدون واجهة مستخدم؟
من المفترض أن تتمكن من ذلك، لكن ليس هناك ما يضمن أن المتصفح غير المرئي سيعمل. ونظرًا لأن كل خادم غير مرئي يتمتع بوظائف وميزات مختلفة، فقد تضطر إلى تعديل أداتك الخاصة قبل أن تعمل بشكل صحيح.
على سبيل المثال البسيط، يتطلب متصفح «Chrome» بدون واجهة مستخدم وجود جافا سكريبت، بينما يتطلب «PhantomJS» وجود رؤوس CORS حتى يتم تحميل صفحات الويب بشكل صحيح.
ما هي بعض أفضل الممارسات التي يمكنني اتباعها عند استخراج البيانات باستخدام متصفح بدون واجهة مستخدم؟
يتمثل الهدف من «استخراج البيانات من الويب» عادةً في استخراج البيانات من مواقع الويب التي يتعذر الوصول إليها كليًّا أو جزئيًّا، دون الحاجة إلى إدخال أي بيانات يدويًّا في النماذج أو الأزرار.
إذا كنت ترغب في معرفة المزيد عن كيفية عمل استخراج البيانات من الويب، فاطلع على هذه المقالة.
يجب عليك استخدام المتصفح غير المرئي بطريقة أخلاقية. فالقدرة على استخراج البيانات من صفحات لا يمكن الوصول إليها كليًّا أو جزئيًّا ليست بالضرورة أمرًا سيئًا. ومع ذلك، قد تصبح كذلك إذا كان مالك الموقع لا يرغب في قيامك بذلك.
تأكد من مراجعة جميع شروط الخدمة وسياسة الخصوصية بعناية قبل القيام بجمع البيانات من أي صفحة ويب، لأن هذه الشروط قد تتغير دون إشعار مسبق.
ما هي المتصفحات التي تعمل بدون واجهة مستخدم والأفضل لاستخراج البيانات من الويب؟
يُعد كل من «Headless Chrome» و«PhantomJS» خيارين رائعين لاستخراج البيانات من الويب، نظرًا لسهولة استخدامهما وسرعتهما النسبية.
لماذا يفضل بعض المطورين استخدام متصفح بدون واجهة مستخدم بدلاً من المتصفح العادي؟
في بعض الأحيان، قد يكون من الضروري أو الأكثر ملاءمة استخدام متصفح بدون واجهة مستخدم بدلاً من المتصفح العادي، لكن هذا يعتمد عادةً على خصائص المشروع. على سبيل المثال، لنفترض أنك تريد استخراج البيانات من مواقع الويب التي تتطلب استخدام جافا سكريبت لتعمل بشكل صحيح. في هذه الحالة، سيكون الأمر أسهل باستخدام «Headless Chrome» مقارنةً بمتصفح «Google Chrome» العادي.
يوفر «Headless Chrome» إمكانيات تتبع أفضل مقارنة بالأدوات المماثلة الأخرى؛ وهو مفيد عند العمل على مشاريع متعددة.
