Seohackers netlinking

Google api détection de langue : utilisation antispam

Ecrit par admin le Vendredi 6 février 2009 à 14:43 - Catégorie Outils référencement

Vous en avez marre de devoir faire la chasse aux spams sur les commentaires de vos blogs, sur les topics de vos forums, sites de social bookmark, digg-like, annuaires, CMS… Ca tombe bien moi aussi :)

Voici donc une astuce simple et efficace, pour lutter contre le spam et la propagation de messages porno, ou de pubs pour les pillules bleues sur vos sites web.

L’astuce consiste à utiliser l’api Google qui permet de connaitre la langue dans laquelle un texte donné a été écrit. Pour en savoir plus sur cette api, visitez cette page : http://code.google.com/apis/ajaxlanguage/

Le but est donc d’utiliser cet api Google pour limiter le spam des commentaires sur vos blogs, forums,…
En effet, ayant un blog français écrit en langue française, je me fait spammer par des russes, des chinois, des anglophones… qui utilisent des logiciels de soumission automatique comme XRumer et autres scripts de soumission automatiques
Pour m’en protéger, j’ai pensé à utiliser ce contrôle sur la langue du commentaire avant insertion du commentaire en bdd.

Résultat, j’ai à présent zéro spam :) Enfin zéro spam de provenance étrangère, j’ai toujours quelques commentaires français limite spam, du genre « merci pour cet article » avec une ancre spammy sur le nom :) et autres subtilités…

Code source du script php antispam :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
<?php
//ajout controle de la langue :
$comment_content="Hello Girls is this a SEO Black Hat blog or a white hat blog ?";
$confiance='0.20';
$langue='fr';
$langue2='ca';
 
 
$count_content=strlen($comment_content);
if ($count_content<150)
{
$text=$comment_content;
}
else
{
$newart = substr($comment_content, 0, 150);
$pos = strrpos($newart, " ");
$text = substr($newart, 0, $pos);
}
 
function Google_Language_Detection ($text,$confiance,$langue,$langue2) 
{
   $url = 'http://www.google.com/uds/GlangDetect?v=1.0&q='.urlencode($text);
   if (function_exists('curl_init')) 
	{
		$userAgent='Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)';
		$ch = curl_init();
		curl_setopt($ch, CURLOPT_URL,$url);
		curl_setopt($ch, CURLOPT_USERAGENT, $userAgent);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
		$result=curl_exec ($ch);
		curl_close ($ch);
	} 
	else 
	{
		$result= file_get_contents($url);
	}
 
	if ( !function_exists('json_decode') )
	{
		preg_match('/language":"(.*?)"/si', $result, $matches);
		$lang = $matches[1];
		preg_match('/confidence":(.*?)}/si', $result, $matches);
		$confidence = $matches[1];
		preg_match('/responseStatus":(.*?)}/si', $result, $matches);
		$responseStatus = $matches[1];
 
		if ($responseStatus== 200) 
		{
			if (($confidence > $confiance) && (($lang==$langue) || ($lang==$langue2))) 
			{
				//echo $lang.' : '.$confidence;
			} 
			else 
			{
				//echo $lang.' : '.$confidence.'<br>';
				echo 'Tentative de spam';
				exit;
			}
		}
	}
	else 
	{
		$json = json_decode($result, true);
		if ($json[responseStatus] == 200) 
		{
			$lang=$json[responseData][language];
			$confidence=$json[responseData][confidence];
			if (($confidence > $confiance) && (($lang==$langue) || ($lang==$langue2))) 
			{
				//echo $lang.' : '.$confidence;
			} 
			else 
			{
				//echo $lang.' : '.$confidence.'<br>';
				echo 'Tentative de spam';
				exit;
			}
		}
	}
}
Google_Language_Detection ($text,$confiance,$langue,$langue2);
//fin ajout controle de la langue
?>

Vous pouvez modifier la langue si votre site n’est pas en français ainsi que la variable $confiance qui permet de filtrer aussi les commentaires courts dans la bonne langue.
Par exemple si le texte saisi = « merci », Google indique une confiance égale à 0.07835744 pour le mot merci, comme je défini à 0.20 minimum la variable $confidence, le texte merci passera en spam. Ce qui permet de limiter aussi les spammeurs français ;)
A vous de modifier cette variable en fonction de vos besoins.

Démo du script

Pour tester le script, il suffit de poster un commentaire écrit dans une autre langue que le français au pied de cet article.

Articles liés :

Commentaires (28)

Catégorie: Outils référencement


28 Commentaires

Commentaire par Amateur

Vendredi, 6 février , 2009 à 17:28

Merci pour cet article :D lol
Ca faisait bien longtemps qu’on n’avait plus de nouveaux articles sur le SEO black hat… d’ailleurs c’est plutôt un article pour contrer les attaques spammy.. Ouvrirais tu une nouvelle catégorie d’articles ?
En tout cas, merci pour le script.

Edit admin : Pas de lien vers sites de cul ici, merci.

