Istnieje bardzo popularny program do pobierania wiersza poleceń o otwartym kodzie źródłowym youtube-dl
, który właśnie to robi. Pobiera rzeczywiste łącza plików wideo i audio z danego łącza YouTube - lub dowolnej innej popularnej witryny wideo, takiej jak Vimeo, Yahoo! Wideo, uStream itp.
Aby zobaczyć, jak to się robi, zajrzyj do ekstraktora YouTube . To po prostu zbyt wiele do pokazania tutaj. Istnieją inne ekstraktory dla prostszych stron . Steven Penny ma również prosty downloader JavaScript na YouTube, który jest nieco prostszy.
Ale w zasadzie, w przypadku odtwarzacza wideo Flash, należy go zainicjować i skonfigurować za pomocą JavaScript. Mówiąc wprost, odtwarzacz obiektu Flash otrzyma adres URL strumienia wideo do załadowania.
Aby znaleźć strumień wideo, musisz przeanalizować kod HTML i JS strony wideo, aby znaleźć odpowiedni kod inicjujący, a następnie spróbuj znaleźć link do rzeczywistego pliku MP4. Może występować w postaci zwykłego tekstu, ale można go również generować w locie za pomocą określonych tokenów do pobrania. JavaScript jest często zaciemniany, aby utrudnić jego ponowne zaprojektowanie. Lub informacje o filmie mogą być zawarte w pliku XML ładowanym asynchronicznie przez JS.
W przypadku wideo HTML5 z progresywnym pobieraniem rzeczywisty plik źródłowy jest zwykle wymieniany bezpośrednio w source
elemencie potomnym video
znacznika, więc jeśli przeszukasz stronę mp4
lub coś podobnego. Na przykład w niemieckim programie informacyjnym Tagesschau 100 znajdziesz:
<source src="http://media.tagesschau.de/video/2014/0626/TV-20140626-1649-5801.webl.h264.mp4" type="video/mp4">
W przypadku bardziej zaawansowanych technologii odtwarzania, takich jak MPEG DASH lub HTTP Live Streaming firmy Apple (HLS), musisz przeanalizować plik meta-informacji, aby uzyskać rzeczywisty strumień wideo. Plik meta ( .mpd
na przykład w DASH i .m3u8
HLS) będzie zawierał łącza do segmentów wideo i audio, które później będziesz musiał połączyć, aby uzyskać plik do odtworzenia.
Nie ma na to ogólnego rozwiązania. Wymaga starannej kontroli i debugowania strony docelowej.
YouTube Bookmarklet
Tak właśnie zrobiłem z JavaScript
Zacznij od
ytplayer.config.args
obiektu. Zawiera wszystkie adresy URL filmu. Jest podzielony naKażdy z nich jest tablicą oddzieloną przecinkami tego, co nazwałbym „obiektami strumieniowymi”. Każdy „obiekt strumienia” będzie zawierał takie wartości
Każdy adres URL zostanie zakodowany, więc będziesz musiał go odkodować. Teraz trudna część.
YouTube ma co najmniej 3 poziomy bezpieczeństwa dla swoich filmów
Filmy RTMPE są zwykle używane w oficjalnych pełnometrażowych filmach i są chronione za pomocą SWF Verification Type 2. Jest to od 2011 roku i nie zostało jeszcze poddane inżynierii wstecznej.
Filmy typu „s” są najtrudniejsze do pobrania. Zazwyczaj zobaczysz je na filmach VEVO i podobnych. Zaczynają od podpisu, takiego jak
Następnie podpis jest kodowany za pomocą takiej funkcji
Ta funkcja jest dynamiczna i zazwyczaj zmienia się każdego dnia. Aby utrudnić, funkcja jest hostowana pod adresem URL takim jak
wprowadza to problem polityki tego samego pochodzenia . Zasadniczo nie można pobrać tego pliku,
www.youtube.com
ponieważ są to różne domeny. Obejściem tego problemu jest CORS . W przypadku CORSs.ytimg.com
można dodać ten nagłóweki pozwoliłoby na pobieranie JavaScript z
www.youtube.com
. Oczywiście, że tego nie robią. Obejściem tego obejścia jest użycie serwera proxy CORS. Jest to serwer proxy, który odpowiada na wszystkie żądania następującym nagłówkiemWięc teraz, gdy masz już proxy swojego pliku JS i użyłeś funkcji do szyfrowania podpisu, możesz użyć tego w zapytaniu, aby pobrać wideo.
źródło
s
typu wideo iRTMPE
typu wideo?Moja odpowiedź: od 22 stycznia 2019 r. Przyłapanie tych metod może zostać przyłapane, jeśli spróbujesz ominąć również nie łącząc informacji o użytkowniku.
Dlaczego? ponieważ jestem nowym użytkownikiem tej platformy, nie mogę komentować reguły określonej przez @ Daniel-B . Zgodnie z nowym Regulaminem (w języku niemieckim, tak jak ja w Niemczech; proszę tłumaczyć) dla YouTube poniżej 6,1 USD:
Teraz mogą dowiedzieć się, jaki jest czas trwania każdego żądania i mogą śledzić, czy naruszasz. Jak to jest teraz możliwe, biorąc pod uwagę ten scenariusz, a Twój zewnętrzny adres IP będzie znany, nawet jeśli korzystasz z VPN, aby się zabezpieczyć bez łączenia danych użytkownika z jakąkolwiek usługą.
źródło