ฉันหมายความว่าพวกเขาทำงานอย่างไร พวกเขาจะได้รับลิงก์ไปยังสตรีมวิดีโอได้อย่างไร (ไม่ใช่แค่หน้าเว็บที่มี Flash player)
ฉันค้นหาบนเว็บ แต่ไม่พบสิ่งใดที่มีประโยชน์ (ลิงก์ทั้งหมดชี้ไปที่บริการดังกล่าว
ฉันหมายความว่าพวกเขาทำงานอย่างไร พวกเขาจะได้รับลิงก์ไปยังสตรีมวิดีโอได้อย่างไร (ไม่ใช่แค่หน้าเว็บที่มี Flash player)
ฉันค้นหาบนเว็บ แต่ไม่พบสิ่งใดที่มีประโยชน์ (ลิงก์ทั้งหมดชี้ไปที่บริการดังกล่าว
คำตอบ:
มีตัวดาวน์โหลดบรรทัดคำสั่งโอเพนซอร์ซที่ได้รับความนิยมมากเรียกyoutube-dl
ว่า มันคว้าลิงก์วิดีโอและไฟล์เสียงจริงจากลิงก์ YouTube ที่กำหนด - หรือเว็บไซต์วิดีโอยอดนิยมอื่น ๆ เช่น Vimeo, Yahoo! วิดีโอ uStream ฯลฯ
เพื่อดูว่าที่ทำดูเป็นระบาย YouTube มันมากเกินไปที่จะแสดงที่นี่ สกัดอื่น ๆ ที่มีอยู่สำหรับเว็บไซต์ที่เรียบง่าย Steven Penny มีเครื่องมือดาวน์โหลด JavaScriptสำหรับ YouTube เช่นกันซึ่งตรงไปตรงมามากกว่า
แต่โดยทั่วไปสำหรับเครื่องเล่นวิดีโอ Flash นั้นจะต้องเริ่มต้นและกำหนดค่าผ่าน JavaScript บางตัว เพียงแค่พูดเครื่องเล่นของวัตถุ Flash จะได้รับ URL ของสตรีมวิดีโอที่จะโหลด
ในการค้นหาสตรีมวิดีโอคุณจะต้องแยกวิเคราะห์รหัส HTML และ JS ของหน้าวิดีโอเพื่อค้นหารหัสการเริ่มต้นที่เกี่ยวข้องจากนั้นลองค้นหาลิงก์ไปยังไฟล์ MP4 ที่แท้จริง อาจมีข้อความธรรมดา แต่ก็สามารถสร้างได้ทันทีด้วยโทเค็นดาวน์โหลดบางตัว บ่อยครั้งที่ JavaScript ถูกทำให้งงงวยที่จะทำให้มันยากขึ้นในการสร้างมันขึ้นมาใหม่ หรือข้อมูลวิดีโออาจมีอยู่ในไฟล์ XML ที่โหลดโดย JS แบบอะซิงโครนัส
สำหรับวิดีโอดาวน์โหลด HTML5 แบบโปรเกรสซีฟมักจะมีการพูดถึงไฟล์ต้นฉบับโดยตรงในส่วนย่อยsource
ของvideo
แท็กดังนั้นหากคุณต้องการค้นหาหน้าเว็บที่mp4
คล้ายกัน ตัวอย่างเช่นในรายการข่าวเยอรมันTagesschau 100คุณจะพบกับ:
<source src="http://media.tagesschau.de/video/2014/0626/TV-20140626-1649-5801.webl.h264.mp4" type="video/mp4">
สำหรับเทคโนโลยีการเล่นขั้นสูงเช่น MPEG DASH หรือ HTTP Live Streaming (HLS) ของ Apple คุณจะต้องแยกวิเคราะห์ไฟล์ข้อมูล meta เพื่อรับสตรีมวิดีโอจริง ไฟล์เมตา ( .mpd
เช่นใน DASH และ.m3u8
สำหรับ HLS) จะมีลิงก์ไปยังส่วนของวิดีโอและเสียงซึ่งคุณจะต้องรวมกันภายหลังเพื่อให้ได้ไฟล์ที่เล่นได้
ไม่มีวิธีแก้ปัญหาทั่วไปสำหรับเรื่องนี้ มันต้องมีการตรวจสอบอย่างระมัดระวังและแก้ไขจุดบกพร่องของเว็บไซต์เป้าหมาย
นี่คือวิธีที่ฉันทำกับ JavaScript
เริ่มด้วยytplayer.config.args
วัตถุ มี URL ทั้งหมดสำหรับวิดีโอ มันถูกแบ่งออกเป็น
url_encoded_fmt_stream_map // traditional: contains video and audio stream
adaptive_fmts // DASH: contains video or audio stream
แต่ละรายการเหล่านี้เป็นอาร์เรย์ที่คั่นด้วยเครื่องหมายจุลภาคของสิ่งที่ฉันจะเรียกว่า "กระแสวัตถุ" "วัตถุกระแส" แต่ละคนจะมีค่าเช่นนี้
url // direct HTTP link to a video
itag // code specifying the quality
s // signature, security measure to counter downloading
แต่ละ URL จะได้รับการเข้ารหัสดังนั้นคุณจะต้องถอดรหัส ตอนนี้เป็นส่วนที่ยุ่งยาก
YouTube มีระดับความปลอดภัยอย่างน้อย 3 ระดับสำหรับวิดีโอของพวกเขา
unsecured // as expected, you can download these with just the unencoded URL
s // see below
RTMPE // uses "rtmpe://" protocol, no known method for these
โดยทั่วไปแล้ววิดีโอ RTMPE จะใช้กับภาพยนตร์เต็มความยาวอย่างเป็นทางการและได้รับการป้องกันด้วย SWF Verification Type 2 ซึ่งมีมา ตั้งแต่ปี 2011 และยังไม่ได้รับการออกแบบเชิงวิศวกรรมย้อนกลับ
วิดีโอประเภท "" เป็นวิดีโอที่ยากที่สุดที่สามารถดาวน์โหลดได้จริง คุณจะเห็นสิ่งเหล่านี้ในวิดีโอ VEVO และสิ่งที่คล้ายคลึง พวกเขาเริ่มต้นด้วยลายเซ็นเช่น
AA5D05FA7771AD4868BA4C977C3DEAAC620DE020E.0F421820F42978A1F8EAFCDAC4EF507DB5
จากนั้นลายเซ็นต์จะถูกรบกวนด้วยฟังก์ชั่นเช่นนี้
function mo(a) {
a = a.split("");
a = lo.rw(a, 1);
a = lo.rw(a, 32);
a = lo.IC(a, 1);
a = lo.wS(a, 77);
a = lo.IC(a, 3);
a = lo.wS(a, 77);
a = lo.IC(a, 3);
a = lo.wS(a, 44);
return a.join("")
}
ฟังก์ชั่นนี้เป็นแบบไดนามิกมันมักจะเปลี่ยนทุกวัน เพื่อให้การทำงานยากขึ้นโฮสต์ที่ URL เช่น
http://s.ytimg.com/yts/jsbin/html5player-en_US-vflycBCEX.js
สิ่งนี้นำเสนอปัญหาของ
นโยบายแหล่งกำเนิดเดียวกัน โดยพื้นฐานแล้วคุณไม่สามารถดาวน์โหลดไฟล์นี้ได้www.youtube.com
เนื่องจากเป็นโดเมนที่ต่างกัน การแก้ปัญหาของปัญหานี้คือ
ธ ด้วย CORS
s.ytimg.com
สามารถเพิ่มส่วนหัวนี้
Access-Control-Allow-Origin: http://www.youtube.com
www.youtube.com
และมันจะช่วยให้จาวาสคริปต์ในการดาวน์โหลดได้จาก แน่นอนพวกเขาไม่ทำเช่นนี้ วิธีแก้ปัญหาสำหรับวิธีแก้ปัญหานี้คือการใช้พร็อกซี CORS นี่คือพร็อกซีที่ตอบสนองด้วยส่วนหัวต่อไปนี้สำหรับคำขอทั้งหมด
Access-Control-Allow-Origin: *
ดังนั้นตอนนี้คุณได้พร็อกซีไฟล์ JS ของคุณและใช้ฟังก์ชั่นเพื่อช่วงชิงลายเซ็นคุณสามารถใช้สิ่งนั้นในการสอบถามเพื่อดาวน์โหลดวิดีโอ
s
วิดีโอRTMPE
ประเภทและวิดีโอประเภทได้หรือไม่
คำตอบของฉัน: ตั้งแต่วันที่ 22 มกราคม 2019 การใช้วิธีการเหล่านี้สามารถถูกจับได้หากคุณพยายามเลี่ยงผ่านโดยไม่ต้องเชื่อมโยงข้อมูลผู้ใช้ของคุณด้วย
ทำไม? ตั้งแต่ฉันผู้ใช้ใหม่เพื่อแพลตฟอร์มนี้ผมไม่สามารถแสดงความคิดเห็นสำหรับกฎที่ระบุโดย@ แดเนียล-B ตามToSใหม่(เป็นภาษาเยอรมันเช่นเดียวกับฉันในเยอรมนี; โปรดแปล) สำหรับ YouTube ภายใต้ $ 6.1 G $:
คุณยอมรับระบบอัตโนมัติใด ๆ (รวมถึง - แต่ไม่ จำกัด เพียง - เครื่องอ่านหุ่นยนต์สไปเดอร์หรือออฟไลน์ใด ๆ ) เพื่อใช้ในการเข้าถึงเว็บไซต์ในลักษณะที่มีการร้องขอไปยังเซิร์ฟเวอร์เพิ่มเติมภายในระยะเวลาที่กำหนด มนุษย์ภายในช่วงเวลาเดียวกันโดยใช้เว็บเบราว์เซอร์มาตรฐานแบบสาธารณะที่ไม่มีการแก้ไข
ตอนนี้พวกเขาสามารถทราบระยะเวลาสำหรับแต่ละคำขอและสามารถติดตามได้หากคุณละเมิด เป็นไปได้อย่างไรในตอนนี้เนื่องจากสถานการณ์นี้และที่อยู่ IP ภายนอกของคุณจะเป็นที่รู้จักแม้ว่าคุณจะใช้ VPN เพื่อป้องกันตัวเองโดยไม่ต้องเชื่อมโยงรายละเอียดของผู้ใช้กับบริการใด ๆ