Piwik - Falsche IP im Besucherlog

  • Gestern ist mir zufällig aufgefallen, dass bei einer Webseite (habe über 30 in Piwik) falsche IPs im Besucherlog stehen. Genau gesagt ist es die IP des Servers, auf dem die Webseite liegt, nicht aber die des Besuchers.

    Habe nun schon viel hin und her versucht, aber finde keine Lösung. Eben habe ich die piwik.php etwas modifiziert, sodass die alle Requests in ein Logfile schreibt.

    Und siehe da, der Zugriff erfolgte mit der URL:
    piwik.php?cip=88.68.220.181&token_auth=9fc38a7e791.....

    Im Besucherlog steht aber:
    Sa 24 Nov - 14:11:58 [unbekannt, Provider unbekannt] [Firefox 17.0, Plugins: pdf, flash, windowsmedia] [Windows XP, 1680x1050] - [Wiederkehrender Besucher] - IP: 85.214.90.0

    Gut, die 0 am Ende ist mit klar, aber warum ist das denn gänzlich die falsche IP? Hat sich da was geändert? Habe ich was übersehen?

    Ach ja, die betroffene Webseite ist die, die ich als letztes in Piwik eingerichtet habe, ist also die Neueste.

    Hat das auch einer von euch oder einen Tipp was das ist? Und, falls falsches Forum, dann bitte verschieben - hab nichts gefunden zu "Webanalyse" oder so.

    Wenn ein Mensch nicht um dich kämpft, hat er nur gewartet, dass du gehst. ;(

  • denke mal hier ist das schon richtig.
    piwik hat manchmal datenbank probleme, bei mir sind es die refs die falsch zugeordnet werden. Muss dazu sagen da ich Piwik schon lange einsetze und jedes Update mitgemacht habe.

    Abhilfe schafft leeren der Datenbank, manchmal reicht auch ein Reload.

    Piwik sammelt viel, wo viel Daten da viel Fehlermöglichkeit.

    Auf jeden Fall die Datenbank automatisch leeren lassen, hab das bei mir nach einem Monat so eingestellt. Manuell ist aber noch besser, da nicht alles gelöscht wird bei dem normalen cron.

    Muss dazu sagen das ich ein paar Seiten mehr mit Piwik tracke und das auch schon vorgekommen ist.
    Naja Seiten ist falsch ausgedrückt, erstmal sinds so um die 100, haben teilweise aber gut besucher, deswegen hatte ich das mit dir zusammen schon in Verdacht das es an Statistik Online leigt dsa es zeitweise langsam war hier.

    wenn etwas möglich erscheint mach ich das, wenn das nicht klappt gehts ans unmögliche und ansonsten das undenkbare.

    - nun stolz rauchfrei - Ich denke also Bing ich!

    Support 24h Bereitschaft 0173 6107465 - NUR Für Kunden von SEO NW!

  • Äm, bitte?? Datenbank löschen? Auf keinen Fall, da sind die Daten der letzten 30 Monate drinnen!

    Und ja, ich nutze Piwik auch schon seit der Version 0.4 Beta ;)

    Da muss es doch einen Grund für geben, warum der ausgerechnet die eine Webseite so behandelt und alle anderen nicht - und es war früher auch noch nie. Und, die Erfassung geht ja über IP und oder ID (Browserdaten etc). Wenn dem so wäre, dann könnte der mich vielleicht falsch identifizieren, aber doch keinen Fremden, der zum ersten mal auf der Domain ist.

    Wenn ein Mensch nicht um dich kämpft, hat er nur gewartet, dass du gehst. ;(

  • watt willste mirt soviel daten?
    gut ich haderte auch mit mir, wielange ich die Daten erhebe. Aber eine schlanke DB ist nunmal besser als so ein schwergewicht was du hast.

    da schleichen ich schon alleine wegen der datenbank konsitenz fehler ein.

    und lahm wird das ganze dadurch auch noch, wennste dsa so weiter machst.

    update problem gibt es sicherlich auch, da du schon solange dabei bist, obwohl...! da migriert wird. bei sovielen daten passieren aber fehler. wundert mich das es bisher gut gelaufen ist ;)

    aber ist nur meine meinung dazu. könnte aber ein problem sein, weils einfach so riesig und alt ist.

    du kannst ja daten auch kürzen, meine ich. wofür brauchste die anonyme ip von vor 2 jahren?
    denke da musste was machen, aber mein rat ist eine entschlackung. hilft sicher auch bei der analyse :--)

    wenn etwas möglich erscheint mach ich das, wenn das nicht klappt gehts ans unmögliche und ansonsten das undenkbare.

    - nun stolz rauchfrei - Ich denke also Bing ich!

    Support 24h Bereitschaft 0173 6107465 - NUR Für Kunden von SEO NW!

  • hast du mal versucht die datenbank zu optimieren/reparieren?
    haste bestimmt schon gemacht, aber zur sicherheit mach das mal über pma.
    evtl gibts nen db problem, gibt es hin und wieder.

    würd aber trotzdem eine datenbank diät vorschlagen.
    glaub das piwik damit nicht gut kann, mit so einer grösse
    truncate :)

    wenn etwas möglich erscheint mach ich das, wenn das nicht klappt gehts ans unmögliche und ansonsten das undenkbare.

    - nun stolz rauchfrei - Ich denke also Bing ich!

    Support 24h Bereitschaft 0173 6107465 - NUR Für Kunden von SEO NW!

  • Alex,
    die Daten werden schon bereinigt. Die 30 Monate sind die Berichte. Und die Datenbank schafft das locker weg, das ist kein Problem. Sind jetzt 10 GB, ich habe andere mit >200GB. Inkonsistenz ist hier eigentlich nicht zu sehen, denn wenn ich komplett fiktive Daten übergebe, also einen komplett fremden User simuliere, dann ist es ja wieder die falsche IP. Inkonsistenz wäre dann, wenn er ähnliche mit ähnlichen vermischt, das kann hier aber gar nicht sein.

    Das dumme ja nur, im Support-Forum gibt es noch min zwei andere mit dem gleichen Problem, aber bei keinem Post gibt es eine Antwort und bei denen ist es schon min 7 Tage her.

    Wenn ein Mensch nicht um dich kämpft, hat er nur gewartet, dass du gehst. ;(

  • Klingt für mich (arbeite nicht mit Piwik) danach, als ob Du bei der neu im Piwik angelegten Webseite No. 30 den Piwik Code umleitest über einen internen Proxy der gepiwikten Webseite.

    Schick mir mal die Seite per PM, dann tracken wir da mal die HTTP Verbindungen.

  • Jein... Da ist derzeit der "Piwik-Proxy" drauf, so wie bei allen anderen Webseiten auch. Sinn ist, der Server ruft das JS vom Piwik-Server ab und bindet es in die Webseite ein. Der eigentliche Aufruf (Tracking) erfolgt aber dann dennoch vom User, denn genau dafür wird ja die IP in die URL gepackt. Aufgerufen wird es vom Server, das stimmt, aber wie gesagt, die richtige IP steht in der URL.

    piwik.php?cip=88.68.220.181&token_auth=9fc38a7e791.....

    Da fehlt nur ein Teil. Hinten kommen noch die ganzen Einstellungen, Browser, Monitor, Referer etc. Alles stimmt, die IP in der URL auch. Nur der Piwik-Server ignoeriert dann irgendwie die URL und nimmt die vom Server, woher er die auch immer hat.

    URL kommt per PM.

    P.S. Hab das Proxy-Script auch schon ausgebaut, denn das war mein letzter Lösungsansatz, aber auch dann kommt die Server-IP.

    Wenn ein Mensch nicht um dich kämpft, hat er nur gewartet, dass du gehst. ;(

  • Doch, wird, Du siehst da nur nicht alles. Ist ja der Sinn vom Proxy-Script ;)

    Du hast im Firebug etwa einen derartigen Aufruf:
    http://lokale-domain.de/addons/piwik/p…rmationen%2C%20.....

    über diese lokale URL wird das Proxy-Script aufgerufen. Dieses macht dann nichts anderes, als die eigentliche URL zusammenzubauen inkl. Token

    Code
    $url = $PIWIK_URL."piwik.php?cip=".@$_SERVER['REMOTE_ADDR']."&token_auth=".$TOKEN_AUTH.'&';
    foreach($_GET as $key=>$value) {
    	$url .= $key .'='.urlencode($value).'&';
    }


    und dann den Request abzusenden. Der Request kommt also vom Webserver an den Piwikserver und die IP des Users steht in der Query als CIP.

    Im Log (aus der PM) stehen nun auch Deine Zugriffe drinnen - ganz unten. Da steht das, was nach dem Klick auf den Link in der PM und Aufruf meiner Seite an den Piwikserver gesendet wurde ([_GET] => Array ... IP stimmt hier), was der empfangen hat ([_SERVER] => Array .... IP stimmt auch) und was der Tracker als Daten verwendet hat ([process] => Piwik_Tracker Object). Auch hier ist noch Deine 92er ip zu sehen. Aber im Besucherlog von Piwik und in der DB steht dann die vom Server und nicht Deine.

    Im Grund geht es so:
    1. Zugriff auf Webseite
    2. Proxy-Script lädt JS vom Piwikserver und bindet es ein
    3. JS wird ausgeführt
    4. JS ermittelt Einstellungen
    5. JS ruft Proxy-Script erneut auf, diesmal mit den Parametern (ohne IP)
    6. Proxy-Script hängt die IP an
    7. Proxy-Script übergibt alle Werte an den Piwikserver

    Du siehst per HTTP nur 1-5. Das ist der Sinn der Sache. Daher ist ab Schritt 6 (und im Log) auch der Token enthalten. Der ist für den Direktzugriff und hat SuperUser-Rechte. Der Piwikserver verwendet dann die Werte aus dem Querystring.

    Wenn ein Mensch nicht um dich kämpft, hat er nur gewartet, dass du gehst. ;(

  • Könnte es sein, dass dann der Piwik Server bereits den ersten Proxy Zugriff dazu nutzt, den User anzulegen und daher schon dessen IP drin hat (also die vom Proxy, der Webseite, wo es eingesetzt wird) und nicht die nimmt, die später über cip im Aufruf 7 drin ist?

    Nutzt Du die exakt gleiche Technik bei Domain 1-29?

  • Ob da so sein kann, keine Ahnung. Es schaut fast danach aus, macht aber keinen Sinn und entdecken kann ich das auch nichts.

    Auf dem Piwikserver gibt es primär eine piwik.js und eine piwik.php. Der erste Zugriff vom Webserver auf den Piwikserver ist ja nur für den Abruf der JS-Datei. Da wird nichts verarbeitet, nur das File geladen (Das JS könnte auch auf einem anderen Server oder lokal auf dem Webserver liegen, das spielt keine Rolle).

    Der zweite Zugriff erfolgt dann an die piwik.php und die führt die Trackingverarbeitung durch und sendet das 1px-Gif zurück.

    Zugriff 1 vom Proxyscript auf Piwikserver

    Code
    $piwikJs = pk_get_data($PIWIK_URL.'piwik.js')) {
    			echo $piwikJs;


    Zugriff 2 vom Proxyscript auf Piwikserver

    Code
    $url = $PIWIK_URL."piwik.php?cip=".@$_SERVER['REMOTE_ADDR']."&token_auth=".$TOKEN_AUTH.'&';
    foreach($_GET as $key=>$value) {
    	$url .= $key .'='.urlencode($value).'&';
    }
    
    
    header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
    header('Content-Type: image/gif');
    echo pk_get_data($url);

    Und ja, ich verwende exakt das gleiche Script und die gleiche Einbindung auf allen Webseiten. Das Proxy-Script ist das in /addons/piwik/piwik.php und liegt so auf jeder Webseite.

    Das ist ja das seltsame an der Sache. Ich würde gerne sagen, das liegt an der Einbindung, aber die ist halt überall gleich. Ich würde auch gerne sagen, dass das am Webserver liegt, aber auf dem liegen noch andere Seiten und die gehen auch. Ich kann es primär aber auch nicht auf Piwik schieben, denn der Rest geht ja. Fakt ist nur, dass am Piwikserver die richtigen Daten (Query) ankommen, aber dennoch falsch verarbeitet werden.

    Es gibt auch speziell Einstellungen für Proxys, die man aktivieren oder deaktivieren kann (Nicht Proxyscript, sondern echter Proxy). Habe ich auch schon durch. Ebenso Einstellungen für die Erfassung. Rein per IP, rein per Cookie, gemischt, mit Heuristik oder ohne (Erkennung der Einstellungen). Was ich da auch mache, es bleibt dabei.

    Wenn ein Mensch nicht um dich kämpft, hat er nur gewartet, dass du gehst. ;(

  • Gelöst

    So, Chris, Du hast mich auf den richtigen Weg gebracht und ich habe die Lösung :)

    Ist aber schon bescheuert, wenn man es mal weiß, dann gut, wenn aber nicht, dann steht man so doof da wie ich. Ich schrieb ja gestern was vom Token und SuperUser-Recht. Der wird einmal in Piwik angelegt und dann "Für alle Seiten" der Zugriff gewährt. Nur der Superuser mit korrektem Token darf per URL die IP senden (die Piwik-API verwenden), bei allen anderen ermittelt Piwik die per $_SERVER['REMOTE_ADDR'] selbst.

    So, der Haken an der Sache ist nun gewesen, dass bei neu angelegten Seiten der Token bzw. dessen User KEINE Berechtigung bekommt, obwohl "Für alle Seiten" gewählt wurde. Man muss diese Berechtigung also für jede neue Seite manuell vergeben! Fehlt die Berechtigung, dann kann man die IP per cip zwar senden, Piwik nimmt aber dennoch die von $_SERVER['REMOTE_ADDR'] und das ist beim Proxy-Script ja die Server-IP. Da ist es dann auch egal, ob der Token vorhanden ist oder nicht, ob er stimmt oder nicht. Ohne gesonderte Freigabe geht da gar nichts in Sachen IP.

    Herrje, so was dämliches und doch simples. Nur warum um Gottes Willen steht das denn nirgends im Backend? Ein kleiner Hinweis beim "Neue Seite anlegen" würde ja reichen...

    Wenn ein Mensch nicht um dich kämpft, hat er nur gewartet, dass du gehst. ;(

  • Zitat von Alex07;34197

    und ich komme mit radikalen und das hätt nix gebracht.
    man lernt immer dazu


    Das hatte ich mir auch gedacht, wollte es nur nicht sagen. Schließlich war der Ratschlag ja nett gemeint ;) Und das hätte wohl schon was gebracht, denn dann hätte ich alle Webseiten ja neu anlegen müssen und eben auch die User, da wär mir das dann sicherlich auch aufgefallen. So gesehen, der Weg hätte funktioniert, nur halt mit derben Verlusten ;)

    Wenn ein Mensch nicht um dich kämpft, hat er nur gewartet, dass du gehst. ;(

  • Zitat von Synonym;34196

    Ist aber schon bescheuert, wenn man es mal weiß, dann gut, wenn aber nicht, dann steht man so doof da wie ich. Ich schrieb ja gestern was vom Token und SuperUser-Recht. Der wird einmal in Piwik angelegt und dann "Für alle Seiten" der Zugriff gewährt. Nur der Superuser mit korrektem Token darf per URL die IP senden (die Piwik-API verwenden), bei allen anderen ermittelt Piwik die per $_SERVER['REMOTE_ADDR'] selbst.

    So, der Haken an der Sache ist nun gewesen, dass bei neu angelegten Seiten der Token bzw. dessen User KEINE Berechtigung bekommt, obwohl "Für alle Seiten" gewählt wurde. Man muss diese Berechtigung also für jede neue Seite manuell vergeben! Fehlt die Berechtigung, dann kann man die IP per cip zwar senden, Piwik nimmt aber dennoch die von $_SERVER['REMOTE_ADDR'] und das ist beim Proxy-Script ja die Server-IP. Da ist es dann auch egal, ob der Token vorhanden ist oder nicht, ob er stimmt oder nicht. Ohne gesonderte Freigabe geht da gar nichts in Sachen IP.

    Hallo.

    Dieser Thread ist zwar schon etwas älter, aber ich hab genau dasselbe Problem und im Piwik-Forum interessiert das Thema echt niemanden.
    Ich hatte dieses Problem bei der V1.2 von heute auf morgen, und auch bei der aktuellen 2.0.2 hab ich es auch wieder. Selbst bei einer Neuinstallation von V2.0.2 hab das so.

    Von daher würde mich interessieren, wie genau Deine Lösung aussah.

    Gruss
    wp180

  • Ja hallo wp180. Deine Frage ist nun aber nicht mehr wirklich einfach, denn es ist schon recht lange her und die Versionen haben sich mehrfach geändert. (Ich habe hier nun die 2.0.1). Auch habe ich keine Ahnung, ob Dein Problem das gleiche ist wie meines damals.... (Habe kein Post bei *** Link veraltet *** gefunden, oder bist Du der "mlh" dort?)

    Aber mein Problem oben war folgendes:
    Vorausgesetzt: Mehrere Webseiten sind schon angelegt. War bei mir der Fall, sonst wäre der Fehler früher aufgefallen.

    Also mehrere Webseiten hatte ich schon angelegt. Spezielle User noch nicht, also nur den Admin, mehr nicht. Später dann man hatte ich einen extra User hinzugefügt, der nur für die API gedacht war. War damals erforderlich, damit man den Token bekommt, der für die API benötigt wird. Soweit so gut, kein Problem. Nach dem Anlegen des Users erscheint der oben in der Tabelle mit den roten / grünen Punkten für die Berechtigungen. Hier kann man als Webseite "alle Webseiten" auswählen und eine Berechtigung vergeben.

    Allerdings hatte ich dieses "alle Webseiten" damals falsch verstanden. Es zählt nur für "alle Seiten", die in diesem Moment angelegt sind. Werden neue Webseiten danach angelegt, dann zählen die nicht mit dazu und der User hat bei denen dann keine Berechtigung. Also muss man für jede nachträglich hinzugefügte Seite die Berechtigungen manuell anpassen.

    Wenn ein Mensch nicht um dich kämpft, hat er nur gewartet, dass du gehst. ;(

  • Hallo Synonym.

    Danke für Deine schnelle Antwort. Dank Deiner Antwort bin ich auch darauf gekommen, dass was mit dem Token nicht stimmt. Habs mittlerweile hinbekommen.
    Herzlichen Dank für diesenschnellen Support, da könnte sich das Piwikforum ein Beispiel daran nehmen :)

    LG, wp180