Autor Thema: Sonos / TuneIn und Datenschutz  (Gelesen 565 mal)

Offline Elektrolurch

  • Hero Member
  • *****
  • Beiträge: 1572
Sonos / TuneIn und Datenschutz
« am: 25 Mai 2021, 15:20:34 »
Hallo Liste,

heute möchte ich mal einen Punkt ansprechen, der mich schon seit längerem beschäftigt.
Seit einiger Zeit kann man zu den Sonos - Produkten nur noch Updates erhalten, wenn man der Datenschutzbestimmung zustimmt und sich registriert. Man erklärt sich damit einverstanden, dass die Nutzungsdaten an Dritte weitergegeben werden und das finde ich nicht in Ordnung.
Ich möchte das Produkt auch nutzen können, ohne dass ich mich im Internet mit meinen Nutzungsdaten offen lege.
Daher habe ich mal ein wenig geforscht.

Mit der Sonos - App habe ich Vavoriten angelegt, die ich dann auch von fhem aus nutzen kann (Internetradio).
Wenn ich einen solchen Favoriten starte, passiert folgendes:
1. Der Sonos-Player sendet an eine spezielle Subdomain von TuneIn meinen Request und reichert diesen mit Nutzungsdaten an. TuneIn wertet diesen aus und liefert dann schließlich und endlich die eigentliche Streaming - Adresse des Internetradios zurück (Beispiel Klassik Radio):

# pre - Domain von TuneIn
hls-radio://https://prod-pre.fns.tunein.com/v1/master/30ead7055f8b8e1f2f04add745f139b184df6925/prod_preroll/preroll0.m3u8?
# Parameter:
ads.cust_params=partnerId=Sonos&
ads_partner_alias=Sonos&
version=56&
premium=false&
abtest=&language=en-US&
# damit wird bei TuneIn die Station identifiziert
stationId=s25028&
is_ondemand=false&
genre_id=g5&
class=music&
# Falsch geraten :-)
is_family=false&
# plitische Gesinnung? :-)
is_mature=false&
# meine Geo-Koordinaten?
country_region_id=88&
station_language=german&
programId=p225629&
is_event=false&
# und wieder die StationsID
url=https://tunein.com/desc/s25028/&
description_url=https://tunein.com/desc/s25028/&
# Advertising ?
ads.npa=1&
ads.gdfp_req=1

Letztendlich kann man auch den Sonos - Player über den Befehl
set SonosArbeitszimmer PlayURI http://opml.radiotime.com/Tune.ashx?id=s25028
&formats=aac,ogg,mp3,wma,wmvoice&partnerId=16&serial=99d59896bd3e0dbab0b2f9c70f3571b9
direkt aufrufen.
Und wer noch weniger von sich preis geben möchte, kann auf das Senden der PartnerId und der Seriennummer auch verzichten und bekommt trotzdem den Stream ausgeliefert:
set SonosArbeitszimmer PlayURI http://opml.radiotime.com/Tune.ashx?id=s25028

Aber das Starten eines Internetsenders geht noch schneller (!!!), wenn man die ganzen Marketing - Firmen außen vor lässt und den Sender direkt mit seiner URI aufruft.
Die bekommt man im reading "currentTrackURI" des Sonos-Players nach einigen Sekunden angezeigt und sieht so aus:
http://klassikr.streamabc.net/klassikradio-simulcast-aac-mq?sABC=60nps39r%230%233rrq0n821pp2s298r619635rqqn2o022%23GharVa&=&amsparams=playerid:TuneIn;skey:1621947294
Davon benötigt man jedoch auch nur:
set SonosArbeitszimmer PlayURI http://klassikr.streamabc.net/klassikradio-simulcast-aac-mq
Für einen SB-Player funktioniert der Link natürlich auch.
Gefühlt startet der Sonos_Player dreimal so schnell den Internetsender  über den kurzen Link, als über den Umweg über den Faoriten.

Fazit:
Um mich vor dem Ausspähen meiner Nutzungsdaten zu schützen, werde ich eine kleine Routine schreiben, alle Favoriten abspielen und über das reading currentTrackURI die zugeöhigen URIs einsammeln.
Sollten sich jedoch einmal die URL eines Senders ändern, so muss man das Ganze wiederholen.
Über die ID bei TuneIn entfällt dies, aber dafür gibt man ein TEil seiner Nutzungsdaten an zentraler Stelle ab.

Elektrolurch
configDB und Windows befreite Zone!
Informativ Informativ x 1 Liste anzeigen

Offline KölnSolar

  • Developer
  • Hero Member
  • ****
  • Beiträge: 5142
Antw:Sonos / TuneIn und Datenschutz
« Antwort #1 am: 25 Mai 2021, 16:08:40 »
Habe kein Sonos. Aber trotzdem mal wieder interessant, dass es heutzutage den Herstellern NUR NOCH darum geht, persönliche Daten abzufischen, anstatt wenigstens eine datensicherere Option anzubieten.
Man sieht es ja an JEDER Website. Anstatt neben einem Button "Zustimmen" einen simplen Button "Ablehnen" anzubieten, muss man sich höchst kompliziert und unverständlich durch die Details klicken, um ausspähende Cookies zu vermeiden. Bei einigen Websites funktioniert übrigens (noch) Cookies generell abzulehnen und die Seite funktioniert trotzdem.

