Tracking einiger Funktionen

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
Bauer321
Beiträge: 465
Registriert: Sa 21. Aug 2010, 21:30
OS, Lazarus, FPC: Windows 7 Ultimate (L 1.2.2 FPC 2.6.4 32-bit)
CPU-Target: 64-Bit
Wohnort: nahe Bremen
Kontaktdaten:

Tracking einiger Funktionen

Beitrag von Bauer321 »

Ich plane in einem Programm von mir (genauer gesagt diesem: mcpatcher.net), mit dem man die Version von Minecraft (was das genau ist, spielt keine Rolle aber ich muss das eben erwähnen) ändern kann, eine Tracking Funktion einzubauen, damit ich sehen kann wie beliebt welches Feature ist. Da jede Version auch Speicher (in Form von Ressourcen) benötigt und das Programm dadurch immer größer und größer wird, möchte ich nun bei jeder Versionsänderung wissen, welche Version genutzt wurde, anhand der Daten kann ich dann in ca. einem Monat irrelevante Versionen wieder aus dem Programm entfernen um Speicher zu sparen.

Geplant habe ich nun so etwas: Wenn der Benutzer die Version ändert rufe ich ein PHP Script mit get Parametern ab, welches die Daten dann erfasst. Dazu hatte ich gedacht übertrage ich einen Hash der MAC Adresse sowie den Versionsnamen. Anhand der Daten kann ich dann zum einen erfassen wie oft das Programm im durchschnitt genutzt wird, zum anderen welche Versionen beliebt sind, außerdem kann ich per PHP z.B. Maximal 2 MAC Adressen pro IP zulassen und dadurch eine Manipulation verhindern.
Beispiel: mcpatcher.net/tracking.php?mac=md5machash&v=version

Was sagt ihr dazu? Was sollte man evtl besser machen?
Gibt es eine Möglichkeit meinem Programm einen eigenen Useragentstring zu machen? (das könnte auch ein wenig gegen Manipulation entgegenwirken.)
www.mcpatcher.net | www.hoeper.me

Socke
Lazarusforum e. V.
Beiträge: 3178
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Tracking einiger Funktionen

Beitrag von Socke »

Bauer321 hat geschrieben:außerdem kann ich per PHP z.B. Maximal 2 MAC Adressen pro IP zulassen und dadurch eine Manipulation verhindern.
Wie groß ist der Nutzen dieses Features und welchen Aufwand kostet das? Wer hätte daran Interesse, deine Statistiken zu verfälschen?
Bauer321 hat geschrieben:Gibt es eine Möglichkeit meinem Programm einen eigenen Useragentstring zu machen?
Den musst du in deine HTTP-Anfrage einbauen; wie das geht, kann dir am Besten der-/diejenige sagen, die deinen Netzwerkzugang (in deinem Minecraft-Patcher) programmiert hat. Ohne diese Informationen kann dir hier aber auch keiner mehr dazu sagen als auf den Wikipedia-Artikel zu HTTP-Header-Angaben zu verweisen.
Bauer321 hat geschrieben:Geplant habe ich nun so etwas: Wenn der Benutzer die Version ändert rufe ich ein PHP Script mit get Parametern ab, welches die Daten dann erfasst. Dazu hatte ich gedacht übertrage ich einen Hash der MAC Adresse sowie den Versionsnamen. Anhand der Daten kann ich dann zum einen erfassen wie oft das Programm im durchschnitt genutzt wird, zum anderen welche Versionen beliebt sind
Nimm einen Stift und ein Blatt Papier; schreibe dir diese Informationen auf:
  • Hast du deine Benutzer über die Datensammlung informiert?
  • Warum musst du einen Nutzer identifizieren?
  • Was willst du erfassen?
  • Welche Daten hast du?
Für den Rest hast du praktisch schon einen Lösungsansatz beschrieben.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Bauer321
Beiträge: 465
Registriert: Sa 21. Aug 2010, 21:30
OS, Lazarus, FPC: Windows 7 Ultimate (L 1.2.2 FPC 2.6.4 32-bit)
CPU-Target: 64-Bit
Wohnort: nahe Bremen
Kontaktdaten:

Re: Tracking einiger Funktionen

Beitrag von Bauer321 »

das mit den MAC Hashes soll sein, um allgemein eine Statistik zu bekommen. Letztendlich kann (und will) ich ja gar nicht sagen du hast das und das und das gemacht. Sondern ich möchte eher Sachen wie im schnitt hat jeder Nutzer 5 Mal die Version geändert (z.b.).
Wie groß ist der Nutzen dieses Features und welchen Aufwand kostet das? Wer hätte daran Interesse, deine Statistiken zu verfälschen?
Der Aufwand ist gering, das sind vielleicht 20 Zeilen unterschied und 120 Zeilen PHP insgesamt.
Das mit dem verfälschen passiert ganz schnell.

Code: Alles auswählen

Welche Daten hast du?
Wie ist das gemeint?

Also zum Ziel nochmal, ich möchte am ende ermitteln können wie viel das Programm genutzt wird und welche Versionen beliebt sowie unbeliebt sind.
Die Statistik ist eher für mich gedacht, während die Beliebtheit der einzelnen Versionen dazu genutzt werden sollen, die am wenigsten benötigten Versionen zu entfernen und damit den Download zu verkleinern.
Das entlastet zu den Schlagzeiten den Server und verringert die Download Zeit.
www.mcpatcher.net | www.hoeper.me

