عن المشروع

إحصاءات الزوار هي نظام تتبع زوار خفيف الوزن يعتمد على Cloudflare Pages وWorkers وD1 وGitHub. الفكرة الأساسية هي تسجيل الزيارات عبر بكسل تتبع متنكر في صورة، حيث تُستضاف الصورة والواجهة الأمامية على حافة Cloudflare، وتُحفظ السجلات بشكل دائم في D1، ويمكن دفع إشعارات فورية عبر Telegram. تشمل الوظائف الرئيسية رفع بكسل التتبع وتضمينه، وتسجيل سجلات مفصلة للوقت وعنوان IP والموقع والمشغل والجهاز والنظام والمتصفح والمصدر، ونطاقات إحصائية مرنة تدعم اليوم و7 أيام و30 يوماً و3 أشهر وسنة مع إمكانية التصفية حسب المعرّف، ودفع Telegram الفوري الذي يتضمن بصمة الجهاز مع أزرار تشير تلقائياً إلى النطاق الحالي، وإدارة الصور عبر الويب التي تُرفع إلى مستودع Git وتفعّل نشر Pages تلقائياً، ونقطة تتبع _panel المدمجة لمراقبة الوصول إلى لوحة الإدارة، ومكافحة الزحف واختبار السرعة عبر القائمة السوداء لـ UA وتبريد مقطع /24، وتخزين البيانات في D1 فقط لتجنب مشاكل حصة الكتابة. من حيث البنية، يعالج Cloudflare Worker طلب الزائر GET /nezha.png، وتقرأ الواجهة الأمامية الموارد الثابتة من Git وتعيد الصورة، بينما تكتب الخلفية عبر ctx.waitUntil السجلات المفصلة والملخصات اليومية في D1 وتدفع إشعارات Telegram. يرفع المسؤول الصور إلى Worker عبر لوحة الإدارة، فيكتب Worker في مستودع Git ويفعّل Deploy Hook لإعادة بناء Pages، ثم يستعلم من D1 ويعيد الإحصاءات والسجلات. تشمل المكونات Cloudflare Pages لاستضافة index.html و_worker.js، وCloudflare D1 لتخزين سجلات الزيارة والملخصات اليومية وفهرس الصور، وCloudflare Workers لمعالجة API وطلبات الصور، ومستودع GitHub لتخزين بيانات الصور الثنائية تحت public/pic، وTelegram Bot API لدفع الإشعارات. يتطلب النشر حساب Cloudflare وحساب GitHub وحساب Telegram ونطاقاً اختيارياً. يجب تجهيز 7 متغيرات بيئية هي PASSWORD وGITHUB_TOKEN وREPO_NAME وBRANCH وCF_DEPLOY_HOOK_URL وTG_ID وTG_TOKEN بالإضافة إلى ربط D1 واحد DB. تتضمن العملية إنشاء مستودع من القالب، وإنشاء قاعدة بيانات D1، وإنشاء Telegram Bot والحصول على token وchat_id، وإنشاء GitHub Fine-grained PAT، وإنشاء مشروع Pages وإيقاف النشر التلقائي من Git لتجنب هدر البناء، وإنشاء Deploy Hook، وربط نطاق مخصص، وتوحيد إعداد المتغيرات البيئية والربط، وإعادة المحاولة يدوياً للنشر لإكمال النشر الأول. عند أول تسجيل دخول إلى لوحة الإدارة تُنشأ تلقائياً ثلاثة جداول هي visits وdaily_summary وimg_index. عند الاستخدام، أضف معرّفاً في إدارة الصور وارفع صورة، وبعد الحفظ والنشر ستحصل على رابط تتبع مثل https://نطاقك/nezha.png، ويمكن تضمينه في HTML أو البريد الإلكتروني للإحصاء. توفر صفحة النظرة العامة ملخصات اليوم وأمس وآخر 7 أيام وآخر سنة ورسوماً بيانية، وتدعم صفحة السجلات المفصلة التصفح المرقّم مع التصفية حسب التاريخ والمعرّف وعنوان IP. يُسجَّل الوصول إلى لوحة الإدارة نفسه عبر نقطة تتبع _panel، ويُفعَّل عند الوصول غير المسجل، ولا يُفعَّل عند تحديث الصفحة بعد تسجيل الدخول. تشمل الملاحظات أن الحصة المجانية لـ D1 هي 5GB تخزين و100 ألف كتابة يومياً و5 ملايين قراءة يومياً، ويُفضّل ألا يتجاوز مستودع GitHub 1GB، وألا تتجاوز الصورة الواحدة 8MB، مع دعم PNG وJPG وGIF وWebP وSVG، وأن يكون المعرّف من الأحرف والأرقام والشرطة السفلية والشرطة بطول 1 إلى 64، مع حجز المعرّف _panel. يُدفع إشعار Telegram مرة واحدة فقط لنفس IP خلال 60 ثانية، ويتشارك مقطع /24 نفسه التبريد، ولا تُدفع إشعارات UA الزواحف وReferer مواقع اختبار السرعة. بعد إيقاف النشر التلقائي من Git، يجب حفظ الصور المرفوعة والنشر عبر لوحة الإدارة، وبعد تعديل المتغيرات البيئية يجب إعادة النشر. يُنصح أمنياً باستخدام كلمة مرور قوية وتقليل صلاحيات PAT وعدم نشر رابط Deploy Hook. يمكن تصدير البيانات احتياطياً عبر wrangler d1 export. في الإعدادات المتقدمة يمكن تعديل STATS_DAYS لمدة الاحتفاظ وPUSH_COOLDOWN_SEC لوقت التبريد في _worker.js، كما يمكن تخصيص التعبيرات النمطية للقائمة السوداء لـ UA وReferer.