% 100 koruyamazsınız ama daha da zorlaştırabilirsiniz. açıkladığım bu yöntemler, PluralSight ve BestDotNetTraining'deki koruma yöntemlerini incelerken bunlarla karşılaştım . Bununla birlikte, bu yöntemlerin hiçbiri istediğimi indirmemi engellemedi, ancak indiriciyi korumalarını geçmek için seçmekte zorlandım.
Bağlam menüsünü devre dışı bırakmak için bahsedilen diğer yöntemlere ek olarak. kullanıcı hala videoları indirmek için InternetDownload yöneticisi veya benzer bir yazılım gibi üçüncü taraf araçları kullanabilir. Burada açıkladığım koruma yöntemi bu üçüncü taraf yazılımlarını azaltmaktır.
bu yöntemlerin hepsinin şartı, birisinin videolarınızı indirdiğini belirlediğinizde kullanıcıyı engellemektir. bu şekilde yalnızca bir veya iki videoyu web sitenize erişmelerini yasaklamadan önce indirebilirler.
feragat
Birisi bu yöntemleri kötüye kullanırsa veya başkalarına veya örnek olarak bahsettiğim web sitelerine zarar vermek için kullanırsa hiçbir sorumluluk kabul etmeyeceğim. sadece entelektüel ürününüzü korumanıza yardımcı olacak bilgileri paylaşmak içindir.
süre sonu ile bağlantı oluşturmak
bunun için kullanıcı başına bir indirme bağlantısı oluşturmak gerekir. azure blob depolama veya amazon s3 ile kolayca ele alınabilir. video uzunluğu sona erme zaman damgasının iki katına sahip bir indirme bağlantısı oluşturabilirsiniz. o video bağlantısını ve istenen zamanı yakalamanız gerekir. bu bir sonraki yöntem için gereklidir. bu yöntemin yakalamak, kullanıcı oynat düğmesini tıkladığında indirme bağlantısını oluşturuyor olmanızdır.
oynatma düğmesi olayında sunucuya bir istek gönderecek ve bağlantıyı alıp kaynağı güncelleyeceksiniz.
video istek oranını azaltın
daha sonra kullanıcının ikinci video için ne kadar hızlı istekte bulunduğunu izlersiniz. kullanıcı bir indirme bağlantısı için çok hızlı istekte bulunursa, hemen engellersiniz. bu eşiği çok büyük koyamazsınız çünkü videolara sadece göz atan veya gözden geçiren kullanıcıları yanlışlıkla engelleyebilirsiniz.
HTTP Aralığını Etkinleştir
videonuzu oynatmak için videojs gibi bazı js kütüphanelerini kullanın , ayrıca başlığınızda bir AcceptRange döndürmeniz gerekir. Azure blob depolama, bunu kutudan çıkarır. bu şekilde tarayıcı video yığınını yığın tarafından indirmeye başlar. genellikle 32byte 32byte. videojs timeupdate
değişikliğini dinlemeniz ve sunucunuzu videonun izlenme yüzdesi hakkında güncellemeniz gerekir. videonun izlenme yüzdesi videonun yayınlanma yüzdesinden fazla olamaz. video içeriği yüzde değişikliği almadan yayınlıyorsanız kullanıcıyı engelleyebilirsiniz. çünkü kesinlikle indiriyorlar.
bunu uygulamak zordur çünkü kullanıcı videoyu ileri veya geri atlayabilir, bu yüzden bunu uygularken bu konuda dikkatli olun.
BestDotnetTraining bu şekilde 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);
}
});
}
});
Her neyse, kullanıcı akış yoluyla bir dosyayı indiren bazı indirme yöntemini kullanarak bu sorunu çözebilir. neredeyse c # kutunun dışında yapmak ve nodejs için request
modül kullanabilirsiniz . bir stopWatch başlatmanız, alınan bir paketi dinlemeniz ve alınan toplam baytı toplam boyuta göre karşılaştırmanız gerekir. bu şekilde bir yüzdeyi ve bu yüzdeyi elde etmek için harcanan zamanı hesaplayabilirsiniz. Thread.Sleep()
videoyu normal şekilde izlerseniz beklemeniz gereken miktarı iş parçacığını geciktirmek için veya benzeri bir şey kullanın . ayrıca uykudan önce kullanıcı sunucuyu arayabilir ve alınan yüzdeyi güncelleyebilir. böylece sunucu kullanıcının gerçekten bir video izlediğini düşünür.
hesaplama böyle bir şey olacaktır, örneğin, şimdiye kadar yüzde 1 aldığınızı hesaplarsanız, indirme iş parçacığının uykuya dalması için beklemeniz gereken miktarı hesaplayabilirsiniz. bu şekilde bir videoyu gerçek uzunluğundan daha hızlı indiremezsiniz. bir video 24 dk ise. indirmek için 24 dakika sürer. (artı ilk yönteme koyduğumuz eşik değer)
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
tarayıcı aracısını kontrol et
bir web sayfasını sunarken ve video bağlantısını sunarken veya ilerleme güncelleme isteğini kabul ederken tarayıcı aracısına bakabilirsiniz. farklıysa kullanıcıyı yasaklayın.
bazı eski tarayıcıların bu bilgileri iletmediğini unutmayın. bu nedenle hem video isteğinde hem de web sayfası isteğinde tarayıcı aracısı olmadığında bunu yok saymalısınız. ancak bir istek varsa ve başka bir istek yoksa kullanıcıyı yasaklamalısınız.
bu sorunu çözmek için kullanıcı, tarayıcı aracı üstbilgisini, indirme bağlantısını yakalamak için kullandıkları başsız tarayıcıyla aynı şekilde manuel olarak ayarlayabilir.
referans başlığını kontrol et
yönlendiren, ana makine URL'nizden veya videoyu sunduğunuz sayfa URL'sinden başka bir şeyse, indirme bağlantısını başka bir sekmeye veya başka bir uygulamaya yerleştirdikleri için kullanıcıyı yasaklayabilirsiniz. bunu ilerleme güncelleme isteği için de yapabilirsiniz.
bunun için bir video eşlemesi ve o videoyu gösteren sayfa olması gerekir. URL'nin ne olması gerektiğini anlamak için bir kural veya desen oluşturabilirsiniz, bu sizin tasarımınıza bağlıdır.
kullanıcı bu sorunu çözmek için videoları indirirken yönlendirme başlığını manuel olarak indirme sayfası URL'sine eşit olarak ayarlayabilir.
İstek arasındaki süreyi hesapla
aralarındaki zaman aynı olacak kadar çok istek alırsanız, kullanıcıyı engellemelisiniz. video bağlantısı oluşturma isteği arasındaki sürenin ne kadar olduğunu yakalamak için bunu koymalısınız. bunlar aynıysa (artı / eksi bir eşik) ve birkaç kezden fazla olursa, kullanıcıyı yasaklayabilirsiniz. çünkü web sitenizi veya videolarınızı tarayacak bir bot varsa, genellikle istekleri arasında aynı uyku süresine sahip olurlar. yani her isteği alırsanız, örneğin her 1,3 (artı / dakika biraz sapma) dakikada bir. sonra bir alarm verirsiniz. Bunun için, istekler arasındaki sapmayı bilmek için bazı istatistik hesaplamaları kullanabilirsiniz.
bu sorunu çözmek için kullanıcı istekler arasına rastgele bir uyku süresi koyabilir.
basit kod
Yarısını yapan bir repo PluralSight-Downloader var. Bu repoyu neredeyse 5 yıl önce yarattım. çünkü sadece çalışma amacıyla ve kendi kişisel kullanımım için yazdım, repo şu ana kadar herhangi bir güncelleme almamış ve güncellenmeyecek ya da çalışmayı kolaylaştıramayacağım. bu sadece nasıl yapılabileceğinin bir örneğidir.