ดีคุณไม่สามารถป้องกันได้ 100% แต่คุณสามารถทำให้มันยากขึ้น วิธีการเหล่านี้ที่ฉันอธิบายผมต้องเผชิญกับพวกเขาในระหว่างการศึกษาวิธีการป้องกันในPluralsightและBestDotNetTraining อย่างไรก็ตามไม่มีวิธีการใดที่ทำให้ฉันไม่สามารถดาวน์โหลดสิ่งที่ฉันต้องการได้ แต่ฉันมีเวลายากที่จะดูแลการดาวน์โหลดเพื่อให้ผ่านการป้องกัน
นอกเหนือจากวิธีการอื่นที่กล่าวถึงเพื่อปิดใช้งานเมนูบริบท ผู้ใช้ยังคงสามารถใช้เครื่องมือของบุคคลที่สามเช่น InternetDownload manager หรือซอฟต์แวร์อื่นที่คล้ายคลึงกันเพื่อดาวน์โหลดวิดีโอ วิธีการป้องกันที่ฉันอธิบายที่นี่คือการลดซอฟต์แวร์บุคคลที่สามเหล่านั้น
ความต้องการของวิธีการทั้งหมดนี้คือการบล็อกผู้ใช้เมื่อคุณระบุว่ามีคนกำลังดาวน์โหลดวิดีโอของคุณ ด้วยวิธีนี้พวกเขาสามารถดาวน์โหลดวิดีโอเพียงหนึ่งหรือสองวิดีโอเท่านั้นก่อนที่คุณจะห้ามไม่ให้พวกเขาเข้าถึงเว็บไซต์ของคุณ
คำปฏิเสธ
ฉันจะไม่ยอมรับความรับผิดชอบใด ๆ หากมีผู้ใช้วิธีการเหล่านี้ในทางที่ผิดหรือใช้เพื่อเป็นอันตรายต่อผู้อื่นหรือเว็บไซต์ที่ฉันกล่าวถึงเป็นตัวอย่าง เป็นเพียงการแบ่งปันความรู้เพื่อช่วยคุณปกป้องผลิตภัณฑ์ทางปัญญาของคุณ
สร้างลิงค์ด้วยการหมดอายุ
ข้อกำหนดสำหรับสิ่งนี้คือการสร้างลิงค์ดาวน์โหลดต่อผู้ใช้ ที่สามารถจัดการได้อย่างง่ายดายโดยการจัดเก็บหยดสีฟ้าหรือ Amazon s3 คุณสามารถสร้างลิงค์ดาวน์โหลดที่มีการประทับเวลาสองเท่าของความยาววิดีโอ จากนั้นคุณต้องจับลิงค์วิดีโอนั้นและเวลาที่ร้องขอ สิ่งนี้จำเป็นสำหรับวิธีถัดไป catch สำหรับวิธีนี้คือคุณกำลังสร้างลิงค์ดาวน์โหลดเมื่อผู้ใช้คลิกปุ่มเล่น
เมื่อกดปุ่มเหตุการณ์คุณจะส่งคำขอไปยังเซิร์ฟเวอร์และรับลิงก์และอัปเดตแหล่งที่มา
เร่งอัตราการร้องขอวิดีโอ
จากนั้นคุณตรวจสอบความเร็วของการร้องขอของผู้ใช้สำหรับวิดีโอที่สอง ถ้าผู้ใช้ร้องขอลิงค์ดาวน์โหลดเร็วเกินไปคุณก็บล็อกมันทันที คุณไม่สามารถวางขีด จำกัด นี้ใหญ่เกินไปเนื่องจากคุณสามารถปิดกั้นผู้ใช้ที่กำลังดูหรือ skimming ผ่านวิดีโอโดยไม่ตั้งใจ
เปิดใช้งานช่วง HTTP
ใช้ไลบรารี js เช่นvideojsเพื่อเล่นวิดีโอของคุณและคุณต้องส่งคืน AcceptRange ในส่วนหัวของคุณ พื้นที่เก็บข้อมูลสีน้ำเงินของ Azure รองรับสิ่งนี้ได้นอกกรอบ เบราว์เซอร์เริ่มดาวน์โหลดวิดีโอก้อนด้วยวิธีนี้ โดยปกติแล้ว 32byte โดย 32byte จากนั้นคุณต้องฟัง videojs 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 # ทำออกจากกล่องและสำหรับ nodejs คุณสามารถใช้request
โมดูล จากนั้นคุณต้องเริ่มต้น stopWatch ฟังแพ็กเกจที่ได้รับและเปรียบเทียบไบต์ทั้งหมดที่ได้รับเปรียบเทียบกับขนาดทั้งหมด วิธีนี้คุณสามารถคำนวณเปอร์เซ็นต์และเวลาที่ใช้ในการรับเปอร์เซ็นต์นั้น จากนั้นใช้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 (บวก / นาทีส่วนเบี่ยงเบน) จากนั้นคุณปลุก สำหรับสิ่งนี้คุณสามารถใช้การคำนวณทางสถิติเพื่อทราบความเบี่ยงเบนระหว่างคำขอ
เพื่อแก้ไขปัญหานี้ผู้ใช้สามารถกำหนดเวลาพักเครื่องแบบสุ่มระหว่างคำขอได้
รหัสตัวอย่าง
ฉันมี repo PluralSight-Downloaderที่ใช้งานได้ครึ่งทางแล้ว ฉันสร้าง repo นี้เกือบ 5 ปีที่แล้ว เพราะฉันเขียนเพื่อการศึกษาและใช้งานส่วนตัวเท่านั้น repo ยังไม่ได้รับการอัปเดตใด ๆ จนถึงตอนนี้และฉันจะไม่อัปเดตหรือทำให้ใช้งานได้ง่าย มันเป็นเพียงตัวอย่างของวิธีการทำ