Commentaire par ManuLeMalin@Mozinor

Vendredi, 6 février , 2009 à 18:17

Cool ce script, ça va bloquer du spam… mais pas tous car certains bots pubient déja de façon auto dans la langue du site. Il n’y a pas de solutions miracles ; en outre celle que tu proposes est déja pas mal merci ;)

Commentaire par 512banque (maison passive)

Vendredi, 6 février , 2009 à 21:15

Tu pouvais également faire un antispam sur détection de javascript : si le commentateur n’a pas activé JS, pas de comment (cf wp hashcash).
Ou bien sur la géolocalisation de l’IP (tant pis pour tes lecteurs russes et chinois)…
Non ?

Commentaire par TOMHTML

Vendredi, 6 février , 2009 à 22:00

Et les textes en anglais… sans lien. C’est du spam ?

Commentaire par Stoff

Samedi, 7 février , 2009 à 15:50

Merci pour cet article Tiger.
( et non je ne laisserai pas d’url :D ).

Pour ma part c’est la même, tant pis pour les commentaires en ricains, de toutes manières ils ne m’interessent pas, s’ils veulent participer sur mon blog, qu’ils fassent l’effort de parler en français.

comme le disez si bien Sebastien Chabal: « We are in France so we speak french ».

Commentaire par Julien

Lundi, 9 février , 2009 à 11:05

Effectivement, 95% de mon spam est en angliche, thx :)

Commentaire par conseil sante

Mercredi, 11 février , 2009 à 15:13

Une bonne idée mais askimet sur wordpress me suffit !

Une technique pour avoir moins de spams enlever la balise avec la version de WP dans le header vous ne serez pas dans les statistiques de WP mais vous serez moins spammé !

david

Commentaire par Candide

Samedi, 14 février , 2009 à 22:25

Je suis très content de voir un nouveau post sur ce blog, que j’aime bien lire! Ça fait un bout de temps qu’il y avait eu un post, content de voir que tu es toujours dans la course.

Très intéressant ton script. C’est bien que tu publies des script custom comme ça, y’en a pas partout disons! Bonne continuité

Commentaire par Serval2a

Lundi, 16 février , 2009 à 9:55

Salut,
C’est un script très intéressant cher admin mais pourquoi ne pas, plus simplement utiliser $_SERVER['HTTP_ACCEPT_LANGUAGE'] avec un enregistrement autorisé si la langue renvoyée est conforme à ce que l’on attend (partant du principe que si c’est vide, cas du logiciel, c’est forcément pas bon).
@+

Commentaire par BlackMelvyn

Lundi, 23 février , 2009 à 15:37

@admin: sympa ton script :D
@Serval2a: je pense que c’est trop facile à détourner, notamment avec CURL.
Là on est obligé de chercher la langue depuis le texte, c’est plus précis, surtout quand on voit les spams du moment qui font des paragraphes entiers blindés de liens (les porcs :lol: )

Commentaire par Cédric

Mercredi, 25 février , 2009 à 18:00

bonjour,

le code est très bien pensé !
merci à l’admin d’en faire profiter à la communauté !
malheureusement les spammeurs ne tarderont pas à s’y habituer en détectant la langue du site ;)

Commentaire par Adrian

Jeudi, 26 février , 2009 à 11:46

La solution la plus simple est d’interdire les commentaires

Commentaire par admin

Jeudi, 26 février , 2009 à 12:07

Merci Adrian pour cette remarque pertinente, mais ya mieux comme ne pas faire de sites web par exemple.

J’ai modéré certains commentaires impolis et/ou stupides concernant cet article, certains vont même jusqu’à parler de racisme :lol: quelle bande de blaireaux.

Ceux qui sont confrontés au spam de masse savent que ce script est une solution bien pratique et originale qui ne bloque ni les utilisateurs malvoyants, ni les utilisateurs de langue française installés à l’étranger (ça c’est pour répondre à Serval2a).

@TOMHTML : j’ai fait une petite modif. pour éviter de perdre un éventuel commentaire étranger non spammy, teste en soummettant un commentaire non français.
Pour info, sur SEOBlackOut, j’ai dû avoir, depuis le début, un commentaire étranger intéressant, le reste c’est que du spam.

@conseil sante : ce code peut-être utilisé sur n’importe quel script, pas uniquement wordpress et tous ces scripts n’ont pas forcément de solutions antispam aussi nombreuses que celles trouvées sur wordpress.

@512Banque :
Là pas de souci de savoir si le gars est un bot ou pas, pas de tests à faire sur le js ou les cookies ou autre…On teste unqiuement la langue de ton texte et je peux dire que c’est on ne peut plus efficace. Et en plus la solution se veut originale ;)

@ManuLeMalin@Mozinor : t’as fait les soirées Mozinor avec Manu le Malin il y a quelques années déjà ?

Commentaire par Freddy Lamorelle

Dimanche, 1 mars , 2009 à 12:40

Yes it’s works! Et avec un commentaire Français et Anglais?

