11540 sujets

JavaScript, DOM et API Web HTML5

Bonjour.

J'ai cherché en vain un site qui permet de crypter une adresse courriel. En fait, tout ce que j'ai trouvé, ce sont des sites qui proposaient des solutions qui datent de 2007-2008. J'aimerais trouver quelque chose qui n'utilise pas le php.

J'ai trouvé ceci sur un site qui propose ceci (et ça fonctionne):

<script language="JavaScript">
  nom = "webmaster";
  domaine = "destrucsaweb.com";
  document.write('<a href=\"mailto:' + nom + '@' + domaine + '\">');
  document.write('Contactez-moi</a>');
</script> 


mais en essayant d'entrer ma propre adresse, ça ne fonctionne plus... Quelqu'un saurait qu'est-ce qui cloche? Merci.

Courriel : <script language="JavaScript">
  nom = "martin.mixer";
  domaine = "icloud.com";
  document.write('<a href=\"mailto:' + martin.mixer + '@' + icloud.com + '\">');
  document.write('Contactez-moi</a>');
</script> 

Modifié par largowin (11 May 2013 - 18:47)
Salut,

Viens de me revenir en mémoire ce vieux sujet qui listait quelques scripts intéressants (il me semblait qu'il avait été épinglé ce sujet d'ailleurs ? J'en parlerai à Dieu Smiley cligne ) dans lequel il y avait ce script de Julien Royer qui pourra éventuellement te venir en aide ?
Modérateur
kustolovic a écrit :
Probablement par là:

document.write('&amp;lt;a href=\&amp;quot;mailto:' + martin.mixer + '@' + icloud.com + '\&amp;quot;&amp;gt;');

ouvres ta console javascript et regarde les erreurs ce sera instructif. comment? par ici : http://www.alsacreations.com/astuce/lire/1436-console-javascript.html

+1

Sinon, j'aurais vu plus ce genre de chose : str_rot13()

function str_rot13 (str) {
  return (str + '').replace(/[a-z]/gi, function (s) {
    return String.fromCharCode(s.charCodeAt(0) + (s.toLowerCase() < 'n' ? 13 : -13));
  });
}


Si les données venant du server sont dans le même esprit, l'affichage du JS permet d'afficher correctement à l'écran. Le robot récupérera de la merde valide Smiley lol :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
    <title></title>
</head>
<body>
    <p><a href="mailto:<?php echo str_rot13('ginette.michu@nom-de-domain.com') ?>" class="mail">email</a></p>
    
    <script type="text/javascript">
        function str_rot13 (str) {
            return (str + '').replace(/[a-z]/gi, function (s) {
                return String.fromCharCode(s.charCodeAt(0) + (s.toLowerCase() < 'n' ? 13 : -13));
            });
        }
        window.onload = function(){
            var mail = document.getElementsByClassName('mail'),
                href = mail[0].href,
                strMailto = "mailto:",
                lenMailto = strMailto.length;
            mail[0].href = strMailto+str_rot13(href.substr(lenMailto));
        }
    </script>
    
</body>
</html>


Si on trouve que le rot13 est un peu trop simpliste, on peut rajouter des caractères aléatoires tous les deux caractères dans la string du mailto.
Modifié par niuxe (11 May 2013 - 21:38)
Modérateur
Mais bon, un robot exécutant du javascript c'est pas bien sorcier non plus, les bibliothèques libres pour le faire sont assez nombreuses (selenium, htmlunit, phantomJs, etc.).

Après reste le problème du mailto:

1) Parfait pour des environnement contrôlés où on sait que les utilisateurs ont un mailer correctement configuré. (intranets particulièrement)

2) De la même façon, cela peut se concevoir pour des sites b2b, où l'on sait que la clientèle business a de grande chance d'avoir un client mail configuré.

3) Pour du tout public, c'est vachement plus limite. Avec le succès des webmail genre gmail, le mailto est plutôt une mauvaise option.
Modérateur
kustolovic a écrit :
Mais bon, un robot exécutant du javascript c'est pas bien sorcier non plus, les bibliothèques libres pour le faire sont assez nombreuses (selenium, htmlunit, phantomJs, etc.).


Je ne connais pas ces librairies. Merci en tout cas du tuyau Smiley smile . Cependant, je ne crois pas que ces librairies interfèrent dans la solution que j'ai proposée. Le code renvoyé par le serveur est "crypté" à la papa. L'internaute aura à l'écran le mail de Madame Michu affiché. Il pourra même lui écrire puisque c'est le browser qui est l’interprète. La solution de Julien Royer est pas mal non plus bien que je la trouve un peu trop verbeuse à mon goût.
Or, je ne pense pas que phantomJs ou autres interprétent le code.

<<<EDIT
Dans la solution que j'ai proposée, autant tout passer en rot13 + déco au cas où :
str_rot13('mailto:...');
Ce sera plus simple et plus efficace.
Modifié par niuxe (12 May 2013 - 00:05)
Modérateur
largowin a écrit :
Pas vraiment. Le client désire que ce soit fait ainsi...

Bah dans ces cas-là je balance le lien simplement en clair, et le client se débrouille avec son anti-spam. Sinon utiliser ce genre de script peut en effet faire baisser un peu le piquage d'adresses.

a écrit :
Or, je ne pense pas que phantomJs ou autres interprétent le code.

Et bien si c'est tout l'intérêt. Ce genre d'outil ont été créés pour faire des tests automatiques qui voient justement ce que madame michu voit, le tout scriptable à l'envi. Ils utilisent soit leur propres bibliothèques, soit celles disponibles en libre. phantomJs se base sur webkit. En gros c'est un navigateur sans partie graphique (et qui ne se pilote donc que par des scripts).
kustolovic a écrit :
Bah on n'est plus en 2007, les mêmes problèmes existent


Je plussois... Si des robots sont maintenant capables de décoder du javascript, ça fait longtemps qu'ils le font pour de simples caractères de remplacement. Merci quand même.

J'aime bien finalement la solution proposé par kustolovic : "Bah dans ces cas-là je balance le lien simplement en clair, et le client se débrouille avec son anti-spam."