Am 05.06.2020 um 10:42 schrieb Aleksandar Lazic:
Hi,
On 03.06.20 16:20, Thomas Schmiedl wrote:
Hi,
maybe someone can help me in this issue. I use
xupnpd2 (https://github.com/clark15b/xupnpd2) on my router
(with this firmware extension: https://freetz.github.io/wiki/index.en.html)
to receive/transfer some hls-streams to the TV. Now I try to
receive/transfer some youtube-hls-livestreams
(e.g. https://www.youtube.com/watch?v=F2ARbcgQN1s). Because
xupnpd2 doesn't support SSL/TLS and the author doesn't want to add SSL/TLS
support (I'm not a developer), my idea is to use haproxy as reverse proxy
to receive the m3u8/ts via haproxy and "forward" unencrypted to xupnpd2.
A first test with a single ts file works on my ubuntu-pc, but it doesn't
work on the router. Thanks for your help.
Have you tried https://github.com/clark15b/xupnpd-live
as answered in
https://github.com/clark15b/xupnpd2/issues/2
xupnpd-live doesn't work with youtube livestreams. The xupnpd-live
author doesn't want to fix it. I decided to use a reverse proxy. But
it's also not possible to download a ts-file from youtube with curl on
the router (see curl output from Debian 10 on PC and on router (chroot
Debian 10)). I also contacted the curl-users mailinglist.
Best regards,
Thomas
Here is the haproxy config (I always updated manually the
"googlevideo"-hostname):
global
defaults
mode http
timeout connect 5000
timeout client 50000
timeout server 50000
frontend main
mode http
bind *:8081
acl is_ts path -m end .ts
use_backend segments
backend segments
http-request set-header Host r1---sn-4g5e6nss.googlevideo.com
server server1 r1---sn-4g5e6nss.googlevideo.com:443 ssl verify none
curl -vv -o test.ts
"https://r1---sn-4g5e6nss.googlevideo.com/videoplayback/id/F2ARbcgQN1s.1/itag/95/source/yt_live_broadcast/expire/1591310674/ei/8iTZXqf7Ms6TgQfH7Dk/ip/2003:ce:a722:8100:d1f1:fa53:955b:66e4/requiressl/yes/ratebypass/yes/live/1/goi/160/sgoap/gir%3Dyes%3Bitag%3D140/sgovp/gir%3Dyes%3Bitag%3D136/hls_chunk_host/r1---sn-4g5e6nss.googlevideo.com/vprv/1/playlist_type/LIVE/initcwndbps/8720/mh/Bh/mm/44/mn/sn-4g5e6nss/ms/lva/mv/m/mvi/0/pl/35/keepalive/yes/fexp/23882513/mt/1591289002/sparams/expire,ei,ip,id,itag,source,requiressl,ratebypass,live,goi,sgoap,sgovp,vprv,playlist_type/sig/AOq0QJ8wRQIhAMR4NqMCSMbxOJJvsS5VouOKhydKggdyrWFygSzkywjeAiAJCwPHjosGPnLJBjbCa_tF_BH1SL_aIGltIVIYhIeB5g%3D%3D/lsparams/hls_chunk_host,initcwndbps,mh,mm,mn,ms,mv,mvi,pl/lsig/AG3C_xAwRQIhAJ95ymvewWU1H1DIaOqNeV5W-vQSPJ8tC_jJeeHk_ay4AiAca5c7LrrTMe_3Zce-2w6pzgtFIdh7ChexnwLXVIPmqA%3D%3D/playlist/index.m3u8/sq/14249504/goap/clen%3D23169%3Blmt%3D1591287722982677/govp/clen%3D112891%3Blmt%3D1591287722982679/dur/1.000/file/seg.ts"
* Expire in 0 ms for 6 (transfer 0x77365880)
* Expire in 1 ms for 1 (transfer 0x77365880)
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0*
Expire in 1 ms for 1 (transfer 0x77365880)
* Expire in 2 ms for 1 (transfer 0x77365880)
* Expire in 2 ms for 1 (transfer 0x77365880)
* Expire in 2 ms for 1 (transfer 0x77365880)
* Expire in 2 ms for 1 (transfer 0x77365880)
* Expire in 2 ms for 1 (transfer 0x77365880)
* Expire in 2 ms for 1 (transfer 0x77365880)
* Expire in 4 ms for 1 (transfer 0x77365880)
* Expire in 3 ms for 1 (transfer 0x77365880)
* Expire in 3 ms for 1 (transfer 0x77365880)
* Expire in 4 ms for 1 (transfer 0x77365880)
* Expire in 3 ms for 1 (transfer 0x77365880)
* Expire in 4 ms for 1 (transfer 0x77365880)
* Expire in 4 ms for 1 (transfer 0x77365880)
* Expire in 4 ms for 1 (transfer 0x77365880)
* Expire in 4 ms for 1 (transfer 0x77365880)
* Expire in 8 ms for 1 (transfer 0x77365880)
* Expire in 5 ms for 1 (transfer 0x77365880)
* Expire in 6 ms for 1 (transfer 0x77365880)
* Expire in 8 ms for 1 (transfer 0x77365880)
* Expire in 6 ms for 1 (transfer 0x77365880)
* Expire in 6 ms for 1 (transfer 0x77365880)
* Expire in 8 ms for 1 (transfer 0x77365880)
* Expire in 8 ms for 1 (transfer 0x77365880)
* Expire in 8 ms for 1 (transfer 0x77365880)
* Expire in 8 ms for 1 (transfer 0x77365880)
* Expire in 8 ms for 1 (transfer 0x77365880)
* Expire in 9 ms for 1 (transfer 0x77365880)
* Expire in 16 ms for 1 (transfer 0x77365880)
* Expire in 11 ms for 1 (transfer 0x77365880)
* Expire in 11 ms for 1 (transfer 0x77365880)
* Expire in 16 ms for 1 (transfer 0x77365880)
* Expire in 12 ms for 1 (transfer 0x77365880)
* Expire in 12 ms for 1 (transfer 0x77365880)
* Expire in 16 ms for 1 (transfer 0x77365880)
* Expire in 16 ms for 1 (transfer 0x77365880)
* Expire in 16 ms for 1 (transfer 0x77365880)
* Expire in 16 ms for 1 (transfer 0x77365880)
* Expire in 16 ms for 1 (transfer 0x77365880)
* Expire in 50 ms for 1 (transfer 0x77365880)
* Expire in 32 ms for 1 (transfer 0x77365880)
* Expire in 50 ms for 1 (transfer 0x77365880)
* Expire in 50 ms for 1 (transfer 0x77365880)
* Expire in 32 ms for 1 (transfer 0x77365880)
* Expire in 50 ms for 1 (transfer 0x77365880)
* Expire in 50 ms for 1 (transfer 0x77365880)
* Expire in 64 ms for 1 (transfer 0x77365880)
* Expire in 50 ms for 1 (transfer 0x77365880)
* Expire in 50 ms for 1 (transfer 0x77365880)
* Expire in 64 ms for 1 (transfer 0x77365880)
* Expire in 50 ms for 1 (transfer 0x77365880)
* Expire in 50 ms for 1 (transfer 0x77365880)
* Expire in 50 ms for 1 (transfer 0x77365880)
* Trying 2a00:1450:4001:5e::6...
* TCP_NODELAY set
* Expire in 149914 ms for 3 (transfer 0x77365880)
* Expire in 200 ms for 4 (transfer 0x77365880)
* Connected to r1---sn-4g5e6nss.googlevideo.com (2a00:1450:4001:5e::6) port 443
(#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
* CAfile: none
CApath: /etc/ssl/certs
} [5 bytes data]
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
} [512 bytes data]
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0*
TLSv1.3 (IN), TLS handshake, Server hello (2):
{ [122 bytes data]
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
{ [6 bytes data]
* TLSv1.3 (IN), TLS handshake, Certificate (11):
{ [4683 bytes data]
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
{ [264 bytes data]
* TLSv1.3 (IN), TLS handshake, Finished (20):
{ [52 bytes data]
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
} [1 bytes data]
* TLSv1.3 (OUT), TLS handshake, Finished (20):
} [52 bytes data]
* SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384
* ALPN, server did not agree to a protocol
* Server certificate:
* subject: C=US; ST=California; L=Mountain View; O=Google LLC;
CN=*.c.docs.google.com
* start date: May 26 09:51:10 2020 GMT
* expire date: Aug 4 09:51:10 2020 GMT
* subjectAltName: host "r1---sn-4g5e6nss.googlevideo.com" matched cert's
"*.googlevideo.com"
* issuer: C=US; O=Google Trust Services; CN=GTS CA 1O1
* SSL certificate verify ok.
} [5 bytes data]
> GET
> /videoplayback/id/F2ARbcgQN1s.1/itag/95/source/yt_live_broadcast/expire/1591310674/ei/8iTZXqf7Ms6TgQfH7Dk/ip/2003:ce:a722:8100:d1f1:fa53:955b:66e4/requiressl/yes/ratebypass/yes/live/1/goi/160/sgoap/gir%3Dyes%3Bitag%3D140/sgovp/gir%3Dyes%3Bitag%3D136/hls_chunk_host/r1---sn-4g5e6nss.googlevideo.com/vprv/1/playlist_type/LIVE/initcwndbps/8720/mh/Bh/mm/44/mn/sn-4g5e6nss/ms/lva/mv/m/mvi/0/pl/35/keepalive/yes/fexp/23882513/mt/1591289002/sparams/expire,ei,ip,id,itag,source,requiressl,ratebypass,live,goi,sgoap,sgovp,vprv,playlist_type/sig/AOq0QJ8wRQIhAMR4NqMCSMbxOJJvsS5VouOKhydKggdyrWFygSzkywjeAiAJCwPHjosGPnLJBjbCa_tF_BH1SL_aIGltIVIYhIeB5g%3D%3D/lsparams/hls_chunk_host,initcwndbps,mh,mm,mn,ms,mv,mvi,pl/lsig/AG3C_xAwRQIhAJ95ymvewWU1H1DIaOqNeV5W-vQSPJ8tC_jJeeHk_ay4AiAca5c7LrrTMe_3Zce-2w6pzgtFIdh7ChexnwLXVIPmqA%3D%3D/playlist/index.m3u8/sq/14249504/goap/clen%3D23169%3Blmt%3D1591287722982677/govp/clen%3D112891%3Blmt%3D1591287722982679/dur/1.000/file/seg.ts
> HTTP/1.1
> Host: r1---sn-4g5e6nss.googlevideo.com
> User-Agent: curl/7.64.0
> Accept: */*
>
{ [5 bytes data]
< HTTP/1.1 302 Found
< Last-Modified: Wed, 02 May 2007 10:26:10 GMT
< Date: Thu, 04 Jun 2020 16:48:24 GMT
< Expires: Thu, 04 Jun 2020 16:48:24 GMT
< Cache-Control: private, max-age=900
{ [5 bytes data]
< Location:
https://r1---sn-4g5e6nss.googlevideo.com/videoplayback/id/F2ARbcgQN1s.1/itag/95/source/yt_live_broadcast/expire/1591310674/ei/8iTZXqf7Ms6TgQfH7Dk/ip/2003:ce:a722:8100:d1f1:fa53:955b:66e4/requiressl/yes/ratebypass/yes/live/1/goi/160/sgoap/gir%3Dyes%3Bitag%3D140/sgovp/gir%3Dyes%3Bitag%3D136/vprv/1/playlist_type/LIVE/keepalive/yes/fexp/23812955,23882513/sparams/expire,ei,ip,id,itag,source,requiressl,ratebypass,live,goi,sgoap,sgovp,vprv,playlist_type/sig/AOq0QJ8wRQIhAMR4NqMCSMbxOJJvsS5VouOKhydKggdyrWFygSzkywjeAiAJCwPHjosGPnLJBjbCa_tF_BH1SL_aIGltIVIYhIeB5g%3D%3D/playlist/index.m3u8/sq/14249504/goap/clen%3D23169%3Blmt%3D1591287722982677/govp/clen%3D112891%3Blmt%3D1591287722982679/dur/1.000/redirect_counter/1/rm/sn-4g5ezl7e/req_id/26127a92330da3ee/cms_redirect/yes/ipbypass/yes/mh/Bh/mip/2003:ce:a7ff:2275:3681:c4ff:fe2f:9ff6/mm/44/mn/sn-4g5e6nss/ms/lva/mt/1591289183/mv/m/mvi/0/pl/35/lsparams/ipbypass,mh,mip,mm,mn,ms,mv,mvi,pl/lsig/AG3C_xAwRgIhANBxNsbF2KrHyIxL_qHupWaZaGwpe53hic1LCaWGqXUaAiEAtIpWe3xEAA2PU4EhJSmhGPgEGKSmkWU17iu322yVaaE%3D?file=seg.ts
< Content-Length: 0
< Connection: close
< X-Walltime-Ms: 1591289304371
< X-Head-Time-Sec: 14245154
< X-Head-Time-Millis: 14245154393
< X-Head-Seqnum: 14249668
< X-Content-Type-Options: nosniff
< Content-Type: text/html
< Server: gvs 1.0
<
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
* Closing connection 0curl -vv -o test.ts
"https://r1---sn-4g5e6nss.googlevideo.com/videoplayback/id/F2ARbcgQN1s.1/itag/95/source/yt_live_broadcast/expire/1591310674/ei/8iTZXqf7Ms6TgQfH7Dk/ip/2003:ce:a722:8100:d1f1:fa53:955b:66e4/requiressl/yes/ratebypass/yes/live/1/goi/160/sgoap/gir%3Dyes%3Bitag%3D140/sgovp/gir%3Dyes%3Bitag%3D136/hls_chunk_host/r1---sn-4g5e6nss.googlevideo.com/vprv/1/playlist_type/LIVE/initcwndbps/8720/mh/Bh/mm/44/mn/sn-4g5e6nss/ms/lva/mv/m/mvi/0/pl/35/keepalive/yes/fexp/23882513/mt/1591289002/sparams/expire,ei,ip,id,itag,source,requiressl,ratebypass,live,goi,sgoap,sgovp,vprv,playlist_type/sig/AOq0QJ8wRQIhAMR4NqMCSMbxOJJvsS5VouOKhydKggdyrWFygSzkywjeAiAJCwPHjosGPnLJBjbCa_tF_BH1SL_aIGltIVIYhIeB5g%3D%3D/lsparams/hls_chunk_host,initcwndbps,mh,mm,mn,ms,mv,mvi,pl/lsig/AG3C_xAwRQIhAJ95ymvewWU1H1DIaOqNeV5W-vQSPJ8tC_jJeeHk_ay4AiAca5c7LrrTMe_3Zce-2w6pzgtFIdh7ChexnwLXVIPmqA%3D%3D/playlist/index.m3u8/sq/14249504/goap/clen%3D23169%3Blmt%3D1591287722982677/govp/clen%3D112891%3Blmt%3D1591287722982679/dur/1.000/file/seg.ts"
* Expire in 0 ms for 6 (transfer 0x55f38e47ef50)
* Expire in 1 ms for 1 (transfer 0x55f38e47ef50)
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0*
Expire in 3 ms for 1 (transfer 0x55f38e47ef50)
* Expire in 2 ms for 1 (transfer 0x55f38e47ef50)
* Expire in 4 ms for 1 (transfer 0x55f38e47ef50)
* Expire in 4 ms for 1 (transfer 0x55f38e47ef50)
* Expire in 5 ms for 1 (transfer 0x55f38e47ef50)
* Trying 2a00:1450:4001:5e::6...
* TCP_NODELAY set
* Expire in 149991 ms for 3 (transfer 0x55f38e47ef50)
* Expire in 200 ms for 4 (transfer 0x55f38e47ef50)
* Connected to r1---sn-4g5e6nss.googlevideo.com (2a00:1450:4001:5e::6) port 443
(#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
* CAfile: none
CApath: /etc/ssl/certs
} [5 bytes data]
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
} [512 bytes data]
* TLSv1.3 (IN), TLS handshake, Server hello (2):
{ [122 bytes data]
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
{ [6 bytes data]
* TLSv1.3 (IN), TLS handshake, Certificate (11):
{ [4683 bytes data]
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
{ [264 bytes data]
* TLSv1.3 (IN), TLS handshake, Finished (20):
{ [52 bytes data]
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
} [1 bytes data]
* TLSv1.3 (OUT), TLS handshake, Finished (20):
} [52 bytes data]
* SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384
* ALPN, server did not agree to a protocol
* Server certificate:
* subject: C=US; ST=California; L=Mountain View; O=Google LLC;
CN=*.c.docs.google.com
* start date: May 26 09:51:10 2020 GMT
* expire date: Aug 4 09:51:10 2020 GMT
* subjectAltName: host "r1---sn-4g5e6nss.googlevideo.com" matched cert's
"*.googlevideo.com"
* issuer: C=US; O=Google Trust Services; CN=GTS CA 1O1
* SSL certificate verify ok.
} [5 bytes data]
> GET
> /videoplayback/id/F2ARbcgQN1s.1/itag/95/source/yt_live_broadcast/expire/1591310674/ei/8iTZXqf7Ms6TgQfH7Dk/ip/2003:ce:a722:8100:d1f1:fa53:955b:66e4/requiressl/yes/ratebypass/yes/live/1/goi/160/sgoap/gir%3Dyes%3Bitag%3D140/sgovp/gir%3Dyes%3Bitag%3D136/hls_chunk_host/r1---sn-4g5e6nss.googlevideo.com/vprv/1/playlist_type/LIVE/initcwndbps/8720/mh/Bh/mm/44/mn/sn-4g5e6nss/ms/lva/mv/m/mvi/0/pl/35/keepalive/yes/fexp/23882513/mt/1591289002/sparams/expire,ei,ip,id,itag,source,requiressl,ratebypass,live,goi,sgoap,sgovp,vprv,playlist_type/sig/AOq0QJ8wRQIhAMR4NqMCSMbxOJJvsS5VouOKhydKggdyrWFygSzkywjeAiAJCwPHjosGPnLJBjbCa_tF_BH1SL_aIGltIVIYhIeB5g%3D%3D/lsparams/hls_chunk_host,initcwndbps,mh,mm,mn,ms,mv,mvi,pl/lsig/AG3C_xAwRQIhAJ95ymvewWU1H1DIaOqNeV5W-vQSPJ8tC_jJeeHk_ay4AiAca5c7LrrTMe_3Zce-2w6pzgtFIdh7ChexnwLXVIPmqA%3D%3D/playlist/index.m3u8/sq/14249504/goap/clen%3D23169%3Blmt%3D1591287722982677/govp/clen%3D112891%3Blmt%3D1591287722982679/dur/1.000/file/seg.ts
> HTTP/1.1
> Host: r1---sn-4g5e6nss.googlevideo.com
> User-Agent: curl/7.64.0
> Accept: */*
>
{ [5 bytes data]
< HTTP/1.1 200 OK
< Last-Modified: Thu, 04 Jun 2020 16:22:02 GMT
< Date: Thu, 04 Jun 2020 16:46:16 GMT
< Expires: Thu, 04 Jun 2020 16:46:16 GMT
< Cache-Control: private, max-age=21198
< Content-Type: application/octet-stream
< Transfer-Encoding: chunked
< Connection: keep-alive
< Alt-Svc: h3-27=":443"; ma=2592000,h3-25=":443"; ma=2592000,h3-T050=":443";
ma=2592000,h3-Q050=":443"; ma=2592000,h3-Q049=":443";
ma=2592000,h3-Q048=":443"; ma=2592000,h3-Q046=":443";
ma=2592000,h3-Q043=":443"; ma=2592000,quic=":443"; ma=2592000; v="46,43"
< X-Walltime-Ms: 1591289176346
< X-Bandwidth-Est: 647443
< X-Bandwidth-Est2: 207595
< X-Bandwidth-Est-Comp: 207595
< X-Bandwidth-App-Limited: true
< X-Bandwidth-Est-App-Limited: true
< X-Bandwidth-Est3: 677887
< X-Head-Time-Sec: 14245027
< X-Head-Time-Millis: 14245027393
< X-Head-Seqnum: 14249541
< X-Content-Type-Options: nosniff
< Server: gvs 1.0
<
{ [5 bytes data]
100 129k 0 129k 0 0 415k 0 --:--:-- --:--:-- --:--:-- 415k
* Connection #0 to host r1---sn-4g5e6nss.googlevideo.com left intact