Grüße Markus
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

Offline Otto123

  • Tester
  • Hero Member
  • ****
  • Beiträge: 18985
  • schon mal restore trainiert?
    • Otto's Technik Blog
Antw:Sonos / TuneIn und Datenschutz
« Antwort #2 am: 25 Mai 2021, 19:39:21 »
Zitat
Um mich vor dem Ausspähen meiner Nutzungsdaten zu schützen, werde ich eine kleine Routine schreiben, alle Favoriten abspielen und über das reading currentTrackURI die zugeöhigen URIs einsammeln.
und ich muss mal auf die Suche gehen, warum die url so wie bei Elektrolurch bei meinem sonos2mqtt nicht funktioniert.  :-[
Denn die Routine die diversen Favoriten Radios und Playlisten auszulesen habe ich dort schon drin und das aufstrippen ist sicher dann final nur noch ein kleiner Schritt ;)
Edit: falsch gedacht  :o die URL steht im Favoriten nicht drin
{"Title":"Klassik Radio","UpnpClass":"object.item.audioItem.audioBroadcast","ItemId":"R:0/0/49","ParentId":"R:0/0","TrackUri":"x-sonosapi-stream:s25028?sid=254&flags=8224&sn=0","ProtocolInfo":"x-rincon-mp3radio:*:*:*"}
Aber vielleicht liege ich da falsch. :-\

Ich glaube, man könnte die Favoriten gleich mit der url anlegen - dann würde das Sonos immer mit Datenschutz machen?

Gruß Otto
« Letzte Änderung: 25 Mai 2021, 19:54:43 von Otto123 »
Viele Grüße aus Leipzig
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7490+7412,WRT1900ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266

Offline juemuc

  • Sr. Member
  • ****
  • Beiträge: 965
Antw:Sonos / TuneIn und Datenschutz
« Antwort #3 am: 26 Mai 2021, 21:41:05 »
Hallo zusammen,

bei mir funktioniert dies auch nicht.

mit
set Sonos-PLayer PlayURI https://absolut.hoerradar.de/absolutradio-hot-mp3-128 wird einfach der bereits eingestellte Sender (z.B. "Bayern 3") aktiviert. Direkt im Browser funktioniert es mit https://absolut.hoerradar.de/absolutradio-hot-mp3-128 ???

Viele Grüße
Jürgen
« Letzte Änderung: 26 Mai 2021, 21:42:37 von juemuc »
3x Sonos Play 1, 1x Sonos Arc + Sub, 1 Sonos-One, 1x Sonos Playbar
Fritzbox 7490 mit 4x Dect 200 und 3 Dect-ULE-Thermostate,  raspberry3, HM Funkmodul HM-MOD-RPI-PCB, HM Klingelsensor HM-Sen-DB-PCB, HM Fensterkontakte und  Amazon Echo Dot, raspberry3B+ mit RPI-RF-MOD und piVCCU, Raspbian Buster Lite

Offline Jamo

  • Hero Member
  • *****
  • Beiträge: 1309
Antw:Sonos / TuneIn und Datenschutz
« Antwort #4 am: 26 Mai 2021, 22:37:15 »
http anstatt https ist das Zauberwort:

set Sonos_Flur PlayURI http://absolut.hoerradar.de/absolutradio-hot-mp3-128

Im prinzip muss man den Sender "absolut Hot" aus der Sonos App abspielen lassen, und dann in seinem Masterplayer im Reading currentTrackURI nachschauen, welche URL da steht. So habe ich es für alle meine Favoriten gemacht.
« Letzte Änderung: 26 Mai 2021, 22:41:35 von Jamo »
Linux Debian, Homematic (UART/HMUSB), HUEBridge, Zigbee, FB, Alexa (fhem-lazy), livetracking, fhemApp Frontend für FHEM

Offline juemuc

  • Sr. Member
  • ****
  • Beiträge: 965
Antw:Sonos / TuneIn und Datenschutz
« Antwort #5 am: 03 Juni 2021, 21:32:57 »
Danke. Damit funktioniert es  ;D

Viele Grüße
Jürgen
3x Sonos Play 1, 1x Sonos Arc + Sub, 1 Sonos-One, 1x Sonos Playbar
Fritzbox 7490 mit 4x Dect 200 und 3 Dect-ULE-Thermostate,  raspberry3, HM Funkmodul HM-MOD-RPI-PCB, HM Klingelsensor HM-Sen-DB-PCB, HM Fensterkontakte und  Amazon Echo Dot, raspberry3B+ mit RPI-RF-MOD und piVCCU, Raspbian Buster Lite

Offline Elektrolurch

  • Hero Member
  • *****
  • Beiträge: 1572
Antw:Sonos / TuneIn und Datenschutz
« Antwort #6 am: 10 Juni 2021, 13:09:36 »
Hallo,

