2009-11-19 4 views
6

Je tente de construire un système qui ne montre aux utilisateurs qu'un CAPTCHA lorsqu'un comportement de type bot est détecté. Voici les comportements que je suis actuellement à la recherche quand quelqu'un remplit un formulaire de contact ...PHP Détection d'un comportement semblable à un bot

  1. la rapidité avec laquelle le formulaire est soumis après le chargement de la page (si ses 5 secondes ou moins, il est presque humainement impossible remplir)

  2. combien de tentatives de contact ont été faites dans la dernière heure (limite de 15/heure), ou jour (limite de 25/jour)

  3. vérification du contenu des messages pour les liens, et contre-vérification liens avec d'autres liens récemment inclus dans le dernier jour

  4. chèque message pour les mots-clés anti-spam


Je vais ajouter des solutions communautaires utiles ici comme ils viennent:


Quels autres comportements seraient indicatifs des robots que PHP pourrait aider à détecter (ne veulent pas utiliser JS car il peut être désactivé) sans l'aide d'un CAPTCHA?

+0

Si vous avez des images/CSS sur la page, il est moins probable que les robots vont les charger – Artelius

+0

voulez-vous dire si j'ai une image/css sur la page, les robots ne vont même pas charger la page? la plupart des pages n'ont-elles pas de css au moins? – johnnietheblack

+0

Je pense qu'il veut dire qu'ils ne seront pas charger les images/css – esqew

Répondre

5

Un très simple (certains bots plus avancés ne tomberont pas pour cela, mais beaucoup de bots de base seront) - mettre un champ faux dans la forme qui n'est pas visible pour un utilisateur régulier (et en tant que sauvegarde, peut-être avec une étiquette normalement invisible "ne tapez rien ici"). S'il y a du contenu dans le champ lors de la soumission, il y a des chances que ce soit un bot.

+0

droit, en fait ive entendu parler de cela ... un « pot de miel » ... si quelqu'un est intéressé, modifier mal ma question, et ajouter un lien – johnnietheblack

2

Je crois que vous pourriez coordonner avec votre fichier robots.txt, et déterminer SI il a été frappé par l'utilisateur, cela vous permettrait alors de garder une trace de ip/timestamp du demandeur, ce qui rendrait improbable qu'un utilisateur normal consultez votre fichier robots.txt.

Comme la plupart des robots vérifieront votre fichier robots.txt (peut-être pour la structure dir, etc).

+1

Je pense qu'il est à la recherche de garder le genre de robots qui pose en tant qu'êtres humains avec intentions criminelles louches ou à l'envers, et ne vérifie pas robots.txt. –

+0

êtes-vous capable de faire cela? Je ne sais pas légitimement si cela est possible ou non, mais si vous pouvez le décrire, ou fournir un lien sur la façon, une bonne idée – johnnietheblack

+0

certains bots peut vérifier le fichier robots.txt pour obtenir la structure de répertoire. Je ne voulais pas dire ceci pour google/yahoo/crawlers de Search Engine. – Jakub

2

Un facteur intéressant pourrait être la fréquence de frappe et les mouvements de la souris. Ils sont assez faciles à attraper via JavaScript. Les analyser est une question différente, bien que j'imagine qu'il serait assez facile de calculer les écarts et les moyennes qui donnent une bonne idée de la façon dont les mouvements sont «organiques». D'un autre côté, cela est extrêmement coûteux du côté client et peut être compris comme un espionnage/espionnage s'il est détecté. Peut-être que la sécurité avancée pour les clients qui sont soupçonnés d'être des robots?

+1

pas une mauvaise idée, mais si im un bot, je pourrais facilement éteindre javascript et contourner cela, je ne pouvais pas? – johnnietheblack

+0

Oui. Cela ne fonctionnerait que si vous avez Javascript comme un must. –

+0

cooly, malade +1 pour une idée géniale ... mais j'ai besoin de solutions non-js (je veux rendre ceci aussi étanche que possible, et mes sites ne dépendent pas de js) ... merci! – johnnietheblack

1

Peut-être vérifier l'URL de référence? Je peux difficilement imaginer beaucoup de gens se retrouvant à un formulaire de contact sans d'abord passer par plusieurs autres pages dans un site Web, de même pour les formulaires de commande, ...

+0

..et faire quoi avec l'URL de référence? Vérifiez que ce n'est pas sur la liste noire? – Jens

2

J'ai ajouté un champ caché (par CSS, display: none) à la forme avec name="email", quand il est rempli, il était un robot;)

0

Je vous suggère oublier d'essayer de deviner les signes. ..ils sont toujours en train de changer.

Je tokenize tous les imaginables « caractéristique » du comportement, le score automatiquement les caractéristiques soit, « ok », « spam » ou « incertain ». Ensuite, «Entraînez-vous sur l'erreur» (notez les cas où la supposition était fausse). Après un peu de temps, vous pourriez avoir une précision de 99,7%.

Voici un exemple des 7 caractéristiques les plus intéressantes d'une soumission à mon site qui a été marqué à 89,9771% du spam. C'est un spam.

Chacun de ces mots-clés trouvés dans le poste sont des caractéristiques qui sont 98,9% de chances d'être du spam:

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

Le numéro de téléphone est « 12345 » est de 95% de chances d'être du spam

tel number - "123456" || Prob 0.95440 Delta 0.45440 

la longueur totale du message étant de 30 caractères (après html enlevée) est une fonction qui indique 94% de spam

mssg maxlen - "30" || Prob 0.94600 

(Il y avait une autre caractéristique qui a marqué Prob 0.01011 qui a compensé le score total combiné en le réduisant un peu. Mais, je ne suis pas dire va ce que caractéristique était; o)


Il a été soumis à partir d'une adresse IP spam bien connu: http://www.projecthoneypot.org/ip_84.19.186.171 mais il n'y avait pas besoin d'utiliser cette connaissance particulière pour le marquer comme spam. Je rassemble toutes sortes d'informations, comme les adresses IP, les taux de soumission, etc ... mais, comme vous pouvez le voir, les signes les plus flagrants de comportement de type bot ne sont pas ce que vous pourriez deviner.

Pour construire votre propre un de ces .... lire ceci: http://www.paulgraham.com/spam.html