بناء محرك بحث خاص باستخدام SearXNG: تجربتي في تطوير GernataXNG خطوة بخطوة
📌 بطاقة المقال السريعة
- موضوع المقال: دليل عملي يشرح كيفية إنشاء وتخصيص محرك بحث خاص باستخدام SearXNG مع Docker وTor وتحسين الأداء والخصوصية.
- التقنيات المستخدمة: SearXNG, Docker Compose, Tor Network, Python Custom Plugin, Caching.
- المستهدف: المطورون والمفكرون المهتمون بالخصوصية والاستضافة الذاتية (Self-Hosting).
- رابط المعاينة الحية: GernataXNG Engine
لطالما تساءلت: هل يمكن إنشاء محرك بحث خاص يحافظ على الخصوصية دون التضحية بسرعة الوصول إلى النتائج؟ كان هذا السؤال بداية تجربة انتهت ببناء محرك GernataXNG اعتماداً على مشروع SearXNG المفتوح المصدر.
في هذا المقال، أشارككم التوثيق الكامل لرحلة بناء وتخصيص محرك بحث مخصص على مزاجي؛ بدءاً من اختيار الأدوات، مروراً بحل مشاكل الحظر والبطء هندسياً، ووصولاً إلى تصميم الواجهة وإطلاق النسخة النهائية.
📑 جدول المحتويات
- 1. كيف تعمل محركات البحث؟ ولماذا اخترت Meta Search Engine؟
- 2. مقارنة المشاريع المفتوحة المصدر: لماذا SearXNG؟
- 3. الاستضافة والتشغيل عبر Docker
- 4. تصميم واجهة GernataXNG وتجربة المستخدم
- 5. مشكلة الحظر والتغلب عليها عبر شبكة Tor
- 6. هندسة الأداء: Two-Stage Fetch و Caching و Skip Waiting
- 7. تحسين ترتيب النتائج بواسطة Plugin مخصص
- 8. تقييم الخصوصية والأمان
- 9. مقارنة بين Google و GernataXNG
- 10. ماذا تعلمت من هذه التجربة؟
- 11. هل أنصح باستخدام SearXNG؟
- الأسئلة الشائعة (FAQ)
- الخلاصة: هل أصبح مناسباً أكثر لاحتياجاتي من Google؟
1. كيف تعمل محركات البحث؟ ولماذا اخترت Meta Search Engine؟
يمكن تبسيط عمل محرك البحث على أنه نظام يستقبل الكلمات المفتاحية، ثم يبحث عنها داخل فهرس أنشأه مسبقاً، وبعدها يرتب النتائج وفق خوارزميات متعددة قبل عرضها للمستخدم.
ولمعرفة أماكن المواقع والتحديثات، تستخدم المحركات برمجيات تسمى الكرولرز (Crawlers) أو "العناكب"؛ وهي برامج تنتقل بين الصفحات عبر الروابط وتسجل ما تجده داخل الفهرس. (ولمن يرغب في التوسع في كيفية عمل هذه المنظومة بالتفصيل، يمكنكم قراءة مقالنا السابق عن آلية عمل محركات البحث وكيفية أرشفة الصفحات).
بناء محرك بحث كامل بهذه الآلية أمر معقد ومكلف جداً، لذا كان الخيار الأذكى هو بناء Meta Search Engine (محرك بحث هجين)؛ وهو طبقة برمجية تعمل فوق محركات البحث الموجودة بالفعل؛ تأخذ استعلامك، ترسله لعدة محركات، ثم تجمع النتائج وتعرضها في واجهة موحدة تراعي الخصوصية.
2. مقارنة المشاريع المفتوحة المصدر: لماذا SearXNG؟
قبل الاستقرار على المشروع النهائي، قمت بمفاضلة عدة حلول مفتوحة المصدر:
- Whoogle: كان خياراً ممتازاً لجلب نتائج جوجل بدون إعلانات، لكنه توقف عن العمل بعد أن تغيرت الطريقة التي كان يعتمد عليها لجلب نتائج البحث.
- 4get: مشروع خفيف وسريع ويجمع من محركات عدة، وكان قريباً جداً مما أبحث عنه.
- SearXNG: الخيار المتكامل؛ يجمع النتائج من محركات متعددة، يتيح تحكماً كاملاً في الخصوصية، ويقبل التخصيص والتطوير البرمجي بسهولة.
بناءً على هذه المقارنة، تقرر اعتماد SearXNG كنواة للمشروع لتطوير نسخة GernataXNG.
3. الاستضافة والتشغيل عبر Docker
لتشغيل النسخة المبدئية، استخدمت جهازي المحمول (Laptop) كسيرفر محلي متصل بنفس شبكة الراوتر المنزلية مع الكمبيوتر الرئيسي.
استخدمت Docker لأنه يسمح بتشغيل المشروع داخل حاوية مستقلة يسهل تحديثها ونقلها وإعادة تشغيلها دون التأثير على بيئة النظام الأساسي. كما ساعدني Docker على تجربة التعديلات وإعادة تشغيل المشروع بسرعة دون الحاجة إلى إعادة إعداد البيئة في كل مرة.
يعتمد المشروع الرسمي على Docker Compose، لذلك لم أحتج إلى تثبيت SearXNG يدوياً أو إعداد خدماته واحدة تلو الأخرى، بل تم تشغيل جميع المكونات اللازمة داخل حاويات Docker بطلب واحد:
git clone https://github.com/searxng/searxng-docker.git
cd searxng-docker
docker-compose up -d
بعد تشغيل الحاويات تأكدت من أن جميع الخدمات تعمل بشكل صحيح عبر Docker Compose، ثم بدأت بتعديل ملفات الإعدادات (configuration) الخاصة بـ SearXNG لإضافة محركات البحث (search engines) المطلوبة وتعطيل المحركات التي لا تناسب احتياجات المشروع.
4. تصميم واجهة GernataXNG وتجربة المستخدم
الواجهة الافتراضية لـ SearXNG كانت تحتاج إلى إعادة هيكلة لتتناسب مع الرؤية البصرية المستهدفة، حيث شملت التعديلات:
- تغيير الشعار والألوان: إدراج الشعار الخاص واستبدال لوحة الألوان بألوان داكنة مريحة للعين (Dark Mode).
- اختيار الخلفية: تجربة عدة خلفيات هندسية وتفاعلية للوصول إلى المظهر الأكثر ملاءمة.
- تبسيط صفحة النتائج: إزالة التفاصيل المزدحمة والعناصر غير الضرورية لتركز العين على النتيجة مباشرة.
يمكنكم معاينة النسخة الحية والتفاعلية للمحرك بعد التعديلات عبر الرابط التالي: GernataXNG Engine.
5. مشكلة الحظر والتغلب عليها عبر شبكة Tor
أثناء التجربة، ظهرت مشكلة حظر الطلبات القادمة من السيرفر بواسطة محركات مثل Startpage و DuckDuckGo باعترافها كـ Bot.
تم حل المشكلة بتوجيه طلبات هذين المحركين حصراً عبر شبكة Tor باستغلال عناوينهما الرسمية على الشبكة (Onion Services)، مما أخفى IP السيرفر الأصلي، بينما بقية المحركات تتصل بشكل مباشر لضمان السرعة.
[ المستخدم ]│▼[ GernataXNG ]│├──────── Google (اتصال مباشر)├──────── Brave (اتصال مباشر)├──────── Bing (اتصال مباشر)└──────── Tor Network│▼Startpage / DuckDuckGo (.onion)
6. هندسة الأداء: Two-Stage Fetch و Caching و Skip Waiting
لتفادي البطء الناتج عن شبكة Tor وعدم انتظار المحركات البطيئة، تم تطبيق الحلول التالية:
[ إرسال طلب البحث ]│▼[ المرحلة الأولى: المصادر السريعة المباشرة ] ──(خلال 1.5 ثانية)──► [ عرض النتائج ]│▼ (إذا لم تكفِ النتائج)[ المرحلة الثانية: طلب نتائج Tor ]│▼[ دمج النتائج - حد أقصى للانتظار 5 ثوانٍ ]
- Two-stage Fetch: البدء بأسرع المصادر المباشرة أولاً، وإذا لم تتوفر نتائج كافية خلال 1.5 ثانية، يتم استدعاء محركات Tor كعامل مساعد.
- نظام Caching: عند تكرار البحث عن نفس الاستعلام خلال فترة قصيرة، تُعرض النتائج مباشرة من ذاكرة التخزين المؤقت دون إعادة إرسال الطلب إلى محركات البحث.
- صفحة التحميل وزر Skip Waiting: إضافة صفحة تحميل تعرض حالة كل محرك أثناء الجلب، مع زر يتيح للمستخدم تخطي المحركات المتبقية والاكتفاء بالنتائج الجاهزة.
بعد تطبيق هذه الآلية انخفض الزمن الذي ينتظره المستخدم لظهور أول مجموعة من النتائج بشكل ملحوظ، بينما أصبحت النتائج القادمة من المصادر الأبطأ تندمج لاحقاً دون تعطيل تجربة البحث.
7. تحسين ترتيب النتائج بواسطة Plugin مخصص
في نتائج البحث العادية، عند البحث عن اسم موقع معروف، قد تظهر مقالات تتحدث عنه بدلاً من موقع الشركة الرئيسي.
لعلاج ذلك، تم تطوير Plugin مخصص؛ فعلى سبيل المثال، عند البحث عن كلمة "Google" كانت بعض المقالات الإخبارية تظهر قبل الموقع الرسمي، لذلك طورت Plugin يتحقق من النطاق الرسمي ويمنحه أولوية أعلى إذا كان الاستعلام يشير إلى العلامة التجارية نفسها، حيث يعيد ترتيب النتائج بعد انتهاء عملية التجميع (Post-processing) لضمان بروز الرابط الأساسي أولاً.
8. تقييم الخصوصية والأمان
يقدم مشروع GernataXNG مستوى مرتفعاً من الخصوصية مقارنة بالمحركات التجارية:
- يعمل المحرك كوسيط يقلل بشكل كبير من إمكانية ربط عمليات البحث بحسابك الشخصي أو رقم جهازك.
- لا يعتمد المشروع على أدوات التحليل الإعلانية والكوكيز المستخدمة في محركات البحث التجارية، مما يقلل كمية البيانات المرتبطة بالمستخدم.
- توفير بيئة بحث خفيفة وخالية من الإعلانات المستهدفة.
9. مقارنة بين Google و GernataXNG
يوضح الجدول التالي أبرز الفروق الجوهرية بين الاستخدام المباشر لمحركات البحث التجارية والنسخة المخصصة:
| الخاصية | GernataXNG (SearXNG) | |
|---|---|---|
| عدد محركات البحث | محرك واحد | عشرات المحركات |
| الخصوصية | منخفضة | مرتفعة |
| الإعلانات | نعم (مكثفة) | لا (خالي تماماً) |
| التتبع وسجل البحث | يعتمد على خدمات Google وتتبع الجلسات | أقل بكثير عند الإعداد الصحيح |
| مفتوح المصدر | ❌ | ✅ |
| يدعم محركات متعددة | ❌ | ✅ |
| الاستضافة الذاتية | ❌ | ✅ |
| التحكم بالواجهة | محدود جداً | كامل ومخصص بالكامل |
10. ماذا تعلمت من هذه التجربة؟
- ليست كل محركات البحث تسمح بجلب النتائج بسهولة: الحظر والتصدي للبوتات أمر معقد ويتطلب حلولاً هندسية مثل شبكة Tor.
- التوازن بين الخصوصية والسرعة أصعب مما توقعت: زيادة الطبقات الأمنية تزيد من أوقات الاستجابة، مما جعل نظام Caching وبحث المرحلتين ضرورياً.
- SearXNG مرن جداً: يقدم نواة صلبة ولكن القيمة الحقيقية تكمن في تخصيصه بناءً على احتياجاتك.
- Docker وفر ساعات طويلة من العمل: الإعداد عبر الحاوية سهل عمليات التحديث وتجربة الإضافات دون إفساد البيئة.
11. هل أنصح باستخدام SearXNG؟
أنصح به إذا كنت:
- تريد محرك بحث خاصاً بك مخصصاً حسب تفضيلاتك.
- تستضيف خدماتك بنفسك (Self-Hosting) وتفضل التحكم الكامل في بيئتك البرمجية.
- تهتم بالخصوصية وتريد التخلص من تتبع الشركات الكبرى والإعلانات.
- تريد التحكم الكامل في الواجهة والمصادر المستهدفة.
وقد لا يناسبك إذا:
- تبحث عن نتائج فورية ومباشرة جاهزة دون الحاجة لأي إعداد.
- لا تريد إدارة خادم أو سيرفر محلي وصيانته بنفسك.
- لا ترغب في متابعة التحديثات والصيانة الدورية للمشروع.
الأسئلة الشائعة (FAQ)
ما الفرق بين SearXNG و GernataXNG؟
SearXNG هو المشروع المفتوح المصدر الذي يمثل النواة الأساسية، بينما GernataXNG هو النسخة المخصصة والمعدلة برمجياً وبصرياً والتي شملت إعادة تصميم الواجهة، توجيه الطلبات عبر Tor، وبناء Plugin مخصص لترتيب النتائج.
هل يتطلب تشغيل SearXNG جهاز سيرفر قوي؟
لا، للاستخدام الشخصي يمكنك تشغيله على كمبيوتر محمول (Laptop) أو جهازي Raspberry Pi باستخدام Docker بدون مشاكل، لكنه قد يحتاج موارد أعلى إذا أتيح لعدد كبير من المستخدمين في وقت واحد.
هل يوفر SearXNG خصوصية كاملة؟
يوفر المحرك مستوى مرتفعاً جداً من الخصوصية بتعطيل كوكيز التتبع ويقلل بشكل كبير من إمكانية ربط عمليات البحث بهويتك، لكن درجة الأمان النهائية تعتمد أيضاً على بيئة الاستضافة التي يعمل عليها السيرفر وكيفية إدارته.
الخلاصة: هل أصبح مناسباً أكثر لاحتياجاتي من Google؟
بالنسبة لاستخدامي الشخصي، نعم. فالتجربة كانت أفضل لأنها تمنحني خصوصية أكبر، وواجهة خفيفة، وتحكماً كاملاً في طريقة عرض النتائج مرتبة حسب تفضيلي، وهي أمور أعتبرها أهم بالنسبة لي من بعض المزايا التي تقدمها المحركات التجارية.
تجدر الإشارة إلى أن هذه النسخة كانت موجهة أساساً للاستخدام الشخصي وعلى خادم محلي، لذلك فإن قدرتها على تحمل عدد كبير من المستخدمين في الوقت نفسه لم تكن الهدف الأساسي من المشروع، بل كانت تجربة هندسية لاستكشاف إمكانات SearXNG وتخصيصه.
لم يكن هدفي منافسة Google أو بناء محرك بحث عالمي، بل إثبات أن الأدوات مفتوحة المصدر مثل SearXNG تمنح أي مطور القدرة على إنشاء تجربة بحث خاصة به، مع تحكم كامل في الخصوصية والواجهة وآلية عرض النتائج، وهو ما حققه مشروع GernataXNG بالنسبة لي.