İstemcilerin bir videoyu indirmesini önlemek için bir tarayıcının sağ tıklama menüsünden "Videoyu Farklı Kaydet..." seçeneğini nasıl devre dışı bırakabilirim?
İstemcinin bir dosya yoluna doğrudan erişmesini engelleyen daha eksiksiz çözümler var mı?
Yapamazsınız. Çünkü tarayıcılar bunu yapmak için tasarlanmıştır: İçerik sunmak. Ancak indirmeyi zorlaştırabilirsiniz.
İlk olarak, contextmenu
event, diğer adıyla "sağ tıklama" özelliğini devre dışı bırakabilirsiniz. Bu, sıradan bir kaytarıcının sağ tıklayıp Farklı Kaydet diyerek videonuzu pervasızca kopyalamasını engelleyecektir. Ancak o zaman JS'yi devre dışı bırakabilir ve bunu aşabilir veya tarayıcı hata ayıklayıcısı aracılığıyla video kaynağını bulabilirler. Ayrıca bu kötü bir kullanıcı deneyimi. Bir içerik menüsünde Farklı Kaydet'ten başka pek çok meşru şey vardır.
Özel video oynatıcı kütüphanelerini de kullanabilirsiniz. Bunların çoğu, içerik menüsünü beğeninize göre özelleştiren video oynatıcılar uygular. Böylece varsayılan tarayıcı içerik menüsünü almazsınız. Ve eğer Farklı Kaydet'e benzer bir menü öğesi sunarlarsa, bunu devre dışı bırakabilirsiniz. Ancak yine de bu bir JS geçici çözümüdür. Zayıf yönleri önceki seçeneğe benzer.
Bunu yapmanın bir başka yolu da videoyu HTTP Canlı Akış kullanarak sunmaktır. Temelde yaptığı şey, videoyu parçalara ayırmak ve birbiri ardına sunmaktır. Çoğu yayın sitesi videoyu bu şekilde sunar. Yani Farklı Kaydetmeyi başarsanız bile, tüm videoyu değil yalnızca bir parçayı kaydedersiniz. Tüm parçaları toplamak ve bazı özel yazılımlar kullanarak birleştirmek biraz daha fazla çaba gerektirecektir.
Bir başka teknik de <canvas>
üzerine <video>
boyamaktır]3. Bu teknikte, biraz JavaScript ile sayfada gördüğünüz şey, gizli bir <video>
dan kareler oluşturan bir <canvas>
öğesidir. Ve bu bir <canvas>
olduğu için, içerik menüsü bir <video>
değil, bir <img>
menüsü kullanacaktır. Videoyu Farklı Kaydet yerine Görüntüyü Farklı Kaydet seçeneğini alırsınız.
CSRF belirteçlerini]4 de kendi yararınıza kullanabilirsiniz. Sunucunuzun sayfaya bir belirteç göndermesini sağlayabilirsiniz. Daha sonra videonuzu almak için bu belirteci kullanırsınız. Sunucunuz videoyu sunmadan önce bunun geçerli bir belirteç olup olmadığını kontrol eder veya HTTP 401 alır. Buradaki fikir, bir videoyu yalnızca bir belirtece sahip olarak alabilmenizdir; bu belirteci de doğrudan video URL'sini ziyaret ederek değil, yalnızca sayfadan geldiğinizde alabilirsiniz.
Günün sonunda, ben olsam videomu YouTube veya Vimeo gibi üçüncü taraf bir video sitesine yüklerdim. İyi video yönetim araçlarına sahipler, oynatmayı cihaza göre optimize ediyorlar ve videolarının sizin tarafınızdan sıfır çabayla kopyalanmasını önlemek için çaba sarf ediyorlar.