Stream-Adressen ermitteln
Archivierte Anleitung
Dieser Artikel wurde archiviert. Das bedeutet, dass er nicht mehr auf Richtigkeit überprüft oder anderweitig gepflegt wird. Der Inhalt wurde für keine aktuell unterstützte Ubuntu-Version getestet. Wenn du Gründe für eine Wiederherstellung siehst, melde dich bitte in der Diskussion zum Artikel. Bis dahin bleibt die Seite für weitere Änderungen gesperrt.
Achtung!
Die Verwendung dieses Howto geschieht auf eigene Gefahr. Bei Problemen mit der Anleitung melde dies bitte in der dazugehörigen Diskussion und wende dich zusätzlich an den Verfasser des Howtos.
Hinweis:
Diese Howto-Anleitung wurde zuletzt von linux_joy am 31.05.2017 unter Ubuntu 14.04 erfolgreich getestet.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
Wenn man Internet-Streams – z.B. Internetradio oder Internet-TV, aber auch Inhalte aus Video-Portalen oder Mediatheken – unabhängig vom Browser entweder wiedergeben oder dauerhaft speichern möchte, so muss man oftmals zunächst die Adresse herausfinden, unter der der jeweilige Inhalt abgelegt ist. Falls man die Streaming-Webseite mit dem Browser aufruft, so ist die Adressen zu der Streaming-Datei bzw. zum Live-Stream nämlich in den seltensten Fällen direkt sichtbar. Meist wird auf eine mehr oder minder versteckte Streaming-URL verwiesen, die dafür sorgt, dass entweder der im Browser integrierte Mediaplayer für HTML5 oder das entsprechende Browser-Plugin zum Abspielen aufgerufen wird. Um die Adresse herauszufinden, gibt es folgende Möglichkeiten:
Die Adresse kann in Listen aufgeführt sein, z.B. Internet-TV/Stationen bei Internet-TV und Radio-Stationen oder Internetradio-Stationen bei Internetradio.
Die Adresse kann auf der vom Browser aufgerufenen Internetseite selbst aufgeführt sein.
Die Adresse kann im Quelltext der Internetseite aufgeführt sein.
Beim Herüberfahren mit der Maus über die "Abspielen"-Schaltfläche kann die Adresse per -Klick→"Link-Adresse kopieren" in die Zwischenablage eingefügt werden.
Beim Abspielen des Streams wird die Adresse (kurzzeitig) angezeigt.
Beim Abspielen durch das Totem-Plug-in (siehe Streaming) kann die Adresse per -Klick→"Kopieren" in die Zwischenablage eingefügt werden.
Beim Abspielen des Streams ist die Netzwerkanalyse der Browser-Entwicklerwerkzeuge aktiv (sofern vorhanden). Dies ist häufig sowohl die unkomplizierteste wie auch erfolgversprechendste Methode.
Man kann diverse Browser-Erweiterungen verwenden.
Man kann die Adresse mit Paket-Sniffern wie tcpdump, tshark oder Wireshark "erschnüffeln" (engl.: sniff).
Hinweis:
Einige Player wie z.B. VLC oder mpv können Inhalte einiger Video-Portale wie YouTube aber auch eigenständig wiedergeben. Sie brauchen also lediglich zusammen mit der jeweiligen Webseiten-URL aufgerufen werden. In gleicher Manier klappt es oftmals mit den im Abschnitt Programme aufgeführten Anwendungen im Artikel Streams speichern.
Der Artikel Streaming erklärt zum einen Grundlegendes zum Thema und zum anderen, mit welchen Playern und Browser-Plugins sich Audio- und Video-Streams abspielen lassen. Das vorliegende Howto bezieht sich sowohl auf On-Demand-Streaming als auch auf Live-Streaming (wie z.B. Internetradio oder Internet-TV). Außerdem beziehen sich alle Abschnitte dieses Howtos grundsätzlich auch auf in Flash eingebettete Videos.
Grundlegendes¶
Protokolle¶
Beginnt die Streaming-Adresse mit http://
, so handelt es sich um eine Internet-Adresse (URL) mit dem Hypertext_Transfer_Protocol (HTTP). Steht am Anfang der Adresse jedoch z.B. mms://
oder rtsp://
, so deutet dies auf eine Streaming-URL mit einem Streaming-Protokoll hin:
mms://
– Microsoft_Media_Server_Protocol (MMS) – deutet auf einen Live-Stream bzw. eine Streaming-Datei im Microsoft-Format, meist .wmv hin.rtsp://
– RealTime Streaming Protocol (RTSP) – deutet entweder auf eine Datei im Real-Media Format (meist .rm), eine Datei im MPEG-4-Format (.mp4) oder einen Live-Stream hin.rtmp://
(usw.) – Real Time Messaging Protocol (RTMP). Entweder eine Datei im MPEG-4-Format (.mp4), eine Datei im Flash-Video-Format (.flv) oder ein Live-Stream.
HTTP-Streaming¶
Als HTTP-Streaming bezeichnet man die Auslieferung von Streaming-Inhalten über einen konventionellen Webserver. Der Webserver wird dabei als einfacher Dateiserver zur Auslieferung von kleinen Teilstücken der gesamten Datei bzw. des Live-Streams, sogenannten Segmenten, genutzt. Die jeweilige Streaming-URL verweist dann auf eine Wiedergabeliste, welche wiederum Verweise entweder direkt zu den Teil-Segmenten enthält oder aber zu verschiedenen Unter-Wiedergabelisten mit Verweisen zu deren Teil-Segmenten.
HTTP Live Streaming, auch HLS bzw. AppleHLS abgekürzt. Die URLs zu den Wiedergabelisten haben die Endung .m3u8 bzw. master.m3u8 (siehe auch Adress-Endungen.
HTTP Dynamic Streaming für Adobe_Flash, auch als HDS bzw. AdobeHDS bekannt. Die URLs zu den Wiedergabelisten haben die Endung manifest.f4m, oft wird diese aber auch noch durch zusätzliche Zeichen, z.B. als manifest.f4m?hdcore oder manifest.f4m?g=CKCJHXUFIVQT&hdcore=3.8.0&plugin=aasp-3.8.0.52.27 ergänzt (siehe auch Adress-Endungen).
DASH (Dynamic Adaptive Streaming over HTTP), auch bekannt als MPEG-DASH. Verwendet u.a. von den beiden Video-Portalen Vimeo und YouTube.
Adress-Endungen¶
Bei Streaming-Dateien bzw. Live-Streams kann man nicht generell davon ausgehen, dass die Streaming-Adresse die Endung eines gültigen Audio- oder Video-Formats wie z.B. .avi, .mov, .mp3, .mp4 oder .wmv besitzt. Bei URLs mit der Endung .asx (bzw. .wvx) handelt es sich um eine Wiedergabelisten-Datei, in welcher sich wiederum eine mms://
-Datei bzw. ein mms://
-Stream befindet. Man erhält die Adresse von beiden, indem man:
entweder mit cURL den Datei-Inhalt der URL mit der .asx-Endung herunterlädt und damit auch direkt auf die Standardausgabe (stdout) des Terminals[3] schreibt:
curl URL.asx
oder die URL mit der .asx-Endung direkt in den Browser eingibt
oder die Datei mit einem Download-Manager herunterlädt und sie dann mit einem Text-Editor öffnet[4].
Nun sieht man die Adresse der mms://
-Datei bzw. des mms://
-Streams. Ähnlich verhält es sich auch mit den Wiedergabelisten- bzw. Container-Dateitypen .f4m, .json, .manifest, .meta, .mov, .m3u, .pls, .smi, .smil, .wpl und .xspf.
Eine weitere Variante des vorstehend Beschriebenen sind URLs mit der Endung .m3u8 bzw. master.m3u8. Sie sind Bestandteil des "HTTP Live Streaming Protocols", auch HLS abgekürzt, welches wiederum eine Variante des HTTP-Streaming darstellt. Die master.m3u8-Datei funktioniert als dynamische Wiedergabeliste, die Links auf weitere .m3u8-Dateien für Streams in unterschiedlichen Bitraten enthält. Die Container für die unterschiedlichen Bandbreiten enthalten einfache Links zu den segmentierten Dateien bzw. Streams im .ts-Format, die vom Client nacheinander heruntergeladen werden.
Es kommt auch vor, dass sich die Adresse innerhalb des Seiten-Quelltextes in einer URL mit der Endung .xml versteckt, welche man dann direkt in den Browser eingibt und in der Ausgabe entweder direkt die Adresse sieht oder aber vielleicht auch eine weitere .xml-URL, mit welcher man gleichermaßen verfährt.
Programmkennung ändern¶
Internetfähige Programme übertragen ihren Namen bei Anfragen (Requests) an den Server als Zeichenkette, dem sogenannten User Agent, also quasi die Visitenkarte des (Download-)Programms. Manchmal ist es notwendig, diese Programmkennung (temporär) zu ändern und damit diese Information vor den Webseitenbetreibern zu verbergen, welches Zugriffs-Programm (z.B. Browser oder Download-Programm) und welches Betriebssystem man wirklich benutzt. Stattdessen gaukelt man dem Webserver einen anderen Browser und/oder Betriebssystem vor, beispielsweise um die besagten Stream-Adressen zu ermitteln, oder aber auch um Streaming-Dateien herunterladen zu können. Als UA-Kennungen eignen sich besonders solche von Fernsehern und Mobilgeräten sowie außerdem auch Windows-Browsern von wie z.B.:
ein HbbTV-fähiges Endgerät, z.B. ein Fernseher:
"MSDL (compatible; LG NetCast.TV-2011) HbbTV/1.1.1 (; LGE; GLOBAL_PLAT3; 1.0; 1.0;)"
AppleTV: z.B.
"iTunes-AppleTV/4.1"
Apple iPad - iOS 8_4 - Safari 8 (600.1):
"Mozilla/5.0 (iPad; CPU OS 8_4_1 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Version/8.0 Mobile/12H321 Safari/600.1.4"
Apple iPad 2 - iOS 6_0 - Safari 6 (8536.25):
"Mozilla/5.0 (iPad; CPU OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5355d Safari/8536.25"
"FMLE/3.0 (compatible; FMSc/1.0)"
(Adobe Flash Media Live Encoder)"Mozilla/5.0 (Windows NT 10.0; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0"
(Mozilla Firefox 50.0 auf Windows 10)
Weitere Beispiele für andere Browser oder Betriebssysteme (etwa für den Fall, dass z.B. der Internet Explorer Voraussetzung für das Betrachten einer Seite ist) findet man u.a. über die Links.
Siehe auch den Abschnitt Programmkennung ändern.
Um den UA-String in den Programmen (temporär) ändern zu können, gibt es mehrere Möglichkeiten:
GUI¶
Browser-Erweiterungen¶
Die nachfolgend vorgestellten Browser-Erweiterungen ändern alle den UA-String, der per HTTP-Header gesendet wird. Teilweise wird zusätzlich aber auch noch der Wert von navigator.userAgent
, der mit Hilfe von Javascript abfragt wird, geändert.
Der eigene User Agent kann mittels diverser Testseiten getestet werden. Den User Agent, der per HTTP-Header gesendet wird, überprüft man z.B. bei httpbin.org 🇬🇧, useragentstring.com 🇬🇧 oder www.whoishostingthis.com 🇬🇧; den Wert von navigator.userAgent
, der mit Hilfe von Javascript abfragt wird, überprüft man dagegen z.B. mittels der Webseite Pipelight diagnostic 🇬🇧 (s.a. Pipelight).
Firefox¶
= User Agent Overrider¶
Man kann z.B. die Firefox-Erweiterung User Agent Overrider 🇬🇧 🇩🇪 verwenden. Neben dem UA-String, der per HTTP-Header gesendet wird, wird zusätzlich der Wert von navigator.userAgent
, der mit Hilfe von Javascript abfragt wird, geändert.
Nach der Einbindung dieser Erweiterung in Firefox öffnet man die Einstellungen und kann nun zeilenweise UA-Strings zum Ende der Eingabebox hinzufügen.
= User Agent Switcher¶
Man kann auch die etwas funktionsreichere Erweiterung User Agent Switcher 🇬🇧 🇩🇪 verwenden. Es wird aber lediglich der UA-String, der per HTTP-Header gesendet wird, geändert.
Terminal¶
In einem Terminal[3] kann man den UA z.B. via cURL übertragen:
curl -A 'MSDL (compatible; LG NetCast.TV-2011) HbbTV/1.1.1 (; LGE; GLOBAL_PLAT3; 1.0; 1.0;)' http://example.com/dir/
Browser-Entwicklerwerkzeuge¶
Die sogenannten "Entwicklerwerkzeuge" bzw. “Entwicklertools” sind eine Kollektion von hilfreichen Werkzeugen, die in jedem modernem Webbrowser mitgeliefert werden. Sie erlauben es, die gerade angezeigte Webseite zu analysieren.
Zu den Entwicklertools gelangt man, wenn man an einer beliebigen Stelle auf der Webseite einen -Klick tätigt und anschließend auf “Element untersuchen” bzw. “Untersuchen” -klickt.
Siehe auch WebWissen: Entwicklertools im Browser 🇩🇪.
Netzwerkanalyse¶
Die Netzwerkanalyse zeigt alle Netzwerkanfragen im Webbrowser. Generell sollte man bei der Netzwerkanalyse einen "privaten Modus" nutzen, in welchem keinerlei Chronik (z.B. besuchte Seiten, Sucheinträge, Download-Chronik, Formulardaten, Cookies, und temporäre Internetdateien) angelegt wird, damit verhindert wird, dass man bei einer Streaming-Seite wegen von dieser gesetzten Cookies z.B. dauerhaft auf ein bestimmtes Player-Format (also beispielsweise Adobe Flash oder HTML) festgelegt wird.
Im Zweifelsfall sollte man, falls man nach dem Content-Typ "Medien" filtert und nichts angezeigt wird, die Filterung zurücknehmen und danach in der dann angezeigten Liste der Netzwerkanfragen nach typenfreien Inhalten suchen. Oft erscheinen letztere aber auch, wenn man nach dem Content-Typ "Sonstiges" filtert.
Außerdem kann man oftmals über das Bedienpanel des in die Webseite eingebetteten Mediaplayers die Qualität des abzuspielenden Videos anpassen. Das Bedienpanel erscheint aber meistens erst via Mouseover.
Chromium¶
Um im Chromium die Analyseansicht zu öffnen, -klickt man in der Adressleiste ganz rechts auf das Hamburger-Menü-Icon und weiter auf "Weitere Tools → Entwicklertools"
Die Entwicklertools erscheinen am rechten Browserrand. In der obersten Symbolleiste -klickt man dann auf "Netzwerkanalyse". Man lädt die Seite neu, um die Anfrage zu sehen:
Liste der Netzwerkanfragen¶
Per Voreinstellung zeigt die Netzwerkanalyse eine Liste aller Netzwerkanfragen, die während des Ladens der Seite gemacht wurden. Jede Anfrage steht in einer eigenen Zeile.
Nach Content-Typen filtern¶
In der viertobersten Symbolleiste der Netzwerkanalyse kann man über die Schaltflächen Filter für die Anfragen erstellen, abhängig vom Content-Typ der Anfrage. Hier ist der Typ "Media" relevant. In einer Zeile der so gefilterten Liste der Netzwerkanfragen klickt man jetzt mit der rechten Maustaste auf das Feld in der Spalte "Name" und im sich demzufolge aufgeklappt habenden Kontextmenü mit der linken Maustaste auf "Copy Link Adress". Damit befindet sich die Adresse der Medien-Datei in der Zwischenablage.
Firefox¶
Um im Firefox die Analyseansicht zu öffnen, navigiert man in der Menüleiste 🇩🇪 zu "Extras → Web-Entwickler → Netzwerkanalyse" oder öffnet bei "Web-Entwickler" die "Entwickler-Symbolleiste" und wechselt zum Reiter "Netzwerkanalyse". Zur Letzteren kommt man aber auch, indem man ganz rechts in der Adressleiste 🇩🇪 auf das Hamburger-Menü-Icon -klickt und weiter auf "Entwickler-Werkzeuge → Netzwerkanalyse".
Die Netzwerkanalyse 🇩🇪 erscheint am unteren Browserrand. Man lädt die Seite neu, um die Anfrage zu sehen:
Liste der Netzwerkanfragen¶
Per Voreinstellung zeigt die Netzwerkanalyse eine Liste aller Netzwerkanfragen, die während des Ladens der Seite gemacht wurden. Jede Anfrage steht in einer eigenen Zeile.
Nach Content-Typen filtern¶
In der zweitobersten Symbolleiste der Netzwerkanalyse kann man über die Schaltflächen Filter für die Anfragen erstellen, abhängig vom Content-Typ der Anfrage. Hier ist der Typ "Medien" relevant. In einer Zeile der so gefilterten Liste der Netzwerkanfragen klickt man jetzt mit der rechten Maustaste auf das Feld in der Spalte "Datei" und im sich demzufolge aufgeklappt habenden Kontextmenü mit der linken Maustaste auf "Adresse kopieren". Damit befindet sich die Adresse der Medien-Datei in der Zwischenablage.
Browser-Erweiterungen¶
Firefox¶
Mit den Erweiterungen UnPlug 🇬🇧 🇩🇪 und Video DownloadHelper 🇬🇧 🇩🇪 können die Stream-Adressen ebenfalls ermittelt werden:
Video DownloadHelper¶
Nach der Installation der Erweiterung ruft man den Webplayer und spielt die Datei bzw. den Sender ab. Nach einer kurzen Zeit kann man rechts neben dem -Symbol auf das kleine Dreieck. Im sich nun öffnenden Menü den Stream (z.B. livestream.mp3) heraussuchen und auf diesem kurz verweilen. Aus dem sich öffnenden Menü den Punkt "Adresse kopieren" wählen und den Sender bzw. die Stream-URL übernehmen.
UnPlug¶
Nach Aufruf der gewünschten Seite das -Symbol anklicken und die Stream-Adresse mittels "Kopiere Link" übernehmen.
Sonstige¶
MediaPlayerConnectivity 🇬🇧 🇩🇪 - Firefox-Erweiterung
Man kann auch die Firefox-Erweiterung Adblock Plus verwenden, hierbei im FF unter "Ansicht" auf "Adblock Plus: Elemente der geöffneten Seite" klicken.
Paket-Sniffer¶
Mit Paket-Sniffern kann man die Adresse "erschnüffeln" (engl.: sniff). Neben dem grafischen Wireshark gibt es dafür auch kommandozeilenbasierte Programme wie tcpdump oder aber tshark.
Hinweis:
Paket-Sniffer funktionieren hinsichtlich des Zweckes dieses Howtos nur mit unverschlüsselten HTTP-Verbindungen. Bei HTTPS können sie lediglich die Header-Zeilen anzeigen und NICHT das Innere der HTTP-Pakete darstellen. Falls man das letztere Feature unbedingt braucht und nicht stattdessen eine von den in diesem Artikel vorgestellten Alternativen einsetzt, so kann man es mit einem lokalen Proxyserver probieren.
Informationen zu den ermittelten Stream-Adressen anzeigen¶
Bei den ermittelten Stream-Adressen ist es eventuell interessant, sich vor dem Anhören oder -sehen bzw. Herunterladen der Streaming-Dateien bzw. der Live-Streams deren technische Daten wie Content-Type, Audio- und Video-Format, Auflösung, SAR und DAR anzeigen zu lassen bzw. bei Wiedergabelisten (zusätzlich) deren Direkt-URLs zu den verschiedenen Stream-Qualitäten.
Die Netzwerkanalyse der Browser-Entwicklerwerkzeuge liefert hierfür bereits einige Informationen, Ausführlicheres liefern dann die Programme Archiv/avprobe, MediaInfo sowie MPlayer als Kommandozeilen-basierte Anwendungen, MediaInfo optional auch mit einer GTK-basierten grafischen Benutzeroberfläche (GUI).
Die Kommandozeilen-Befehle[3] lauten:
avprobe -v debug -i "URL"
wobei das
-v debug
für "Loglevel debug" und das-i
für "Input" steht.mediainfo -f "URL"
wobei das
-f
für "Full" (Ausgabe aller internen Tags) steht.mplayer -v "URL"
wobei das
-v
für "verbosity level" (erweiterte Ausgabe) steht. MPlayer muss man mit der Tastenkombination Strg + C stoppen.
Falls man anstatt avprobe
(aus dem Archiv/Libav-Projekt) lieber ffprobe
(aus dem FFmpeg-Projekt) einsetzt, so lautet der Befehl dafür auf der Kommandozeile[3]:
ffprobe -v debug -i "URL"
Falls man bei HTTP-Streaming (zusätzlich) die Direkt-URLs der Wiedergabelisten zu den verschiedenen Stream-Qualitäten herausbekommen möchte, so klappt das meistens, indem man:
entweder mit cURL die jeweilige Master-Wiedergabeliste herunterlädt und damit auch direkt auf die Standardausgabe (stdout) des Terminals[3] schreibt:
curl WIEDERGABELISTEN-URL
oder aber diese mit einem Download-Manager herunterlädt und sie dann mit einem Text-Editor öffnet[4].
Links¶
Intern¶
Streaming Grundlegendes zum Thema; Audio- und Videostreams mit Browser-Plugins abspielen
Streams speichern Übersichtsartikel
Internetradio Übersichtsartikel
Internet-TV Übersichtsartikel
Extern¶
Adaptive streaming - a simple explanation of how it works – Bitmovin Inc 🇬🇧
Adaptive Streaming – JW Player 🇬🇧
Listen von User Agent Strings: