मैं फ़ाइल डाउनलोड कैसे ट्रैक करूं


81

मेरे पास एक वेबसाइट है जो एक फ़्लैश प्लेयर में MP3 खेलती है। यदि कोई उपयोगकर्ता फ़्लैश प्लेयर 'प्ले' पर क्लिक करता है, तो स्वचालित रूप से एक एमपी 3 डाउनलोड करता है और इसे खेलना शुरू कर देता है।

क्या किसी विशेष गीत क्लिप (या किसी भी बाइनरी फ़ाइल) को डाउनलोड करने के लिए कितनी बार ट्रैक करने का एक आसान तरीका है?


क्या नाटक वास्तविक एमपी 3 फ़ाइल या कुछ जावास्क्रिप्ट कोड का लिंक है जो एक खिलाड़ी को पॉप अप करता है?

यदि बाद वाला, आप इसमें हिट करने की संख्या को ट्रैक करने के लिए आसानी से अपना लॉगिंग कोड जोड़ सकते हैं।

यदि पूर्व में, आपको किसी ऐसी चीज की आवश्यकता होगी जो वेब सर्वर लॉग को ट्रैक कर सके और वह अंतर बना सके। मेरा होस्टिंग प्लान वेब्लाइज़र के साथ आता है, जो इसे अच्छी तरह से करता है।

यह एक जावास्क्रिप्ट कोड है जिससे कि उत्तर मिलता है।

हालांकि, यह जानना अच्छा होगा कि दूसरी विधि का उपयोग करके डाउनलोड को कैसे ट्रैक किया जाए (मेजबानों को स्विच किए बिना)।

जवाबों:


39

मजेदार बात यह है कि मैंने 2 दिन पहले अपने सभी संगीत के लिए एक php मीडिया गैलरी लिखी है। मुझे भी ऐसी ही समस्या का समाधान करना पड़ा था। मैं खिलाड़ी के लिए http://musicplayer.sourceforge.net/ का उपयोग कर रहा हूं । और प्लेलिस्ट php के माध्यम से बनाया गया है। सभी संगीत अनुरोध xfer.php नामक एक स्क्रिप्ट पर जाते हैं? फ़ाइल = WHATEVER

$filename = base64_url_decode($_REQUEST['file']);
header("Cache-Control: public");
header('Content-disposition: attachment; filename='.basename($filename));
header("Content-Transfer-Encoding: binary");
header('Content-Length: '. filesize($filename));

//  Put either file counting code here, either a db or static files
//
readfile($filename);  //and spit the user the file

function base64_url_decode($input) {
    return base64_decode(strtr($input, '-_,', '+/='));
}

और जब आप फोन करते हैं तो कुछ का उपयोग करते हैं:

function base64_url_encode($input) {
     return strtr(base64_encode($input), '+/=', '-_,');
}

http://us.php.net/manual/en/function.base64-encode.php

यदि आप कुछ जावास्क्रिप्ट या एक फ़्लैश प्लेयर (उदाहरण के लिए JW प्लेयर) का उपयोग कर रहे हैं, जिसमें एक एमपी 3 फ़ाइल या जो भी हो, के वास्तविक लिंक की आवश्यकता होती है, तो आप "& type = .mp3" टेक्स्ट को जोड़ सकते हैं, इसलिए अंतिम लिंक कुछ इस तरह हो जाता है: "www। example.com/xfer.php?file=34842ffjfjxfh&type=.mp3 "। इस तरह से यह दिखता है कि यह फ़ाइल लिंक को प्रभावित किए बिना एक एमपी 3 एक्सटेंशन के साथ समाप्त होता है।


19
इस स्क्रिप्ट में एक निर्देशिका ट्रैवर्सल भेद्यता है! एक हमलावर xfer.php में पास हो सकता है? फ़ाइल = .. / .. / .. / passwd या जो कुछ भी वे चाहते हैं! सावधान रहे!!!
एलेक्स वीनस्टीन

6
यदि फ़ाइल बहुत बड़ी है और आपका ट्रैफ़िक अधिक है तो सर्वर की मेमोरी लिमिट को उड़ा देगा।
tmsimont

"निर्देशिका ट्रैवर्सल भेद्यता" को कैसे ठीक करें?
जॉन

@anarchOi: ज्ञात-अच्छे फ़ाइल नामों के श्वेतसूची के विरुद्ध GET पैरामीटर ( $_REQUEST['file']) की तुलना करना सबसे आसान तरीका होगा । उदाहरण के लिए, निर्देशिका में सभी फ़ाइलों की एक सूची जो आप अपनी फ़ाइलों को संग्रहीत करते हैं। सुनिश्चित करें कि आप केवल उस निर्देशिका का उपयोग उन फ़ाइलों को संग्रहीत करने के लिए करते हैं जिन्हें आप डाउनलोड करने योग्य बनना चाहते हैं ...
BlueRaja - Danny Pflughoeft