Zitat:
Im prinzip muss man den Sender "absolut Hot" aus der Sonos App abspielen lassen, und dann in seinem Masterplayer im Reading currentTrackURI nachschauen, welche URL da steht. So habe ich es für alle meine Favoriten gemacht.

Ich habe das mal über eine Schleife laufen lassen und hänge hier zwei Dateien an.
Die .json kann man beispielsweise mit
sub SCC_SM_Load($;$)
{
my ($hash,$file) = @_;
$hash = $defs{$hash} if(ref($hash) ne 'HASH');
my $name = $hash->{NAME};
# load from disk
$file = AttrVal($name,'senderListFile','/opt/fhem/log/Senderliste.json') if(!$file);
Log3($name,4,"SCC_SM_Load: $file");
if(open(SFILE,$file))
{
# do init
# binmode(FILE, ':encoding(utf-8)');
my $s;
while(<SFILE>)
{
$s .= $_;
} # end while
$hash->{URIs} = eval($s);
if($@)
{
Log3($name,1,"SCC_SM_Load: Error $@ eval on input file $file");
}
close(SFILE);
} # read from disk

else
{
my $err = "SCC_SM_Load: could not read $file";
Log3($name,1,$err);
return $err;
} # error
return undef;
} # end sub SCC_SM_Load
################################
einlesen.
Dann  hat man einen hash in $hash->{URIs} und kann mit

my $uri = $hash->{URIs}{$sender}{uri};
# tuneIn ID für Sender und Logo des Senders
my $id = $hash->{URIs}{$sender}{id};
# Parameter aus uri abschneiden
$uri =~s/\?.*$//;
# Sonos Player
DoSet($masterplayer,'PlayURI',$uri);
# bzw SB Player
DoSet($player,'playlist','play',$uri);


# und das logo holt man bei TuneIn mit der id:
$logo = 'http://cdn-radiotime-logos.tunein.com/s' . $id . 'q.png';
# und so sieht ein Teil für die html - Generierung aus:
$ret .= "<img src='$logo' alt='$sender' title='$sender' class='Logo'>";
Ich habe mal die meisten Sender hier bei mir über die URI gestartet, wobei ich die Parameter in der url hinter dem '=' (s.o.) abgeschnitten habe. Die Sender werden deutlich schneller gestartet, als wenn man sie als Vavouriten oder Radios per Sonos oder über TuneIn startet.
Und der ganze Müll zum Datensammeln ist auch weg....
Die id scheint bei TuneIn eindeutig dem Sender zum Abspielen, bzw. für das Logo zu sein.

Hier noch ein Ausschnitt aus dem EventHandler für den Sonos - Player. In $hash->{scan} merke ich mir die Daten für einen "Scan" über alle Favouriten von Sonos, die ich nach einander abspiele und mir dann die uri's zu den Sendern in $hash->{URIs}{$sender} abspeichere.
Den Sendernamen merke ich mir beim Starten des Senders in $hash->{Sender}, damit ich die uri auch eindeutig dem Sender zuordnen kann.
elsif($rd eq 'currentTrackURI' && $display eq 'Radio')
{
return undef if(!$val || $val !~m/^(aac|http)/);

my $sender = $hash->{Sender} if(exists($hash->{Sender}));
$val = uri_unescape($val);
$val =~s/^(aac|http):\/\/http:/http:/;
Log3($name,2,"SCC_PlayerEvent: $name $rd sender $sender val: $val");
$hash->{URIs} = {} if(!exists($hash->{URIs}));
return undef if(!$sender || $sender eq '' );

if(exists($hash->{scan}))
{
my $scan = $hash->{scan};
$scan->{duration} = sprintf("%.1f s",time() - $scan->{time});
 if($sender ne $scan->{sender})
{
$scan->{errors} .= "$sender <-> mismatch $scan->{sender}\n";
return undef;
}
$scan->{uri} = $val;
$scan->{log} .= "$sender in $scan->{duration} uri: $val\n";
$scan->{uri} = $val;
# SCC_SM_UpdateScan($hash->{scan});
} # in scan mode

$hash->{URIs}{$sender} = {} if(!exists($hash->{URIs}{$sender}));
if($hash->{URIs}{$sender}{uri} ne $val)
{
Log3($name,1,"$name $rd change uri for $sender\nold: $hash->{URIs}{$sender}{uri}\nnew: $val");
$hash->{URIs}{$sender}{uri} = $val;
$hash->{URIs}{$sender}{id} = 0;

# currentAlbumArtURL http://cdn-profiles.tunein.com/s191784/images/logog.jpg
my $handle = uri_unescape(readingsval($phash,'currentAlbumArtURL',''));
if($handle =~m/tunein.com.*?s(\d{5,6})/)
{
my $id = $1;
$hash->{URIs}{$sender}{id} = $id;
Log3($name,1,"id $id handle $handle");
} # tunein
else
{
Log3($name,1,"handel no tunein: $handle\n");
} # end no tuneIn
} # change uri

} # currentTrackURI

Soweit ein paar Anregungen.

Elektrolurch


configDB und Windows befreite Zone!