Codeur d’adresses email 2

Ce plugin encode en javascript les raccourcis SPIP de liens email contre les robots collecteurs d’adresses email (souvent appelés aussi spambots [1]) et qui constituent des bases de données de ces adresses en vue de faire du spam. Si le robot tente de suivre le lien, il sera bloqué par un captcha arithmétique [2] obligatoire pour le décodage. Le plugin dispose d’un modèle permettant d’encoder également des adresses email placées directement dans un squelette.

Il s’agit de la 3e version du plugin Codeur d’adresses email (etat : test) qui ajoute la fonctionnalité « modèle », permettant d’encoder également des adresses email placées directement dans un squelette. Le plugin fonctionne sous SPIP 2.1 et 3.0, 3.1, 3.2. SPIP 2.0 est à tester. Il ne fonctionne pas sous SPIP 1.9.

Description


-  Il encode, dans l’espace public comme dans l’espace privé, les raccourcis spip de ce type :
[nom_lien->user@domain.tld?parametre1=parametre1&parametre2=parametre2]
ou
[nom_lien->mailto:user@domain.tld?parametre1=parametre1&parametre2=parametre2]

Si « nom_lien » est vide ou contient un « @ », il sera remplacé « Ecrire à user » (voir « Résultat du codage » ci-dessous).

