Echofon ist ein netter Twitterclient, den es für alle möglichen Plattformen gibt, unter anderem auch als Firefox-Extension, was ich besonders praktisch finde, da mein Firefox arbeitsbedingt sowieso 24/7h online ist - da habe ich mit der Extension meine Twitter-Timeline quasi ständig im Zugriff, ohne mich erst durch einen anderen Client oder auf der Twitter-Homepage anzumelden.
Soweit, so schön.
Unschön ist, dass in der letzten Version der Extension offenbar ein kleines Javascript dafür sorgte, den User bei einem Service namens soclnet.com zu tracken (heute erschien ein Update, was den "Fehler" behebt).
Das Ganze fiel nur deshalb auf, weil die Anfrage, die das Script startet, vom Server falsch beantwortet wurde, sodass Firefox versuchte, eine php-Datei "c.php" runterzuladen. Liess man das zu, erhielt man eine leere Datei. Versucht man, den Aufruf per Konsole und wget zu machen, erhält man als Antwort des Servers: "503 Service Unavailable: Back-end server is at capacity".
Auf der Extension-Berwertungsseite bei Firefox wurde sich über das Verhalten beschwert, auf Twitter meldeten sich einige User (u.a. auch ich), die von Echofon, bzw den Naan-Studios, wissen wollten, was es mit dieser c.php Datei auf sich hatte. Antworten gab es bislang keine, aber wie erwähnt erschien heute ein Update der Extension, was unter anderem einen "annoying Download-Error" behob.
Seitdem das Update installiert ist, kommt auch kein Downloadversuch mehr zustande, immerhin.
Da sich Echofon/Naan noch immer bedeckt hält, was das it soclnet.com und der c.php sollte, habe ich mich auf die Suche gemacht und in den Quelldateien der Version 1.9.6.7 der Extension rumgesucht.
Und, Bingo - in der echofon.jar
gibt es im Verzeichnis Chrome
eine cl.js
, die den Aufruf bei soclnet.com macht:
function set_cl(twuser) { try { var iframe = document.createElement('iframe'); iframe.setAttribute('style', 'display: none;'); document.getElementById('content').appendChild(iframe); iframe.setAttribute('src', 'http://www.soclnet.com/c.php?partner=echofon&twuser=' + escape(twuser)); } catch (e) { dump(e.message); } } |
Es wird also ein versteckter IFRAME in den Browser injeziert, der die c.php mit den Parametern "user=echofon" und "twuser=DerTwitterUserName" enthält - was soll das?!
In der neuen Version (1.9.7) ist der String "soclnet.com" nicht mehr enthalten, jedenfalls gab eine rekursive Suche mit der Konsole
$ find ./chrome/Echofon -name '*' -exec grep -R -c -l "soclnet" {} \; |
$ grep -R -l -i soclnet ./chrome/Echofon |
(siehe Kommentare)
kein Ergebnis zurück. Hmmm.
Echofon/Naan sollte meiner Meinung nach schleunigst transparent machen, warum sie den Twitter-Usernamen - wahrscheinlich verbunden mit ein paar Angaben, die der Browser zulässt (warum sonst der iframe?) bei einem Drittanbieter tracken lässt, über den man im Netz so gar nichts findet.
Bis das nicht geklärt ist, werde ich die Extension jedenfalls deinstallieren.
5 Reaktionen zu “Echofon Firefox-Extension trackt User per iframe.”
ich muss mal ne runde klugscheißen ;-)
es geht um folgenden Aufruf:
das >-name '*'-exec grep -R -c -l "soclnet" {} \;<
sagt dem find, dass es für jeden Treffer ein grep aufrufen soll
Das find rennt also _rekursiv_ durch ./chrome/Echofon und findet jedes file und jedes dir. Und sobald es was gefunden hat, schmeißt es jedes mal das grep an.
Soweit so gut.
Der Schalter -R (--recursive) beim grep bedeutet:
"Read all files under each directory, recursively" (man grep)
Das grep -R war also auch rekursiv. Ist also doppelt gemoppelt ;-)
zum -l und -c:
-l steht für --files-with-matches und soll nicht die Zeile mit der Fundstelle aus dem File anzeigen, sondern nur den Filename, in dem es einen Treffer gibt.
-c steht für --count und zählt die Treffer pro File. Genauer "Suppress normal output; instead print a count of matching lines for each input file."
der haut also für _jedes_ file, dass er im Inputfile findet eine Zeile raus - wenn kein Treffer im File ist, steht da
pfad/zum/file:0
Will sagen, auch Infos, die da nicht interessieren, landen im Output auf der Konsole (Input ist in dem Fall auch noch rekursiv (-R))
Das -c ist also für große Mengen von Files eher uninteressant.
Wenn man aber das find mit dem grep -R wie oben kombiniert, vervielfältigt sich die Menge an Output auch noch. Weil das find ja auch alle Verzeichnisse findet und dafür ein rekursives grep startet, und das grep wiederum rekursiv in dem gerade vom find übergebenem Verzeichnis sucht, für dessen Inhalt aber gleich wieder vom find ein grep aufgerufen wird.
Lange Rede kurzer Sinn:
ich hätte mit einem
gesucht.
Wenn das keine Zeilen zurück liefert, hat es nix gefunden.
(die " in "soclnet" kann man auch weglassen, wenn's kein Whitespace zu quoten gibt)
ich verzieh mich dann mal wieder in den Maschinenraum mit der weißen Schrift auf schwarzem Grund...
Hi Thomas,
danke für den Klugschiss :-) Ich hatte mich schon gewundert, warum ich jedes Ergebnis dreimal im Output hatte :-))
HI Thomas,
"Dein" Befehl sucht offenbar nur nach einer Datei namens 'soclnet'.
Ich möchte aber das Vorkommen des Strings 'soclnet' innerhalb der Dateien finden und die entsprechenden Dateien angezeigt bekommenm, was "mein" Befehl macht:
oops. ja, ich hab die parameter vertautscht, sorry.
grep [options] PATTERN [FILE...]
richtig wäre also
-i (--ignore-case) wäre übrigens evtl. noch hilfreich (weil domains ja auch keine Groß/Kleinschreibung kennen...)
Ok, "dein" Befehl funzt dann doch:
:-)
Kommentare sind geschlossen.