2009-11-19 11 views
6

Ich versuche ein System zu erstellen, das den Benutzern nur ein CAPTCHA zeigt, wenn Bot-ähnliches Verhalten erkannt wird. Hier sind die Verhaltensweisen, die mir zur Zeit der Suche nach, wenn jemand ein Kontakt-Formular ausfüllen ...PHP Bot-ähnliches Verhalten erkennen

  1. , wie schnell die Form wird nach dem Laden der Seite vorgelegt (wenn seine 5 Sekunden oder weniger, sein fast unmöglich artgerecht auszufüllen)

  2. wie viele Kontaktversuche haben in der letzten Stunde (Limit 15/Stunde) oder Tag (Limit 25/Tag)

  3. Prüfung Nachrichteninhalt für Links und Cross-Check gemacht worden Links zu anderen Links, die kürzlich am letzten Tag hinzugefügt wurden

  4. Check Nachricht für Spam-Schlüsselwörter


werde ich hier nützliche Community-Lösungen hinzufügen, wie sie kommen:


Was andere Verhaltensweisen von Robotern hindeuten würde, dass PHP erkennen helfen könnte (nicht will, JS verwenden, weil es ausgeschaltet werden kann), ohne die Hilfe eines CAPTCHA?

+0

Wenn Sie Bilder haben/CSS auf der Seite, dann ist es weniger wahrscheinlich, dass Bots sie geladen werden kann – Artelius

+0

meinen Sie, wenn ich eine haben Bild/CSS auf der Seite, werden die Bots nicht einmal die Seite laden? haben die meisten Seiten nicht mindestens css? – johnnietheblack

+0

Ich denke, er meint, dass sie die Bilder nicht laden/css – esqew

Antwort

5

Eine sehr einfache (einige fortgeschrittenere Bots werden nicht darauf fallen, aber viele grundlegende Bots werden) - setzen Sie ein falsches Feld in der Form, die für einen normalen Benutzer nicht sichtbar ist (und vielleicht als Backup mit einer normalerweise unsichtbaren Bezeichnung "hier nichts eingeben"). Wenn beim Absenden Inhalte in das Feld gelangen, ist es wahrscheinlich ein Bot.

+0

Richtig, ich habe tatsächlich davon gehört ... einen "Honigtopf" ... wenn jemand interessiert ist, meine Frage bearbeiten und einen Link hinzufügen – johnnietheblack

2

Ich glaube, Sie könnten mit Ihrer robots.txt Datei koordinieren, und bestimmen, WENN es vom Benutzer getroffen wurde, würde dies dann erlauben Sie den ip/timestamp des Anforderers zu verfolgen, was es unwahrscheinlich erscheinen würde, dass ein normaler Benutzer würde sehen Sie Ihre robots.txt Datei.

Da die meisten Bots Ihre robots.txt Datei überprüfen (vielleicht für Verzeichnisstruktur, etc).

+1

Ich denke, er möchte die Art von Bots fernhalten, die sich als Menschen ausgeben zwielichtige oder rechtswidrige kriminelle Absichten, und überprüfen Sie nicht robots.txt. –

+0

können Sie dies tun? Ich weiß zu Recht nicht, ob das möglich ist oder nicht, aber wenn Sie es beschreiben können, oder einen Link auf, wie, es eine gute Idee – johnnietheblack

+0

einige Bots die robots.txt-Datei überprüfen, um Verzeichnisstruktur zu erhalten. Ich meinte das nicht für Google/Yahoo/Suchmaschinen-Crawler. – Jakub

2

Ein interessanter Faktor könnte die Eingabe von Frequenz- und Mausbewegungen sein. Sie sind ziemlich einfach über JavaScript zu fangen. Sie zu analysieren ist eine andere Sache, obwohl ich mir vorstelle, dass es ziemlich einfach wäre, Abweichungen und Mittelwerte zu berechnen, die eine gute Vorstellung davon geben, wie "organisch" die Bewegungen sind.

Auf der anderen Seite ist dies auf der Client-Seite extrem teuer und kann, wenn es erkannt wird, als Snooping/Spionage verstanden werden. Vielleicht als erweiterte Sicherheit für Kunden, die im Verdacht stehen, Bots zu sein?

+1

keine schlechte Idee, aber wenn ich ein Bot bin, könnte ich einfach Javascript deaktivieren und umgehen, könnte ich nicht? – johnnietheblack

+0

Ja. Dies funktioniert nur, wenn Sie Javascript als Muss haben. –

+0

cooly, krank +1 für eine coole Idee ... aber ich brauche speziell non-js Lösungen (ich möchte dies so luftdicht wie möglich machen, und meine Seiten sind nicht js-abhängig) ... danke! – johnnietheblack

1

Vielleicht überprüfen Sie die Verweis-URL? Ich kann mir kaum vorstellen, dass viele Leute in ein Kontaktformular geraten, ohne zuerst mehrere andere Seiten einer Website zu durchsuchen, genauso wie Bestellformulare, ...

+0

..und was mit der verweisenden URL machen? Überprüfen Sie, dass es nicht auf der schwarzen Liste ist? – Jens

2

Ich habe ein verstecktes Feld (von CSS, display: none) in die Form mit name="email", wenn sie es war ein Roboter gefüllt ist;)

0

Ich würde vorschlagen, vergessen die Zeichen zu erraten versuchen. ..sie ändern sich ständig.

Ich würde jede vorstellbare "Eigenschaft" des Verhaltens in Tokens umwandeln, die Funktionen automatisch mit "ok", "Spam" oder "unsicher" bewerten. Dann, Train on Error '(notieren Sie die Fälle, in denen die Schätzung falsch war). Nach einiger Zeit können Sie eine Genauigkeit von 99,7% erreichen.

Hier ist ein Beispiel für die 7 interessantesten Features einer Einreichung auf meiner Website, die bei 89,9771% Spam bewertet wurde. Es ist Spam.

sind Funktionen Spam 98,9% wahrscheinlich sein Jedes dieser Schlüsselwörter in der Post gefunden:

mssg txt - "tours" || Prob 0.98993 
mssg txt - "cruises" || Prob 0.98993 
mssg txt - "agencies" || Prob 0.98993 
mssg txt - "choice" || Prob 0.98991 

Die Telefonnummer, die

tel number - "123456" || Prob 0.95440 Delta 0.45440 
Spam '12345' ist 95% wahrscheinlich zu sein

die Gesamtlänge der Nachricht 30 Zeichen ist (nach html entfernt) ist eine Funktion, die 94% Spam

mssg maxlen - "30" || Prob 0.94600 
anzeigt 0

(Es gab ein weiteres Feature, das Prob 0.01011 erzielte, das die gesamte kombinierte Punktzahl vereitelte, die es ein wenig niederschlug. Aber, ich wird nicht mir sagen, was das Merkmal war; o)


Aus einem bekannten Spam-ip vorgelegt wurde: http://www.projecthoneypot.org/ip_84.19.186.171 aber es war nicht nötig, dass bestimmte Kenntnisse zu verwenden es als Spam zu markieren. Ich sammle alle möglichen Informationen, wie IPs, Einreichungsraten usw. Aber, wie Sie sehen können, sind die gröbsten Anzeichen von Bot-ähnlichem Verhalten nicht das, was Sie erraten könnten.

Um Ihre eigene eine dieser zu bauen .... dies lesen: http://www.paulgraham.com/spam.html