-  Il encode les adresses email placées dans les squelettes, à l’aide du modèle :
[(#MODELE{rspipcm}{email=user@domain.tld, title=Ecrire à User, param=subject:Hello User;cc:monami@domain.tld})]
ou encore
[(#MODELE{rspipcm}{email=#EMAIL_WEBMASTER, title=Ecrire au webmaster, param=subject:A partir du site;body:Hello webmaster;cc:monami@domain.tld})]

Pour le modèle, les paramètres « email » et « title » sont obligatoires.
Remarquez également la manière d’écrire les paramètres de l’email : « param=param1:Quelque chose ;param2:Autre chose ;param3:Encore autre chose »
param égal le_nom_du_paramètre deux-points la valeur du paramètre. Etc. Si il y a plusieurs paramètres, ils sont séparés par des points-virgules. Pas de point-virgule après le dernier paramètre.

Pour le modèle comme pour les raccourcis spip, les paramètres doivent être alphanumériques. Ils peuvent aussi contenir l’espace, _ et -. Si l’encodage UTF-8 est disponible, les caractères accentués sont autorisés. Les doubles et simples quotes (même échappés), #, ?, &, @, !, : et les caractères html étendus sont à proscrire dans les paramètres.

Résultat du codage

Avec le code spip [Ecrire à User->user@domain.tld] ou le modèle [(#MODELE{rspipcm}{email=user@domain.tld, title=Ecrire à User})], voici ce que sera le résultat sur le site public et ce que verrait le robot :
<a href="javascript:mdecode('dlt.niamod:resu');">Ecrire à User</a>

Avec le code spip [->mailto:prenom.nom@domain.tld?cc=user@domain1.tld] ou le modèle [(#MODELE{rspipcm}{email=prenom.nom@domain.tld, title=Ecrire à Prénom Nom, param=cc:user@domain1.tld})], voici ce que sera le résultat sur le site public et ce que verrait le robot :
<a href="javascript:mdecode('dlt.1niamod:resu=cc!dlt.niamod:mon.monerp');">Ecrire à Prenom Nom</a>

Si le robot tente de suivre le lien et de le décoder via le DOM [3], il sera bloqué par un captcha arithmétique obligatoire pour le décodage.

Accessibilité

Si javascript est désactivé, le lien email est alors devenu inopérant. C’est pourquoi, si javascript est désactivé, une DIV apparaît sous le lien email avec (ici, en français) ces informations :

Ecrire à : user
dans le domaine : domain.tld

où user et domain.tld correspondent respectivement à ces éléments de l’adresse email : user@domain.tld.

Cette DIV sous le lien est de classe « rspipcm_noscript » qui peut être redéfinie dans une feuille de style en surcharge.

Installation

Nouvelle
-  La balise spip #INSERT_HEAD doit être présente entre les balises html <head> ... </head> de vos squelettes.
-  Dans l’espace privé, activer le plugin.
-  (Eventuellement penser à vider le cache)

Langues actuelles disponibles

fr (en, nl à compléter).

Changements


-  Version 1.3.2 : correction d’un bug javascript avec les variables de langue de spip. Ce bug faisait dysfonctionner le plugin.
-  Version 1.3.1 : correction d’une erreur de syntaxe dans la description du plugin de la version 1.3.0 (Spip 3.0, 3.1). Ce bug empêchait le plugin de s’intaller.
-  Les versions 1.2.0 (Spip 2.1) et 1.3.0 (Spip 3.0, 3.1) ajoutent la fonctionnalité « modèle », permettant d’encoder également des adresses email placées directement dans un squelette.
-  Les versions 1.1.1 (Spip 2.1) et 1.2.2 (Spip 3.0, 3.1) corrigent le problème du captcha javascript : c’était le nom des variables de langue qui apparaissaient au lieu de leur contenu.
-  La branche 1.2.0 (en test) a été abandonnée.

Un plugin de cryptage d’adreses email de plus ?

Il existe d’autres contrib qui permettent le cryptage d’adresses email, comme :
-  mailcrypt
-  ou le Plugin antispam

Alors, pourquoi un de plus ? Au début, je pensais cela ou proposer une fusion de mon plugin avec un autre. Après réflexion, en ce qui concerne le cryptage d’adresses email, je conclus à l’intérêt de la multiplicité de ce type de plugin. En effet, plus il y a de codages divers, plus compliquée est la tâche des spambots.

Si vous gérez plusieurs sites, n’hésitez donc pas à diversifier vos modes de protection en choisissant des plugins différents. Attention tout de même à ceci : ne mélangez pas ces plugins sur un même site, ils ont de grandes chances de ne pas être compatibles, notamment que l’un prenne la précédence sur l’autre qui ne sert alors à rien.

Notes

[2Un captcha est une forme de test permettant de différencier de manière automatisée un utilisateur humain d’un robot. Ici, il est « arithmétique » car il consiste à demander au visiteur la réponse à une addition de 2 nombres (entre 1 et 5) http://fr.wikipedia.org/wiki/CAPTCHA

[3Document Object Model. Le DOM est une convention pour représenter et interagir avec les objets dans les documents HTML, XHTML et XML. Le DOM est aussi le chemin par lequel Javascript voit le contenu des pages HTML http://en.wikipedia.org/wiki/Docume...

Discussion

4 discussions

  • 4

    Merci de votre réponse si rapide
    Je me demandais s’il y avait un moyen assez similaire à ce que fait par exemple « mailcrypt » du qui, lui aussi, vise a priori les liens mails contenus dans le texte.
    En effet, la doc du plugin sur contrib indique que, dans un squelette, si on insère un lien en « l’encapsulant » dans une balise #VAL, genre :
    [(#VAL{<a href="mailto:#EMAIL?subject="#TITRE" (etc...)>nous &eacutecrire</a>}|mailcrypt)], alors, le cryptage est opérant.

    Peut-on obtenir un comportement similaire de possible avec votre plugin ? Quelle en serait la syntaxe ?

    • Oui, je pense que c’est possible en passant par les modèles spip. La fonction d’encodage de l’adresse n’est pas très compliquée, et le décodage est déjà en place via le plugin.
      Dans ce cas, l’insertion dans le squelette serait du type :

      [(#MODELE{rspipcm}{email=#EMAIL_WEBMASTER}{title=Ecrire au webmaster}{subject="?Bonjour webmaster!"})]

      Votre idée est intéressante. Bon, ici, laissez moi quelques jours ... ;)

    • Bonjour,
      voilà, c’est fait. Versions 1.2.0 (Spip 2.1) et 1.3.0 (Spip 3.0, 3.1). Voyez la documentation ci dessus pour utilisation, elle a été mise à jour.

      Cette version est en test, le temps de s’assurer que tout fonctionne bien. Si vous l’installez, je veux bien un retour d’avis (précisez alors votre version de spip). Merci à vous.

    • Ah, super ! Merci de cette adaptation.
      Je ne suis toutefois pas sûr d’avoir bien compris la rédaction de l’appel au modèle depuis un squelette, en particulier comment il faut utiliser « param ».

      Par exemple, si l’on veut avoir au final un lien mailto du style
      <a href"=mailto:destinataire@domaine.tld?subject=patatitata&body=unautrepatatitata">nous écrire</a>

      En supposant que l’on soit dans une boucle AUTEURS ? comment faut-il rédiger l’appel au modèle dans le squelette appelant ?

      #SET{destinataire,#EMAIL}
      #SET{subject, patatipatata}
      #SET{body, message posté depuis le site #NOM_SITE_SPIP}
      [(#MODELE{rspipcm}{email=#GET{destinataire}}{title=Ecrire au webmaster}{subject=#GET{subject}{body=#GET{body}})]

      ou plutôt

      #SET{destinataire,#EMAIL}
      #SET{subject, patatipatata}
      #SET{body, message posté depuis le site #NOM_SITE_SPIP}
      [(#MODELE{rspipcm}{email=#GET{destinataire}}{title=Ecrire au webmaster}{param=subject=#GET{subject}&body=#GET{body}})]

      Mais peut-être ni l’une ni l’autre ne sont-elles correctes ?

    • Non, effectivement. Peut-être la doc n’était pas assez claire ; j’ai corrigé vers : « param=param1:Quelque chose ;param2:Autre chose ;param3:Encore autre chose »

      donc, ici :

      [(#MODELE{rspipcm}{email=#GET{destinataire}, title=Ecrire au webmaster, param=subject:#GET{subject};body:#GET{body}})]

      Note : attention, on ne peut inclure qu’une seule fois un modèle par squelette.

    Répondre à ce message

  • 1

    Bonjour,

    Merci pour ce plugin car c’est, à ma connaissance, le meilleur encodage d’adresses emails disponible.

    J’ai simplement un problème avec la table de traduction, elle n’est pas prise en compte. A l’affichage c’est le nom des variables qui apparait, exemple « $entrez_resultat_addition 3 + 3 ? ».

    Quelqu’un d’autre rencontre ce soucis ?

    Aymeric.

    • Bon, mieux vaut tard que jamais ;)
      Effectivement, il y avait un bug. Merci de l’avoir signalé.

      C’est corrigé : spip 3, version 1.2.2 - spip 2, version 1.1.1. La maj est maintenant disponible via la mise à jour dans l’espace privé.

      Attention à préserver css/noscript.css avant la maj, si vous l’avez personnalisé.

      Bien à vous,
      Robert.

    Répondre à ce message

  • 1

    Ah, le plugin ne prend en compte que les raccourcis insérés dans le contenu ou au fil du texte...
    Y-a-t-il un moyen de s’en servir pour encoder les liens mis en place via les squelettes, par exmple :
    <a href="mailto:#EMAIL/?subjet=#TITRE">(...)</a>

    Tel que, le plugin ne semble pas avoir d’impact.
    Merci d’avance de votre réponse

    Répondre à ce message

  • Bonjour. Apparemment le lien menant vers le paquet zip pour la version 3.0 est un lien mort.

    Cordialement,

    aliosha

    Répondre à ce message

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom