ठीक है, आप इसे 100% संरक्षित नहीं कर सकते, लेकिन आप इसे कठिन बना सकते हैं। ये विधियां जो मैं समझा रहा हूं, मैंने उनका सामना प्लुरलसाइट और बेस्टडॉटनेटट्रेनिंग में सुरक्षा विधियों का अध्ययन करने के दौरान किया । फिर भी, इन विधियों में से किसी ने भी मुझे डाउनलोड करने से नहीं रोका, जो मैं चाहता हूं, लेकिन मुझे डाउनलोडर को उनकी सुरक्षा से गुजरने के लिए कठिन समय था।
संदर्भ मेनू को अक्षम करने के लिए अन्य उल्लिखित विधियों के अलावा। उपयोगकर्ता अभी भी वीडियो डाउनलोड करने के लिए इंटरनेट-डाऊनलोड मैनेजर या अन्य समान सॉफ्टवेयर जैसे थर्ड-पार्टी टूल्स का उपयोग करने में सक्षम है। जो सुरक्षा विधि मैं यहां बता रहा हूं, वह उन 3 पार्टी सॉफ्टवेयर को कम करने के लिए है।
इन सभी तरीकों की आवश्यकता एक उपयोगकर्ता को ब्लॉक करने के लिए है जब आप किसी को पहचानते हैं, जो आपके वीडियो डाउनलोड कर रहा है। इस तरह से वे केवल एक या दो वीडियो डाउनलोड करने में सक्षम हैं, इससे पहले कि आप उन्हें अपनी वेबसाइट तक पहुंचने से प्रतिबंधित कर दें।
अस्वीकरण
मैं किसी भी जिम्मेदारी को स्वीकार नहीं करूंगा यदि कोई इन तरीकों का दुरुपयोग करता है या इसका उपयोग दूसरों या उन वेबसाइटों को नुकसान पहुंचाने के लिए करता है जिन्हें मैंने एक उदाहरण के रूप में उल्लेख किया है। यह सिर्फ ज्ञान साझा करने के लिए है ताकि आप अपने बौद्धिक उत्पाद की रक्षा कर सकें।
एक समाप्ति के साथ लिंक उत्पन्न करें
इसके लिए आवश्यकता प्रति उपयोगकर्ता डाउनलोड लिंक बनाने की है। कि आसानी से azure बूँद भंडारण या अमेज़न s3 द्वारा नियंत्रित किया जा सकता है। आप वीडियो की लंबाई समाप्त होने वाले टाइमस्टैम्प के साथ दो बार डाउनलोड लिंक बना सकते हैं। फिर आपको उस वीडियो लिंक और अनुरोध किए गए समय को कैप्चर करना होगा। यह अगली विधि के लिए आवश्यक है। उपयोगकर्ता द्वारा प्ले बटन पर क्लिक करने पर इस विधि के लिए कैच आप डाउनलोड लिंक उत्पन्न कर रहे हैं।
प्ले बटन ईवेंट पर आप सर्वर को एक अनुरोध भेजेंगे और लिंक प्राप्त करेंगे और स्रोत को अपडेट करेंगे।
वीडियो अनुरोध दर को थ्रॉटल करें
फिर आप मॉनिटर करते हैं कि उपयोगकर्ता दूसरे वीडियो के लिए कितनी तेज़ी से अनुरोध करता है। यदि उपयोगकर्ता डाउनलोड लिंक के लिए बहुत तेज़ी से अनुरोध करता है, तो आप उन्हें तुरंत ब्लॉक कर देते हैं। आप इस सीमा को बहुत बड़ा नहीं रख सकते क्योंकि आप उपयोगकर्ताओं को गलती से ब्लॉक कर सकते हैं जो वीडियो के माध्यम से ब्राउज़ या स्किमिंग कर रहे हैं।
HTTP रेंज सक्षम करें
अपने वीडियो को चलाने के लिए वीडियोज जैसे कुछ js लाइब्रेरी का उपयोग करें, आपको अपने हेडर में एक AcceptRange भी लौटाना होगा। Azure बूँद भंडारण बॉक्स से बाहर का समर्थन करता है। इस तरह से ब्राउजर वीडियो चंक को डाउनलोड करना शुरू कर देता है। आमतौर पर, 32byte द्वारा 32byte। तब आपको timeupdate
वीडियो को देखे जाने वाले प्रतिशत के बारे में वीडियो सर्वर को बदलने और अपडेट करने के लिए सुनने की जरूरत है। वीडियो को देखा जाने वाला प्रतिशत उस वीडियो के प्रतिशत से अधिक नहीं हो सकता है। और यदि आप किसी वीडियो सामग्री को बिना किसी प्रतिशत परिवर्तन प्राप्त कर रहे हैं, तो आप उपयोगकर्ता को ब्लॉक कर सकते हैं। क्योंकि यकीन है कि वे डाउनलोड कर रहे हैं।
इसे लागू करना मुश्किल है क्योंकि उपयोगकर्ता वीडियो को आगे या पीछे छोड़ सकता है इसलिए इस बारे में सचेत रहें जब आप इसे लागू कर रहे हों।
यह कैसे BestDotnetTraining संभाल रहा है timeupdate
myPlayer.ready(function () {
//var player = this;
this.src({
type: "video/mp4",
src: videoURL
});
if (videoId) {
myPlayer.play();
this.on('timeupdate', function () {
var currentPercent = parseInt(100 * myPlayer.currentTime() / myPlayer.duration());//calcualte as percentage
if (currentPercent % 5 == 0) {
//send percentage to server
SaveVideoDurationWatched(currentPercent, videoId);
}
});
}
});
वैसे भी, उपयोगकर्ता कुछ डाउनलोड विधि का उपयोग करके इसके चारों ओर काम करने में सक्षम है जो स्ट्रीमिंग के माध्यम से एक फ़ाइल डाउनलोड करता है। लगभग c # इसे बॉक्स से बाहर करें और नोडज के लिए, आप request
मॉड्यूल का उपयोग कर सकते हैं । फिर आपको स्टॉपवॉच शुरू करने, प्राप्त पैकेज को सुनने और कुल आकार की तुलना में प्राप्त कुल बाइट की तुलना करने की आवश्यकता है। इस तरह आप प्रतिशत की गणना कर सकते हैं और उस प्रतिशत की राशि प्राप्त करने में लगने वाला समय। फिर Thread.Sleep()
उस थ्रेड को विलंबित करने के लिए या ऐसी किसी चीज़ का उपयोग करें जिसे आपको सामान्य रूप से वीडियो देखने के लिए प्रतीक्षा करनी पड़े। नींद से पहले भी उपयोगकर्ता सर्वर को कॉल कर सकता है और प्राप्त प्रतिशत को अपडेट कर सकता है। इसलिए सर्वर को लगता है कि उपयोगकर्ता वास्तव में एक वीडियो देख रहा है।
गणना कुछ इस तरह होगी, उदाहरण के लिए, यदि आप गणना करते हैं कि आपने अब तक 1 प्रतिशत प्राप्त किया है, तो आप उस राशि की गणना कर सकते हैं जिसे आपको डाउनलोड थ्रेड सोने के लिए इंतजार करना चाहिए। इस तरह से आप किसी वीडियो को तेजी से डाउनलोड नहीं कर सकते हैं वह वास्तविक लंबाई है। अगर एक वीडियो 24 मिनट का है। इसे डाउनलोड करने में 24 मिनट का समय लगेगा। (प्लस हम पहले विधि में डालते हैं)
original video length 24 minute
24 min *60000 = 1,440,000 miliseconds
1,440,000 % 100 = 14,400 milisecond is needed to download one percent
ब्राउज़र एजेंट की जाँच करें
जब आप एक वेबपृष्ठ की सेवा कर रहे हैं और वीडियो लिंक परोस रहे हैं या प्रगति अपडेट अनुरोध को स्वीकार कर रहे हैं तो आप ब्राउज़र एजेंट को देख सकते हैं। यदि यह अलग है तो उपयोगकर्ता को प्रतिबंधित करें।
बस ध्यान रखें कि कुछ पुराने ब्राउज़र इस जानकारी को पास नहीं करते हैं। इसलिए आपको वीडियो अनुरोध और वेबपेज अनुरोध दोनों में कोई ब्राउज़र एजेंट नहीं होने पर इसे अनदेखा करना चाहिए। लेकिन अगर एक अनुरोध में यह है और दूसरा नहीं है, तो आपको उपयोगकर्ता को प्रतिबंधित करना चाहिए।
इसके चारों ओर काम करने के लिए उपयोगकर्ता ब्राउज़र एजेंट हेडर को मैन्युअल रूप से हेडलेस ब्राउज़र के रूप में सेट कर सकता है जिसे वे डाउनलोड लिंक पर कब्जा करने के लिए उपयोग कर रहे हैं।
रेफ़र हैडर की जाँच करें
जब रेफ़र आपके होस्ट URL या पेज URL के अलावा कुछ और होता है जिसे आप वीडियो परोस रहे होते हैं, तो आप उपयोगकर्ता को प्रतिबंधित कर सकते हैं, क्योंकि वे डाउनलोड लिंक को दूसरे टैब या किसी अन्य एप्लिकेशन में डालते हैं। यहां तक कि आप प्रगति अद्यतन अनुरोध के लिए भी ऐसा कर सकते हैं।
इसके लिए आवश्यकता वीडियो की मैपिंग और उस वीडियो को दिखाने वाले पेज की है। आप यह समझने के लिए कुछ कन्वेंशन या पैटर्न बना सकते हैं कि URL क्या होना चाहिए, यह आपके डिज़ाइन पर निर्भर है।
इसके चारों ओर काम करने के लिए उपयोगकर्ता वीडियो डाउनलोड करते समय रेफरर हेडर को डाउनलोड पेज URL के बराबर सेट कर सकता है।
अनुरोध के बीच के समय की गणना करें
यदि आपको इतने अनुरोध मिलते हैं कि उनके बीच का समय समान है, तो आपको उपयोगकर्ता को ब्लॉक करना चाहिए। वीडियो लिंक पीढ़ी के अनुरोध के बीच कितना समय है, इसे पकड़ने के लिए आपको इसे रखना चाहिए। यदि वे समान हैं (प्लस / माइनस थ्रेसहोल्ड) और यह कई बार से अधिक होता है, तो आप उपयोगकर्ता को प्रतिबंधित कर सकते हैं। क्योंकि यदि कोई बॉट है जो आपकी वेबसाइट या वीडियो को क्रॉल करने जा रहा है, तो आमतौर पर उनके अनुरोध के बीच सोने का समय एक ही होता है। इसलिए यदि आप प्रत्येक अनुरोध प्राप्त करते हैं, उदाहरण के लिए, हर 1.3 (प्लस / मिनट कुछ विचलन) मिनट। तो आप एक अलार्म बढ़ाएं। इसके लिए, आप अनुरोधों के बीच विचलन को जानने के लिए कुछ सांख्यिकीय गणना का उपयोग कर सकते हैं।
इसे हल करने के लिए, उपयोगकर्ता अनुरोधों के बीच एक यादृच्छिक नींद का समय रख सकता है।
नमूना कोड
मेरे पास एक रेपो PluralSight-Downloader है जो इसे आधा कर रहा है। मैंने यह रेपो लगभग 5 साल पहले बनाया था। क्योंकि मैंने इसे केवल अध्ययन के उद्देश्य और स्वयं के व्यक्तिगत उपयोग के लिए लिखा था, इसलिए अब तक रेपो को कोई अपडेट नहीं मिला है और मैं अपडेट नहीं कर रहा हूं या इसके साथ काम करना आसान नहीं है। यह सिर्फ एक उदाहरण है कि यह कैसे किया जा सकता है।