@tmsimont, क्या आपने मेमोरी खपत कम करने के किसी भी तरीके का पता लगाया है?
ezpresso


25

बाश का प्रयोग करें:

grep mp3 /var/log/httpd/access_log | wc

इस विधि में कम से कम 2 दोष हैं: यह GET और HEAD अनुरोधों को गिनता है और सभी HTTP प्रतिक्रिया कोडों को गिनता है। उदाहरण के लिए, कई 206 प्रतिक्रियाएं हो सकती हैं जो आपको अत्यधिक डाउनलोड करने के लिए प्रेरित करेंगी।
8ctopus

13

यदि आपके गीत / बाइनरी फ़ाइल को अपाचे द्वारा परोसा गया था, तो आप डाउनलोड की संख्या जानने के लिए access_log को आसानी से प्राप्त कर सकते हैं। एक साधारण पोस्ट-लॉगोटेट स्क्रिप्ट लॉग को grep कर सकती है और एक db में आपकी गणना के आँकड़े को बनाए रख सकती है। यह आपके लाइव अनुरोध कोड पथ में नहीं होने से प्रदर्शन लाभ है। गैर-महत्वपूर्ण चीजें जैसे आँकड़े ऑफ़लाइन करना आपकी वेबसाइट को बड़ी संख्या में उपयोगकर्ताओं को स्केल करने के लिए एक अच्छा विचार है।


12

आप एक अपाचे .htaccess निर्देश भी स्थापित कर सकते हैं जो * .mp3 अनुरोधों को क्वेरिस्ट्रिंग डबायौ में काम कर रहा है। यह प्रत्यक्ष अनुरोध रखने के लिए एक सुरुचिपूर्ण तरीका हो सकता है और अभी भी प्रतिक्रिया में स्लिपस्ट्रीम लॉग फ़ंक्शन करने में सक्षम हो सकता है।


6

क्या नाटक वास्तविक एमपी 3 फ़ाइल या कुछ जावास्क्रिप्ट कोड का लिंक है जो एक खिलाड़ी को पॉप अप करता है?

यदि बाद वाला, आप इसमें हिट की संख्या को ट्रैक करने के लिए आसानी से अपना लॉगिंग कोड जोड़ सकते हैं।

यदि पूर्व में, आपको किसी ऐसी चीज की आवश्यकता होगी जो वेब सर्वर लॉग को ट्रैक कर सके और वह अंतर बना सके। मेरी होस्टिंग योजना वेबलाइज़र के साथ आती है, जो इसे अच्छी तरह से करती है।


3

क्या आपके संगीत पुस्तकालय के लिए एक डेटाबेस है? यदि कोई सर्वर कोड है जो एमपी 3 डाउनलोड करते समय चलता है तो आप प्ले काउंट को बढ़ाने के लिए वहां अतिरिक्त कोड जोड़ सकते हैं। आपके पास जावास्क्रिप्ट को प्ले काउंट बढ़ाने के लिए दूसरा अनुरोध भी किया जा सकता है, लेकिन इससे लोगों / रोबोटों को गलत तरीके से वेतन वृद्धि मिल सकती है।

मैं एक इंटरनेट-रेडियो साइट के लिए काम करता था और हम हर गाने को चलाने के लिए अलग-अलग तालिकाओं का इस्तेमाल करते थे। हमारे स्ट्रीम एक पर्ल स्क्रिप्ट से संचालित होते थे, जो कि आइकॉस्ट चल रहा था, इसलिए हमने हर बार एक नया ट्रैक शुरू करने के लिए डेटाबेस अनुरोध को ट्रिगर किया। फिर प्ले काउंट की गणना करने के लिए, हम यह गिनने के लिए एक क्वेरी चलाएंगे कि प्ले लॉग में किसी गाने की आईडी कितनी बार है।


3

AWStats / वेब सर्वर लॉग के माध्यम से पढ़ने जैसी चीज़ों के साथ मुझे जो समस्या है वह यह है कि बड़े डाउनलोड को अक्सर लॉग के भीतर डेटा चंक्स में विभाजित किया जा सकता है। यह डाउनलोड की सटीक संख्या को काफी कठिन बनाता है।

मैं Google Analytics ईवेंट ट्रैकिंग का सुझाव दूंगा, क्योंकि यह डाउनलोड लिंक पर एक बार क्लिक करने पर पंजीकृत होगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.