इस प्रोजेक्ट के बारे में

विज़िटर सांख्यिकी Cloudflare Pages + Workers + D1 + GitHub पर आधारित एक हल्का विज़िटर ट्रैकिंग सिस्टम है। मूल विचार एक चित्र के रूप में छिपे ट्रैकिंग पिक्सेल से विज़िट रिकॉर्ड करना है। चित्र और फ्रंटएंड Cloudflare एज पर होस्ट किए जाते हैं, लॉग स्थायी रूप से D1 में सहेजे जाते हैं, और Telegram के माध्यम से रीयल-टाइम सूचनाएँ भेजी जा सकती हैं। मुख्य कार्यों में ट्रैकिंग पिक्सेल अपलोड और एम्बेड करना; समय, IP, स्थान, ऑपरेटर, डिवाइस, सिस्टम, ब्राउज़र और स्रोत के साथ विस्तृत लॉग रिकॉर्ड करना; लचीली सांख्यिकी अवधि जो आज, 7 दिन, 30 दिन, 3 महीने, 1 वर्ष का समर्थन करती है और पहचानकर्ता के अनुसार फ़िल्टर की जा सकती है; Telegram रीयल-टाइम सूचनाएँ जिनमें डिवाइस फ़िंगरप्रिंट शामिल होता है और बटन स्वचालित रूप से वर्तमान डोमेन की ओर इंगित करते हैं; वेब पेज पर चित्र प्रबंधन जो Git रिपॉज़िटरी में अपलोड करता है और स्वचालित रूप से Pages परिनियोजन ट्रिगर करता है; प्रबंधन पैनल विज़िट की निगरानी के लिए अंतर्निहित _panel ट्रैकिंग पॉइंट; UA ब्लैकलिस्ट और /24 सेगमेंट कूलडाउन के माध्यम से क्रॉलर-रोधी और स्पीड-टेस्ट-रोधी; और शुद्ध D1 संग्रहण जो राइट कोटा की समस्या से बचाता है। आर्किटेक्चर में विज़िटर अनुरोध GET /nezha.png को Cloudflare Worker संभालता है। फ्रंटएंड Git स्थैतिक संसाधन पढ़कर चित्र लौटाता है, और बैकएंड ctx.waitUntil के माध्यम से D1 में विस्तृत लॉग और दैनिक सारांश लिखता है तथा Telegram सूचना भेजता है। व्यवस्थापक प्रबंधन पैनल के माध्यम से Worker पर चित्र अपलोड करता है, Worker Git रिपॉज़िटरी में लिखता है और Pages को फिर से बनाने के लिए Deploy Hook ट्रिगर करता है, फिर 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, और 1 D1 बाइंडिंग DB। प्रक्रिया है: टेम्पलेट से रिपॉज़िटरी बनाना, D1 डेटाबेस बनाना, Telegram Bot बनाकर token और chat_id प्राप्त करना, GitHub Fine-grained PAT बनाना, Pages प्रोजेक्ट बनाना और निर्माण बर्बादी से बचने के लिए Git स्वचालित परिनियोजन बंद करना, Deploy Hook बनाना, कस्टम डोमेन बाँधना, पर्यावरण चर और बाइंडिंग को एक समान कॉन्फ़िगर करना, और पहला परिनियोजन पूरा करने के लिए मैन्युअल Retry deployment करना। प्रबंधन पैनल में पहली बार लॉगिन करने पर visits, daily_summary, img_index तीन तालिकाएँ स्वचालित रूप से बन जाती हैं। उपयोग करते समय चित्र प्रबंधन में पहचानकर्ता जोड़ें और चित्र अपलोड करें। सहेजने और परिनियोजित करने के बाद ट्रैकिंग लिंक प्राप्त होता है, उदाहरण के लिए https://आपका-डोमेन/nezha.png, जिसे HTML या ईमेल में एम्बेड करके सांख्यिकी प्राप्त की जा सकती है। अवलोकन पृष्ठ आज, कल, पिछले 7 दिन, पिछले 1 वर्ष का सारांश और वक्र ग्राफ प्रदान करता है, और विस्तृत लॉग पृष्ठ तिथि, पहचानकर्ता और IP के अनुसार फ़िल्टर करके पृष्ठांकित ब्राउज़िंग का समर्थन करता है। प्रबंधन पैनल तक पहुँच स्वयं _panel ट्रैकिंग पॉइंट द्वारा रिकॉर्ड की जाती है; बिना लॉगिन पहुँच ट्रिगर होती है, लॉगिन के बाद रीफ़्रेश करने पर ट्रिगर नहीं होती। ध्यान देने योग्य बातें: D1 मुफ्त कोटा 5GB संग्रहण, प्रति दिन 100,000 राइट, प्रति दिन 5,000,000 रीड है। GitHub रिपॉज़िटरी 1GB से अधिक न रखने की सलाह है, एकल चित्र 8MB से अधिक नहीं होना चाहिए, PNG JPG GIF WebP SVG समर्थित हैं, पहचानकर्ता अक्षर, अंक, अंडरस्कोर, हाइफ़न से बना हो और लंबाई 1 से 64 हो, आरक्षित पहचानकर्ता _panel है। Telegram सूचना समान IP के लिए 60 सेकंड में केवल एक बार भेजी जाती है, समान /24 सेगमेंट कूलडाउन साझा करता है, क्रॉलर UA और स्पीड-टेस्ट साइट Referer के लिए सूचना नहीं भेजी जाती। Git स्वचालित परिनियोजन बंद होने के बाद चित्र अपलोड करने पर प्रबंधन पैनल से सहेजना और परिनियोजन ट्रिगर करना आवश्यक है, और पर्यावरण चर बदलने के बाद पुनः परिनियोजन करना होता है। सुरक्षा सुझाव: मजबूत पासवर्ड उपयोग करें, PAT अनुमतियाँ न्यूनतम रखें, Deploy Hook URL सार्वजनिक न करें। डेटा को wrangler d1 export से निर्यात करके बैकअप लिया जा सकता है। उन्नत कॉन्फ़िगरेशन में _worker.js में STATS_DAYS प्रतिधारण दिन और PUSH_COOLDOWN_SEC कूलडाउन समय संशोधित किया जा सकता है, तथा UA और Referer ब्लैकलिस्ट रेगेक्स को कस्टमाइज़ किया जा सकता है।