ये सभी "YouTube से वीडियो सहेजें" सेवाओं को कैसे काम करते हैं?


62

मेरा मतलब है, वे कैसे काम करते हैं, आम तौर पर? वे स्वयं एक वीडियो स्ट्रीम का लिंक कैसे प्राप्त करते हैं (केवल एक फ़्लैश प्लेयर वाले पृष्ठ पर नहीं)?

मैंने वेब पर एक खोज की लेकिन कुछ भी उपयोगी नहीं पाया (सभी लिंक इस तरह की सेवाओं की ओर इशारा करते हैं, लेकिन उनमें से कोई भी यह नहीं बताता है कि वे वास्तव में कैसे लागू होते हैं)।

जवाबों:


51

एक बहुत ही लोकप्रिय ओपन सोर्स कमांड-लाइन डाउनलोडर कहा जाता है youtube-dl, जो बिल्कुल यही करता है। यह किसी दिए गए YouTube लिंक से वास्तविक वीडियो और ऑडियो फ़ाइल लिंक को पकड़ लेता है - या किसी अन्य लोकप्रिय वेब वीडियो साइट जैसे वीमियो, याहू! वीडियो, uStream, आदि।

यह देखने के लिए कि यह कैसे किया जाता है, YouTube चिमटा देखें । यहाँ दिखाने के लिए बस इतना ही बहुत है। अन्य चिमटा सरल साइटों के लिए मौजूद हैं । स्टीवन पेनी का YouTube के लिए एक सरल जावास्क्रिप्ट डाउनलोडर भी है, जो थोड़ा अधिक सीधा है।

लेकिन मूल रूप से, एक फ्लैश वीडियो प्लेयर के लिए, इसे कुछ जावास्क्रिप्ट के माध्यम से आरंभीकृत और कॉन्फ़िगर किया जाना चाहिए। सीधे शब्दों में, फ्लैश ऑब्जेक्ट के खिलाड़ी को लोड करने के लिए वीडियो स्ट्रीम का URL प्राप्त होगा।

वीडियो स्ट्रीम खोजने के लिए, आपको संबंधित इनिशियलाइज़ेशन कोड खोजने के लिए वीडियो पेज के HTML और JS कोड को पार्स करना होगा, और फिर वहां से वास्तविक MP4 फ़ाइल के लिंक को खोजने का प्रयास करना होगा। यह प्लेनटेक्स्ट में हो सकता है, लेकिन यह कुछ विशिष्ट डाउनलोड टोकन के साथ मक्खी पर भी उत्पन्न हो सकता है। अक्सर, इसे फिर से इंजीनियर बनाने के लिए जावास्क्रिप्ट को कठिन बना दिया जाता है। या वीडियो जानकारी को XML फ़ाइल में सम्‍मिलित किया जा सकता है जिसे JS द्वारा एसिंक्रोनस रूप से लोड किया गया है।

एचटीएमएल 5 प्रगतिशील डाउनलोड वीडियो के लिए, वास्तविक स्रोत फ़ाइल को आमतौर पर टैग के sourceबच्चे में सीधे उल्लेख किया जाता है video, इसलिए यदि आप पृष्ठ को mp4या इसी तरह की खोज करेंगे । उदाहरण के लिए जर्मन समाचार शो टागेसचाउ 100 पर , आप पाएंगे:

<source src="http://media.tagesschau.de/video/2014/0626/TV-20140626-1649-5801.webl.h264.mp4" type="video/mp4">

MPEG DASH या Apple के HTTP लाइव स्ट्रीमिंग (HLS) जैसी अधिक उन्नत प्लेबैक तकनीकों के लिए , आपको वास्तविक वीडियो स्ट्रीम प्राप्त करने के लिए मेटा-सूचना फ़ाइल को पार्स करना होगा। मेटा फ़ाइल ( .mpdउदाहरण के लिए DASH, और .m3u8HLS के लिए) में वीडियो और ऑडियो के सेगमेंट के लिंक होंगे, जिन्हें बाद में आपको प्ले करने योग्य फ़ाइल प्राप्त करने के लिए संयोजित करना होगा।

इसके लिए कोई सामान्य उपाय नहीं है। इसके लिए लक्ष्य स्थल का सावधानीपूर्वक निरीक्षण और डिबगिंग की आवश्यकता होती है।


3
एक प्रश्न, इस पर Youtube / Google की नीति क्या है? क्या वे इसके साथ ठीक हैं, या इतना नहीं?
JMK

31
.L5.1.L में सेवा की YouTube शर्तें स्ट्रीमिंग के अलावा किसी अन्य माध्यम से उनकी सामग्री की खपत को रोकती हैं, इसलिए सैद्धांतिक रूप से इसकी अनुमति नहीं है। व्यवहार में, वे इसे लागू नहीं कर पाएंगे। कोई भी डाउनलोडर कम या ज्यादा अनुकरण कर सकता है कि यह सिर्फ स्ट्रीमिंग है।
slhck

2
@StevenPenny क्या आपके पास इसका कोई गैर-सत्यापित संस्करण है?
टैंकरस्मैश

5
@ एसएलएचके फ्लैश स्वयं भी HTTP अनुरोध कर सकता है। इसके बजाय, यह ब्राउज़र के HTTP इंजन का उपयोग करता है। यदि फ़्लैश ने स्वयं अनुरोध किए, तो वे ब्राउज़र में "दृश्यमान" नहीं होंगे। यकीन है कि विज्ञापनदाताओं के लिए बहुत अच्छा होगा। ;)
डैनियल बी