Socke
Lazarusforum e. V.
Beiträge: 3178
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Tracking einiger Funktionen

Beitrag von Socke »

Bauer321 hat geschrieben:Das mit dem verfälschen passiert ganz schnell.
Kannst du mir den Punkt bitte genauer erläutern? Viele private Internetnutzer verwenden Dank NAT mehrere Computer mit unterschiedlichen MAC- aber identischen IP-Adressen. Hier schließt du dann mehrere Individuen eines Haushalts aus. Außerdem lässt sich von einer MAC-Adresse nicht auf einen Nutzer schließen, da diese voneinander unabhängig sind.
Bauer321 hat geschrieben:

Code: Alles auswählen

Welche Daten hast du?
Wie ist das gemeint?
So, wie es da steht: Welche Daten hast du? Daten sind atomare Informationseinheiten -- ganz einfach soweit. Beispielsweise kann das sein:
  • Benutzeridentifkation (MAC-Hash)
  • Zeitstempel des Programmstarts
  • Downloads
  • Versionen der Downloads
Bauer321 hat geschrieben:Also zum Ziel nochmal, ich möchte am ende ermitteln können wie viel das Programm genutzt wird und welche Versionen beliebt sowie unbeliebt sind.
Damit du zufriedenstellende Statistiken erhältst, musst du vorher wissen, wie sie berechnet werden und was sie aussagen.
  • Programm genutzt = Starts absolut/zeitbezogen (Woche/Monat)
  • Wann ist eine Version beliebt, wann unbeliebt? Welche Fristen sind hier zu beachten?
  • Hat die Dateigröße/Traffic Einfluss auf das Abschalten (bspw. 5x 5MB oder 50x 1MB verursachen den gleichen Datenumsatz)
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Bauer321
Beiträge: 465
Registriert: Sa 21. Aug 2010, 21:30
OS, Lazarus, FPC: Windows 7 Ultimate (L 1.2.2 FPC 2.6.4 32-bit)
CPU-Target: 64-Bit
Wohnort: nahe Bremen
Kontaktdaten:

Re: Tracking einiger Funktionen

Beitrag von Bauer321 »

geplant ist halt aufzuzeichnen, wie oft was an welchem tag gemacht wurde, dann kann man daraus die verschiedensten Sachen ableiten.
Zur MAC Adresse: Es ist gar nicht geplant das man jetzt wirklich jeden Nutzer eineindeutig erkennt sondern lediglich das man dies mit einer relativ höhen Wahrscheinlichkeit sagen kann.

Naja ich werde das jetzt einfach mal so umsetzen. Und natürlich versuchen die Daten möglichst sicher abzuspeichern. Evtl wäre auch eine tägliche Anonymisierung (durch Zusammenfassung der Daten) eine Möglichkeit das ganze so Verbraucher freundlich wie möglich zu gestalten.
www.mcpatcher.net | www.hoeper.me

Socke
Lazarusforum e. V.
Beiträge: 3178
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Tracking einiger Funktionen

Beitrag von Socke »

Bauer321 hat geschrieben:Evtl wäre auch eine tägliche Anonymisierung (durch Zusammenfassung der Daten) eine Möglichkeit das ganze so Verbraucher freundlich wie möglich zu gestalten.
Verbraucherfreundlich ist, wenn du so wenig Daten wie möglich sammelst und wenn möglich auch keine personenbezogenen Daten; Die MAC-Adresse ist ganz klar personenbezogen, ein Hash davon nur eingeschränkt (du kannst vom Benutzer auf die Daten schließen, aber nicht umgekehrt). Eine Alternative wäre eine UUID, die beim ersten Programmstart erzeugt und in einer Konfigurationsdatei abgelegt wird; Nach Löschen der Konfiguration ist auch die Zuordnung zwischen Daten und Benutzern nicht mehr möglich. Möglicherweise hast du auch noch einen Speichervorteil gegenüber einem Hash (eine UUID ist 16 Byte = 128 Bit groß).
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Bauer321
Beiträge: 465
Registriert: Sa 21. Aug 2010, 21:30
OS, Lazarus, FPC: Windows 7 Ultimate (L 1.2.2 FPC 2.6.4 32-bit)
CPU-Target: 64-Bit
Wohnort: nahe Bremen
Kontaktdaten:

Re: Tracking einiger Funktionen

Beitrag von Bauer321 »

Und eine UUI generiere ich wie? (also die Idee finde ich gut und sehe da auch keinen Nachteil im Gegenzug zur MAC Adresse.
www.mcpatcher.net | www.hoeper.me

Socke
Lazarusforum e. V.
Beiträge: 3178
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Tracking einiger Funktionen

Beitrag von Socke »

Bauer321 hat geschrieben:Und eine UUI generiere ich wie?
Mit der Funktion CreateGUID() aus der Unit SysUtils.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Bauer321
Beiträge: 465
Registriert: Sa 21. Aug 2010, 21:30
OS, Lazarus, FPC: Windows 7 Ultimate (L 1.2.2 FPC 2.6.4 32-bit)
CPU-Target: 64-Bit
Wohnort: nahe Bremen
Kontaktdaten:

Re: Tracking einiger Funktionen

Beitrag von Bauer321 »

ok danke, das hört sich nach einer sehr guten Lösung an.
www.mcpatcher.net | www.hoeper.me

Antworten