Ich habe mir auch mal ein paar Gedanken zu dem Thema gemacht. Ich sehe zwei Hauptprobleme:
- Großer Server -> viele Votes -> wird immer größer
Kleiner Server -> wenige Votes -> bleibt kleiner
(Das hat so ein bisschen was von der Armutsschere)
- Fake Votes
Nun, Problem Nummer 1 kann man nur durch ein anderes Konzept lösen. Machen wir mal einen Interessensvergleich:
- Große Serverbetreiber wollen mehr User und Prestige
- Kleine Serverbetreiber wollen mehr User
- Suchende User wollen einen guten (groß ≠ gut, klein ≠ gut, Votes ≠ gut) Server finden
- Bereits spielende User wollen eine Belohnung durch Votifier bekommen
- Der Serverlistenbetreiber will primär Werbeeinnahmen durch möglichst viele Klicks, dadurch bedingt sekundär ein aussagekräftiges Bewertungssystem und häufig wiederkehrende Besucher
In Synthese:
- Aussagekräftiges, intelligentes, faires, aber einfaches Bewertungssystem
- Votifier
- Zeitlich terminierter Verfall von Votes
Nur wenn es gelingt diese 3 Aspekte unter einen Hut zu bekommen, kommt was Gutes dabei raus. Punkt 2 und 3 sind einfach zu kombinieren (sie repräsentieren das jetzige System). Schwierig wird es mit Punkt 1.
Eure Ideen sind gefragt! Wie macht man ein Bewertungssystem fair und aussagekräftig, hält es dabei aber besonders einfach? Große Server sollten hierbei nicht überproportionale Chancen haben, so wie aktuell. Denn momentan werden im Ranking ja nur die größten Server und am Ende die kleinsten Server angezeigt, so dass man sie eigentlich nie sieht. Ich handel hier auch ein bisschen in Eigeninteresse, denn mein armer, kleiner Server wird erst irgendwann auch Seite 18 aufgeführt, obwohl er (ohne mich selbst beschönigen zu wollen) er qualitativ signifikant besser ist, also so mancher großer Server. Noch deprimierender muss das für die Server sein, die gar keine Votes haben.
Für dieses Problem hätte ich auch schon einen Lösungsansatz, der aber noch nicht ganz ausgereift ist. Bei Interesse kann ich den ja mal hier niederschreiben.
Nun zum Problem 2: Fake Votes.
Captchas sind scheiße. Und ineffektiv. Jeder Admin-Kiddy, der keine Hobbies hat, kann die Liste vollspammen mit Votes. Außerdem nerven Captchas unglaublich.
Ersteinmal ist der Prozentsatz der zu blockenden Votes extrem gering, denn nur Admins würde Votes spammen. Normale Spieler bekommen dadurch ja nicht mehr. Einmal gevoted, ist der Nutzername ja für 24h gesperrt. Von diesen Admins gibt es auch wieder nur wenige, die obsessiv genug wären ihre Zeit mit dem Spammen zu verbringen.
Aber egal, hier mal ein par Vorschläge:
- Natürlich, der IP-Check.
- Natürlich, ein Cookie-Check. Allerdings nicht so ganz natürlich, der EverCookie. Man kann direkt die ganze Library nutzen oder nur einen Teil rauskopieren. Höchst effektiv für Browser.
- Sessionbasierte Zeitchecks: Beim ersten betreten der Seite wird eine Session erstellt, diese muss mindestens 30 Sekunden alt sein, bis gevotet werden kann, auf der Voting-Seite kann optional auch ein Count-Down anstelle einer plumpen Fehlermeldung angezeigt werden.
- "Unsichtbare Captchas": Das sind technische Überprüfungen (meistens JS in Kombination mit PHP), die überprüfen, ob die Seite tatsächlich auch von einem Browser aufgerufen wird und nicht von einem Spambot. Das kann ein einfaches Testen der JS-Umgebung mit DOM und Co oder auch das Parsen von Bilddaten. Hier wird also indirekt die Echtheit eines Users überprüft, da kein Spambot so komplex emuliert.
- Alternative Captchas: Das sind Captchas, die den User auffordern etwas zu tun, aber nicht so ein blöder Code. Sondern z.B. eine Art Biderpuzzle, ein Slide-To-Vote-Schieberegler und andere Dinge.
- Username Check: Da ein Username angegeben werden muss, können wir prüfen, ob der echt ist: https://minecraft.net/haspaid.jsp?user=silvinci So werden random qcb8474cdf verhindert. Ich denke, dass dieser Check besonders effektiv ist.
- Votifier Listener: Die Admins werden gezwungen, einen von uns programmierten Votifier Listener einzubinden, der nach einem Vote bei uns per HTTP vorbeischaut und alle Usernamen mitliefert, die zum Zeitpunkt auf dem Server sind. Dieser Listener kann natürlich von erfahrenen Admins modifiziert werden, trotzdem muss die Antwort den votenden Usernamen beinhalten, was besonders in Kombination mit dem Username Check sehr nervig für den Spammer wird.
Um eine Modifikation zu verhindern könnte man auch noch eine RSA gesicherte Checksum zur Laufzeit des Listeners basteln.
Mir würden wahrscheinlich noch mehr Sachen einfallen, aber ich bein zu müde und geh gleich pennen.

Also, wenn ihr meine Hilfe wollt, bin ich gerne bereit ein Konzept mit Code auszuarbeiten.
Und über Problem 1 (Die Voting-Schere) können wir auch gerne reden.