Jump to content

HLS: Host-Header überschreibbar machen


Constantin

Recommended Posts

Hi zusammen,

 

ich habe inzwischen schon so manchen HLS-Stream zum Laufen gebracht, teilweise unter Verwendung von ?addhdr=

 

Jetzt habe ich allerdings das Problem, dass ich einen Stream gerne über einen Webproxy laufen lassen würde.

Über FFMPEG läuft das z.B. problemlos, ich ersetze den Host in der URL durch die IP-Adresse des Proxies und setze den richtigen Host als Header.

Also angenommen, die Stream-URL lautete https://irgendwas.akamaihd.net/hls/live/master.m3u8 und mein Proxy hätte die IP 0.0.0.0, dann läuft folgendes mit FFMPEG problemlos:

ffmpeg.exe -headers "Host: irgendwas.akamaihd.net" -i "https://0.0.0.0/hls/live/master.m3u8" -f mpegts -c:a copy -c:v copy

Jetzt habe ich versucht, diesen Stream wiefolgt im DVBViewer einzurichten:

https://0.0.0.0/hls/live/master.m3u8?addhdr=Host: irgendwas.akamaihd.net

Das läuft aber nicht, und in der DVBViewer.log kann ich auch nachvollziehen, weshalb:

26.09.17 10:39:47.876 TDocumentHTTPStream  Connecting to    http://0.0.0.0/hls/live/master.m3u8
26.09.17 10:39:48.218 TDocumentHTTPStream  Request Header   
GET /hls/live/master.m3u8 HTTP/1.1
Host: 0.0.0.0:80
User-Agent: Mozilla/5.0 (iPad; CPU OS 9_3_5 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13G36 Safari/601.1
Host: irgendwas.akamaihd.net

26.09.17 10:39:48.560 TDocumentHTTPStream  Received header  
HTTP/1.0 400 Bad Request
Server: AkamaiGHost
Mime-Version: 1.0
Content-Type: text/html
Content-Length: 208
Expires: Tue, 26 Sep 2017 08:39:46 GMT
Date: Tue, 26 Sep 2017 08:39:46 GMT
Connection: close

26.09.17 10:39:48.563 THLSStream           Getting the M3U Playlist failed 
26.09.17 10:39:48.574 TFileDevice          CloseDevice      

Der Host-Header wird zweimal gesetzt, der Server verwirft aber wohl den zweiten und daher ist das Request ungültig.

 

Könnte man die Logik, die das Request zusammenbaut nicht so anpassen, dass der Host-Header nur dann automatisch gesetzt wird, wenn er nicht über ?addhdr= überschrieben wird?

Dann würde der Stream nämlich auch schon problemlos laufen! :) Und es wäre auch für viele andere Streams eine Lösung, wo der "X-Forwarded-For"-Header nicht ausreicht.

 

Vielleicht lässt sich das ja für eine kommende Version ohne viel Aufwand umsetzen, wäre großartig!

Link to comment
4 hours ago, Constantin said:

Könnte man die Logik, die das Request zusammenbaut nicht so anpassen, dass der Host-Header nur dann automatisch gesetzt wird, wenn er nicht über ?addhdr= überschrieben wird?

 

Könnte man. Das wird beim User-Agent ja bereits so gemacht. Ab den nächsten Releases wird das funktionieren.

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...