عن المشروع
Glance هي خدمة تحليلات ويب ذاتية الاستضافة يتم شحنها كملف Go ثنائي واحد مدعوم بملف SQLite واحد، أو كحاوية Docker واحدة. لقد تم تحديد نطاقها عمداً لتشمل مجموعة صغيرة من الأرقام بدلاً من أن تكون منصة كاملة لتحليلات المنتجات: الزوار، مشاهدات الصفحات، الصفحات الأكثر زيارة، المراجع، الدول والمناطق، الأجهزة، المتصفحات، أنظمة التشغيل، والأحداث المخصصة البسيطة. لا توجد جلسات (sessions)، أو مسارات تحويل (funnels)، أو مجموعات (cohorts)، أو خرائط حرارية (heatmaps)، أو إعادة تشغيل للجلسات.
التتبع: تقوم المواقع بتضمين قصاصة برمجية خالية من ملفات تعريف الارتباط بحجم 1 كيلوبايت تقريباً يتم تقديمها من /glance.js. تقوم هذه القصاصة بإرسال جسم JSON صغير لكل مشاهدة صفحة باستخدام sendBeacon، وتعيد الإرسال عند حدوث pushState و popstate لتطبيقات الصفحة الواحدة (single-page apps). يمكن إطلاق أحداث مخصصة من الصفحة، مع قبول الخصائص ولكن يتم تجاهلها حالياً. يقوم الخادم بالتحقق من مضيف الصفحة مقابل نطاق الموقع، ويتجاهل البوتات المعروفة، والمتصفحات التي تحمل علامة webdriver، والأجسام ذات الحجم الزائد، ويجيب دائماً بـ 202. يتم قبول عناوين Localhost وشبكات LAN الخاصة بحيث يمكن اختبار الموقع قبل النشر. تشمل الأبعاد المشتقة المتصفح، ونظام التشغيل، والجهاز، والدولة، والمنطقة، وعلامات الحملات الإعلانية.
الخصوصية: لا توجد ملفات تعريف ارتباط ولا يتم تخزين عناوين IP. يتم تحديد الزائر من خلال هاش SHA-256 مقتطع من ملح يومي (daily salt) بالإضافة إلى الموقع وعنوان IP ووكيل المستخدم؛ يتغير الملح كل يوم بتوقيت UTC ويتم حفظه، لذا لا يمكن تتبع الزوار من يوم لآخر. يكون عدد زوار اليوم دقيقاً، بينما تمثل الإجماليات متعددة الأيام مجموع الزوار الفريدين يومياً. تأتي الدولة والمنطقة من ترويسة الدولة الوكيلة (proxy country header) عند وجودها، وإلا يتم استخلاصها من المنطقة الزمنية للمتصفح المحددة عبر جدول مشتق من IANA؛ المناطق هي جزء المدينة من تلك المنطقة، لذا لا توجد تقارير على مستوى المدينة. يتم اختزال المراجع إلى المضيف فقط، ويتم إعطاء أسماء مستعارة للمضيفين الشائعين.
البنية التحتية: تذهب الأحداث إلى قائمة انتظار في الذاكرة ولا تلمس قاعدة البيانات في مسار الطلب؛ يقوم goroutine كاتب بتثبيت القائمة كل ثانية أو كل 200 حدث في عملية واحدة. يتم إعادة بناء التجميعات الساعية واليومية من الأحداث الخام كل دقيقة وعند فتح لوحة التحكم، وتقرأ لوحة التحكم التجميعات فقط. يتم حذف الأحداث الخام بعد فترة احتفاظ (افتراضياً 7 أيام، بحد أدنى 2، ويمكن تعديلها إلى 90 ما لم يتم تثبيتها بواسطة متغير بيئة)؛ بينما يتم الاحتفاظ بالتجميعات إلى أجل غير مسمى. يتم جلب أيقونات المواقع (Favicons) بواسطة Glance نفسها من خلال حارس SSRF يرفض عناوين loopback والعناوين الخاصة وlink-local وعناوين carrier-grade NAT، وتستخدم الخريطة مخططات Natural Earth المدمجة التي يتم رندرها باستخدام MapLibre، لذا لا توجد حاجة لخدمات خارجية عند التشغيل.
لوحة التحكم و API: تعرض واجهة Svelte المدمجة كل موقع مع أيقونة، ورسم بياني خطي (sparkline) لمدة 14 يوماً، وعدد زوار هذا الأسبوع مقابل الأسبوع الماضي، مع إمكانية السحب لإعادة الترتيب. لكل موقع، تعرض الإجماليات مع التغيير مقابل النافذة الزمنية المماثلة السابقة من 24 ساعة إلى 180 يوماً، ومخططاً بيانياً، والأشخاص النشطين في آخر 30 دقيقة، وبطاقات تقسيم تبويب (الصفحات، المصادر، المواقع، الأجهزة، الأحداث)، وقوائم قابلة للتوسيع والتصفية، وكرة أرضية ثلاثية الأبعاد مباشرة لآخر خمس دقائق وخريطة نطاق، بالإضافة إلى إعدادات لكل موقع للاسم، والنطاق، والنطاق الافتراضي، ولون التمييز، والبلد الأم. تقع نقاط النهاية تحت /api/v1 وتغطي الجمع، والمواقع، والإحصائيات، والتقسيم، والبث المباشر، وأيقونات المواقع، والتجميع، والحالة، والإعدادات، والتصدير، وإدارة الرموز (tokens). يستخدم مصادقة المسؤول ملفات تعريف ارتباط الجلسة أو HTTP Basic؛ وتُخزن رموز API كهاشات وتكون للقراءة فقط.
إضافات: توفر نقطة نهاية Model Context Protocol للقراءة فقط في /mcp (Streamable HTTP) أدوات تشمل list_sites و overview و site_stats و breakdown و search_terms والإيرادات لوكلاء الذكاء الاصطناعي؛ لا يوجد نموذج لغوي كبير (LLM) داخل Glance. تضيف التكاملات الاختيارية مصطلحات بحث Google Search Console عبر OAuth (نطاق webmasters.readonly، يتم سحب بيانات 16 شهراً تقريباً عند الاتصال وتحديثها يومياً) وإيرادات Polar مع تذكر إسناد اللمسة الأولى في localStorage الخاص بمتصفح الزائر وتمريرها عبر بيانات الدفع الوصفية. تغطي إرشادات النشر Docker Compose وصور ghcr.io مسبقة البناء لـ linux/amd64 و linux/arm64، وملف compose منفصل للمضيفين من نوع Dokploy، والبناء من المصدر باستخدام Go 1.27 و Node 24 ومحرك SQLite مكتوب بلغة Go بالكامل. تبلغ مساحة الصورة المنشورة حوالي 37 ميجابايت وتستهلك في حالة الخمول أقل من 10 ميجابايت من الذاكرة. الترخيص: MIT.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.