Vérification des commentaires

Il s’agit de l’appel que vous utiliserez le plus souvent. Il accepte un certain nombre de paramètres et de caractéristiques liés au contenu soumis, puis renvoie un résultat positif ou négatif. Les performances peuvent chuter considérablement si vous choisissez d’exclure certains points de données. Plus vous transmettez de données à Akismet pour chaque commentaire, plus la précision est élevée. Nous recommandons de privilégier l’envoi de trop de données plutôt que pas assez.

Cette méthode est appelée avec l’URL suivante :

https://rest.akismet.com/1.1/comment-check

Important : tous les paramètres doivent être envoyés via la méthode POST.

Paramètres

api_key (obligatoire)
Votre clé API Akismet. Vous la trouverez sur le tableau de bord de votre compte à l’adresse https://akismet.com/fr/compte/

blog (obligatoire)
L’URL de la page d’accueil de l’instance effectuant la requête. Pour un blog ou un wiki, il s’agit de l’URL de la page d’accueil. Remarque : il doit s’agir d’une URI complète, incluant http://.

user_ip (obligatoire)
Adresse IP de la personne ayant soumis le commentaire.

user_agent
Chaîne d’agent utilisateur du navigateur Web utilisé pour soumettre le commentaire, généralement la variable CGI HTTP_USER_AGENT. À ne pas confondre avec l’agent utilisateur de votre bibliothèque Akismet.

referrer (notez l’orthographe)
Le contenu de l’en-tête HTTP_REFERER doit être envoyé ici.

permalink
Le permalien complet du contenu sur lequel le commentaire a été soumis.

comment_type
Une chaîne décrivant le type de contenu envoyé.

Exemples :

  • comment : un commentaire de blog.
  • forum-post : un sujet de premier niveau sur un forum.
  • reply : une réponse à un sujet de premier niveau sur un forum.
  • blog-post : un article de blog.
  • contact-form : l’envoi d’un formulaire de contact ou de retour d’information.
  • signup : un nouveau compte utilisateur.
  • message : un message envoyé entre quelques utilisateurs seulement.

Vous pouvez envoyer une valeur ne figurant pas dans la liste ci-dessus si aucune ne décrit précisément votre contenu. Des explications complémentaires sont disponibles ici.

comment_author
Nom soumis avec le commentaire.

comment_author_email
Adresse e-mail soumise avec le commentaire.

comment_author_url
URL soumise avec le commentaire. N’envoyez qu’une URL saisie manuellement par l’utilisateur, et non une URL générée automatiquement comme l’URL du profil de l’utilisateur sur votre site.

comment_content
Le contenu qui a été soumis.

comment_date_gmt
L’horodatage UTC de la création du commentaire, au format ISO 8601. Peut être omis pour les requêtes comment-check si le commentaire est envoyé à l’API au moment de sa création.

comment_post_modified_gmt
L’horodatage UTC de l’heure de publication de l’article, de la page ou du fil de discussion sur lequel le commentaire a été publié.

blog_lang
Indique la ou les langues utilisées sur le blog ou le site, au format ISO 639-1, séparées par des virgules. Un site proposant des contenus en anglais et en français pourrait utiliser « en, fr_ca ».

blog_charset
L’encodage de caractères des valeurs de formulaire incluses dans les paramètres comment_*, par exemple « UTF-8 » ou « ISO-8859-1 ».

user_role
Le rôle de l’utilisatrice ou de l’utilisateur ayant soumis le commentaire. Ce paramètre est facultatif. Si vous le définissez sur « administrator », Akismet renverra toujours false.

is_test
Ce paramètre est facultatif. Vous pouvez l’utiliser lors de l’envoi de requêtes de test à Akismet.

recheck_reason
Si vous envoyez du contenu à Akismet pour une nouvelle vérification, par exemple un article qui a été modifié ou d’anciens commentaires en attente que vous souhaitez revérifier, incluez le paramètre recheck_reason avec une chaîne décrivant la raison de cette nouvelle vérification. Par exemple, recheck_reason=edit.

