Umfrage-Tool und IP-Sperre

Sunday, March 2nd, 2008 | PHP

Ich hab in der letzten Woche ein kleines Umfrage-Tool geschrieben. Damit jemand nur einmal abstimmen kann, setze ich neben einem Cookie auch noch auf eine IP-Sperre.

Generell ist eine IP-Sperre aber problematisch, viele Firmen haben einen Internetanschluß mit mehreren Users. Der Router macht NAT und die x User gehen über eine öffentliche IP ins Internet. Aus so einem Netz könnte man natürlich auch nur einmal abstimmen. Auf der anderen Seite gibt es Internetprovider, die ihre User über Zwangsproxies leiten, damit kann es sein, dass zwei Requests von einem User, die wenigen Sekunden auseinander liegen, von verschiedenen IPs kommen. AOL setzt oder setzte auf einen Zwangsproxy.

Bei dem Umfrage-Tool nutze ich veschiedene Faktoren, damit ich eine doppelte Abstimmung verhindern kann. Wie schon geschrieben ist ein Faktor die IP-Adresse, für das Testen der IP-Sperre habe ich ein kleines Script in PHP5 geschrieben, das automatisch Verbindungen über einen öffentliche Proxy-Server herstellt.

Das Script lädt zuerst einen RSS-Feed mit einer Liste von Proxy-Servern und speichert diese in einer Textdatei, ganz hilfreich für Debug-Zwecke. Der RSS-Feed wird von xroxy.com bereitgestellt.

Danach ruft das Script über alle Proxy-Server die URL des Umfrage-Tools auf, dabei wird nach dem Zufallsprinzip ein User-Agent ausgewählt. Sehr leicht lässt sich auch ein HTTP-Referer mitsenden, mit ein bisschen mehr Arbeit können auch Cookies ausgelesen und dann mitgesendet werden.

Bei dem Script nutze ich die Snoopy-Klasse, die solltest du ziemlich leicht über Google finden.

Mit dem Script solltet ihr eure eigenen Umfrage-Tools ziemlich leicht testen können, das Script findest du hier:
PHP-Script um mit Hilfe von Proxy-Servern eine IP-Sperre umgehen zu können.

Tags: , , , ,

2 Kommentare to Umfrage-Tool und IP-Sperre

Böser Seo
May 7, 2008

Klasse Script :) Muss ich den Kram nicht selber proggen. Klasse Blog übrigens gefällt mir 😉

infogurke
May 8, 2008

Danke. RSS-Feed in den Reader 😉