3
@slhck वे इसे प्रोग्रामेटिक रूप से लागू नहीं कर सकते , लेकिन अगर उन्हें अपनी वकील टीम मिल गई तो क्या वे इसे कानूनी रूप से लागू कर सकते हैं ?
क्रंचर

35

YouTube बुकमार्क

यह मैंने जावास्क्रिप्ट के साथ किया

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 सत्यापन प्रकार 2 के साथ सुरक्षित होते हैं। यह 2011 के आसपास रहा है और अभी तक रिवर्स इंजीनियर है।

"S" वीडियो सबसे कठिन हैं जिन्हें वास्तव में डाउनलोड किया जा सकता है। आप वीवाईओओ वीडियो और इस तरह से टाइप करेंगे। वे एक हस्ताक्षर के साथ शुरू करते हैं जैसे कि

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। बेशक वे ऐसा नहीं करते हैं। इस वर्कअराउंड के लिए एक वैकल्पिक हल एक कॉर्स प्रॉक्सी का उपयोग करना है। यह एक प्रॉक्सी है जो निम्नलिखित हेडर के साथ सभी अनुरोधों का जवाब देती है

Access-Control-Allow-Origin: *

तो, अब जब आपने अपनी जेएस फाइल को बंद कर दिया है, और हस्ताक्षर का उपयोग करने के लिए फ़ंक्शन का उपयोग किया है, तो आप इसका उपयोग वीडियो डाउनलोड करने के लिए क्वेरिस्ट्रिंग में कर सकते हैं।


1
क्या आपको पता है कि (DASH प्लेबैक के लिए) YouTube खिलाड़ी मीडिया प्रतिनिधित्व से अनुरोध की जाने वाली बाइट रेंज का निर्धारण कैसे करता है? MPD फ़ाइल केवल खंडों को सूचीबद्ध करती है।
slhck

2
बिलकुल नहीं .. वीडियो और ऑडियो के लिए एक ही फाइल है, लेकिन YouTube उन्हें बाइट रेंज द्वारा, कई विडंबनाओं में अनुरोध करता है। यदि आप किसी अन्य गुणवत्ता पर स्विच करते हैं, तो यह बाइट श्रेणी को भी बदल देगा। बस सोच रहा था कि खिलाड़ी को कैसे पता है कि कौन सा बाइट ऑफसेट से मेल खाता है।
slhck

1
क्या आप एक sप्रकार का वीडियो और RTMPEप्रकार वीडियो का एक उदाहरण दे सकते हैं ?
क्लो

@SurajJain यहां नया पृष्ठ है - मैं इस उत्तर को फिर से लिखूंगा क्योंकि मैं एक अलग विधि का उपयोग करता हूं अब github.com/svnpenn/umber/blob/master/bmklet/youtube/download.js
स्टीवन पेनी

लिंक मुझे 404 देता है। क्या आपने रेपो को हटा दिया है?
डार्कसॉल्सॉन्ग

1

मेरा उत्तर: २२ जनवरी २०१ ९ से, इन विधियों का उपयोग करके पकड़ा जा सकता है यदि आप अपनी उपयोगकर्ता जानकारी को लिंक किए बिना बाईपास करने का प्रयास करते हैं।

क्यों? चूंकि मैं इस प्लेटफ़ॉर्म का नया उपयोगकर्ता हूं, इसलिए मैं @ डैनियल-बी द्वारा निर्दिष्ट नियम के लिए टिप्पणी नहीं कर सकता । नए ToS के अनुसार (जर्मन में जैसा कि मैं जर्मनी में हूं; कृपया $ 6.1 G $ के तहत YouTube के लिए अनुवाद करें) :

आप किसी भी स्वचालित प्रणाली (जिसमें - लेकिन किसी भी रोबोट, मकड़ी या ऑफ़लाइन पाठक तक सीमित नहीं है) का उपयोग करने के लिए सहमत हैं कि वेबसाइट पर इस तरह से उपयोग किया जाता है कि एक निर्दिष्ट समय के भीतर सर्वर से अधिक अनुरोध YouTube को यथोचित उत्पादन करने में सक्षम होने का निर्देश देता है। एक सार्वजनिक रूप से उपलब्ध, अनमॉडिफाइड मानक वेब ब्राउज़र का उपयोग करके एक ही समय अवधि के भीतर एक मानव;

अब वे प्रत्येक अनुरोध के लिए समय अवधि का पता लगा सकते हैं और यदि आप उल्लंघन कर रहे हैं तो उसे ट्रैक कर सकते हैं। अब यह कैसे संभव है, इस परिदृश्य को देखते हुए और आपके बाहरी आईपी पते को तब भी जाना जाएगा जब आप किसी भी सेवा में उपयोगकर्ता के विवरण को लिंक किए बिना खुद को बचाने के लिए वीपीएन का उपयोग करते हैं।


1
भविष्य में आपका स्वागत है यात्री ... यह स्पष्ट नहीं है कि यह लेखक के सवाल का जवाब कैसे देता है
रामहुंड

यदि आप लेखक को चेतावनी देना चाहते हैं, तो एक विशिष्ट उत्तर के संबंध में, आपको एक टिप्पणी प्रस्तुत करनी चाहिए और किसी भी उत्तर को अस्वीकार कर देना चाहिए जो आपको लगता है कि संभव कानूनी मुद्दों के कारण सहायक नहीं था जो पालन कर सकते थे। यह उत्तर और अधिक पढ़ता है जैसे आप चर्चा मंच पोस्ट पर क्या पाएंगे, और सुपर उपयोगकर्ता, चर्चा मंच नहीं है
रामहुंड
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.