honeypot_field_name
Si vous utilisez un champ honeypot dans votre implémentation, incluez le nom de ce champ dans votre requête ainsi que sa valeur. Par exemple, si vous avez un champ honeypot de la forme <input type= »text » name= »hidden_honeypot_field » style= »display: none; » />, vous devez inclure deux paramètres supplémentaires dans votre requête : honeypot_field_name=hidden_honeypot_field et hidden_honeypot_field=[la valeur du champ].

comment_context
Le paramètre comment_context fournit des informations sur le contexte dans lequel le commentaire a été publié : une liste d’étiquettes ou de catégories associées à l’article de blog parent ou au site sur lequel le commentaire a été publié.

Spécifiez comment_context en utilisant la notation de tableau PHP : comment_context[]=cooking&comment_context[]=recipes&comment_context[]=bbq Notez que les étiquettes ou catégories doivent provenir de l’article ou de l’environnement parent ; elles ne doivent pas être fournies par les personnes qui commentent.

Autres variables d’environnement du serveur
En PHP, il existe un tableau de variables d’environnement appelé $_SERVER qui contient des informations sur le serveur Web lui-même ainsi qu’une paire clé/valeur pour chaque en-tête HTTP envoyé avec la requête. Ces données sont extrêmement utiles à Akismet. La manière dont le contenu soumis interagit avec le serveur peut être très révélatrice ; veuillez donc en inclure autant que possible.

Exemple en PHP

$data = array(
    'blog' => 'http://yourgroovydomain.com',
    'user_ip' => '127.0.0.1',
    'user_agent' => 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2) Gecko/20100115 Firefox/3.6',
    'referrer' => 'http://www.google.com',
    'permalink' => 'http://yourgroovydomain.com/blog/post=1',
    'comment_type' => 'comment',
    'comment_author' => 'admin',
    'comment_author_email' => 'test@example.com',
    'comment_author_url' => 'http://www.example.com',
    'comment_content' => 'It means a lot that you would take the time to review our software.  Thanks again.'
);

akismet_comment_check( '123YourAPIKey', $data );

// Passes back true (it's spam) or false (it's ham).
function akismet_comment_check( $api_key, $data ) {
    $request = 'api_key=' . urlencode( $api_key ) .
        '&blog=' . urlencode( $data['blog'] ) .
        '&user_ip=' . urlencode( $data['user_ip'] ) .
        '&user_agent=' . urlencode( $data['user_agent'] ) .
        '&referrer=' . urlencode( $data['referrer'] ) .
        '&permalink=' . urlencode( $data['permalink'] ) .
        '&comment_type=' . urlencode( $data['comment_type'] ) .
        '&comment_author=' . urlencode( $data['comment_author'] ) .
        '&comment_author_email=' . urlencode( $data['comment_author_email'] ) .
        '&comment_author_url=' . urlencode( $data['comment_author_url'] ) .
        '&comment_content=' . urlencode( $data['comment_content'] );
 
    $host = $http_host = 'rest.akismet.com';
    $path = '/1.1/comment-check';
    $port = 443;
    $akismet_ua = "WordPress/4.4.1 | Akismet/3.1.7";
    $content_length = strlen( $request );
    $http_request  = "POST $path HTTP/1.0rn";
    $http_request .= "Host: $hostrn";
    $http_request .= "Content-Type: application/x-www-form-urlencodedrn";
    $http_request .= "Content-Length: {$content_length}rn";
    $http_request .= "User-Agent: {$akismet_ua}rn";
    $http_request .= "rn";
    $http_request .= $request;
 
    $response = '';
    
    if( false != ( $fs = @fsockopen( 'ssl://' . $http_host, $port, $errno, $errstr, 10 ) ) ) {

    	fwrite( $fs, $http_request );

    	while ( !feof( $fs ) ) {
    		$response .= fgets( $fs, 1160 ); // One TCP-IP packet
        }

    	fclose( $fs );

    	$response = explode( "rnrn", $response, 2 );
    }

    if ( 'true' == $response[1] ) {
        return true;
    } else {
    	return false;
    }
}