Commentaire par admin

Dimanche, 1 mars , 2009 à 20:55

Well Done Freddy :) Tu passes parceque j’ai mis la variable $confidence à 0.20 ;)

EDIT : j’ai dis une bétise, tu passes même avec confidence à 0.

Commentaire par mico

Lundi, 2 mars , 2009 à 15:24

Il existe une multitude de moyens pour éviter le spam. Celle ci me paraît facile à mettre en place et plutôt portable (wordpress, pligg, etc.). Cependant, comme quelqu’un l’a déjà fait remarquer plus haut, elle est facilement contournable…

Pourquoi ne pas avoir fait plus simple et plus sécurisé: captcha?

Commentaire par ManuLeMalin@Mozinor

Mardi, 3 mars , 2009 à 13:42

@MICO : malheureusement les captcha quel qu’ils soient ne sont plus secure, il existe moultes moyens de les bypass via ocr curl et php tips en tout genre ! Certain ici en ont fait de bien belles démonstrations ^^

@ADMIN : oui et toi aussi n’est ce pas ;)

Commentaire par Didier_S

Jeudi, 5 mars , 2009 à 11:36

Pour contrer les commentaires d’aigris (du racisme?!!), il est facile de modifier le script pour qu’il prenne en compte la présence de liens ou pas (par exemple) et d’en faire un anti-spam plus précis que simplement en détectant la langue.
Sortez vous les doigts et codez un peu, ça vous tuera pas (en théorie).
Merci Tiger pour cet article bien sympa.

Commentaire par admin

Jeudi, 5 mars , 2009 à 22:46

@Didier_S : C’est clair qu’avec un contrôle sur le nombre de liens ça diminue le spam. j’ai commencé par là ;) mais certains spams (dominante russe) passaient toujours en envoyant une seule url par commentaire, c’est là où j’ai pensé au contrôle sur la langue du texte.

Les deux combiné (nombre de liens et contrôle langue du texte) éliminent totalement le spam chez moi :) même si je pense que le contrôle sur langue est suffisant, le contrôle sur nombre de liens d’abord évite d’utiliser l’api.

C’est aussi grâce aux russes :lol: que je me suis aperçu qu’il fallait couper le texte à contrôler car si texte trop long, ça passait pas dans l’api Google qui limite à je sais plus combien de caractères.

Commentaire par Niko

Mercredi, 11 mars , 2009 à 10:08

sympa le script, inutile pour moi, mais il me parait efficace :)
Ravi de voir que ton rss me donne de tes nouvelles, ça ne bouge pas beaucoup le black hat en ce moment…

Commentaire par jeha

Samedi, 21 mars , 2009 à 15:41

Bonjour,
je suis entrain de tester
merci

Commentaire par Julien

Vendredi, 3 avril , 2009 à 9:34

Ouais, c’est vraiment dommage que tu ne postes pas plus de billets…

Commentaire par gilles

Samedi, 11 avril , 2009 à 19:22

Ha ouaip astucieuse comme soluce.
Il fut un temps ou j’en avais marre de recevoir des spams dans mes boites web-mails, j’utilisais alors une astuce également basée sur la langue : j’allais ouvrir mes boites email sur Yahoo Italie ou en Allemagne.

Le tri était manuel (visuel): il me fallait repérer les mail avec object en français. Tous les spams étaient dans la langue de l’extension de l’adresse mail. Donc en italien ou allemand. Mais c’était quand même galère et j’ai jamais réussi à l’automatiser.

Commentaire par STREAMING Addict

Mardi, 4 août , 2009 à 17:55

J’avais pensé à ce système mais que ça existe c’est vraiment génial. Le spam en vo c’est terminé ! ^^

Merci pour cet article ! XD

Commentaire par Mumuri

Samedi, 24 octobre , 2009 à 10:59

Pour info, la fonction ne marche pas si
- php est en mode protégé,c ‘est à dire qu’il interdit d’utiliser les fonction d’ouverture de fichiers à distance
- curl n’est pas installé

cà peut expliquer pourquoi les spams passent toujours chez certains

Commentaire par DemonBlack

Jeudi, 30 décembre , 2010 à 16:07

Pas mal du tout ça, je ne connaissais pas et je vais surement tenter de l’intégrer un de ces jours pour tester.

C’est toujours d’actualité? vu que l’article date un peu maintenant?

Commentaire par Référencement

Lundi, 14 février , 2011 à 2:08

Très bonne idée d’aller piocher cette API, efficace contre la majorité des commentaires bidons! merci pour le partage ;)

Commentaire par plop

Lundi, 5 décembre , 2011 à 17:27

Yep, comment l’intégrer sur un annuaire freeglobe ?!

Les commentaires sont fermés pour cet article.



SEO BLACKOUT

Site web dédié aux techniques de référencement et de positionnement de sites web sur Google.

Certaines parties du site sont en accès restreint, ces espaces sont réservés à la SEO Black Hat Team.


Don't Be Evil !