Cet appel renvoie soit « true » (s’il s’agit de spam), soit « false » dans le cas contraire.

Exemple de réponse spam

L’appel renvoie « true » si le commentaire est du spam. Si vous avez du mal à déclencher une réponse spam, vous pouvez envoyer « akismet-guaranteed-spam » comme auteur ou « akismet-guaranteed-spam@example.com » comme adresse e-mail de l’auteur. L’une ou l’autre de ces valeurs déclenchera systématiquement une réponse « true ».

Array (
    [0] => HTTP/1.1 200 OK
           Server: nginx
           Date: Mon, 24 Feb 2014 20:17:08 GMT
           Content-Type: text/plain; charset=utf-8
           Connection: close
           Content-length: 4
    [1] => true
)

Une réponse spam peut également inclure l’en-tête X-akismet-pro-tip , comme suit :

Array (
    [0] => HTTP/1.1 200 OK
           Server: nginx
           Date: Mon, 24 Feb 2014 20:17:08 GMT
           Content-Type: text/plain; charset=utf-8
           Connection: close
           X-akismet-pro-tip: discard
           Content-length: 4
    [1] => true
)

Si l’en-tête X-akismet-pro-tip a pour valeur discard, cela signifie qu’Akismet a déterminé que le commentaire est du spam flagrant et que vous pouvez le supprimer en toute sécurité sans le conserver dans une file d’attente des indésirables. Pour en savoir plus sur cette fonctionnalité, consultez cet article de blog Akismet.

Exemple de réponse Ham

L’appel renvoie « false » si le commentaire est Ham. Si vous avez du mal à déclencher une réponse Ham, vous pouvez définir « user_role » sur « administrator » et le paramètre « is_test » sur « true » : cela déclenchera systématiquement une réponse « false ».

Array (
    [0] => HTTP/1.1 200 OK
           Server: nginx
           Date: Mon, 24 Feb 2014 20:17:08 GMT
           Content-Type: text/plain; charset=utf-8
           Connection: close
           Content-length: 5
    [1] => false
)

Une réponse Ham peut également inclure l’en-tête X-akismet-recheck-after, comme suit :

Array (
    [0] => HTTP/1.1 200 OK
           Server: nginx
           Date: Mon, 24 Feb 2014 20:17:08 GMT
           Content-Type: text/plain; charset=utf-8
           Connection: close
           X-akismet-recheck-after: 900
           Content-length: 5
    [1] => false
)

Si l’en-tête X-akismet-recheck-after est présent, cela signifie qu’Akismet vous demande de vérifier à nouveau le commentaire à l’aide du point de terminaison comment-check après le nombre de secondes indiqué. Dans cet exemple, le client devrait idéalement soumettre à nouveau la même requête comment-check au bout de 900 secondes, soit 15 minutes, en ajoutant le paramètre recheck_reason=recheck.

Exemple de réponse d’erreur

Si l’appel ne renvoie ni true ni false, l’en-tête X-akismet-debug-help fournira des informations sur l’erreur survenue. Notez que l’en-tête X-akismet-debug-help n’est pas systématiquement envoyé lorsqu’une réponse ne renvoie ni false ni true.

Array (
    [0] => HTTP/1.1 200 OK
           Server: nginx
           Date: Mon, 24 Feb 2014 16:34:54 GMT
           Content-Type: text/plain; charset=utf-8
           Connection: close
           X-akismet-debug-help: We were unable to parse your blog URI
           Content-length: 7
    [1] => invalid
)

Tester vos données

Il est important de tester Akismet avec un volume significatif de données réelles et en conditions réelles pour pouvoir tirer des conclusions sur sa précision. Akismet fonctionne en comparant le contenu à l’activité de spam authentique qui se produit en ce moment même (et cette analyse repose sur bien plus que le seul contenu), de sorte que générer artificiellement des commentaires de spam n’est pas une approche viable.

Nous sommes là pour vous aider

Si vous êtes bloqué ou avez besoin d’aide pour résoudre un problème, n’hésitez pas à nous contacter.