Il est de bon ton de se souhaiter la bonne année. Mais vous, et vous seul, pourrez faire en sorte que cette année soit bonne, meilleure que celle qui vient de s'écouler. Apprenez à ne compter que sur vous, car personne n'est plus qualifié que vous-même pour bâtir, réparer ou améliorer votre propre vie. Personne ne fera les choses à votre place. D'ailleurs, tout ce que les autres peuvent faire, c'est souhaiter que vous le fassiez. Et ne croyez pas que tout ceux qui vous entourent vous apporteront des solutions : certains font juste partie de vos problèmes. Transformez vos résolutions en actes, et dans douze mois, retournez-vous et souriez-vous fièrement : C'était long. C'était difficile. Mais ça y est : 2017 était une bonne année, merci Moi.

Webmasters : pourrissez la vie des spammeurs !

Prérequis :

- Microsoft Word (N'importe quelle version)
- Programme de gestion de sites (DreamWeaver, Golive, FrontPage, ...)
- Connaître un minimum de HTML
- Etre WebMaster d'un site

Le spam, ça énerve ! Cette publicité non désirée qui encombre les boîtes aux lettres de tout le monde. Voici une perite parade vengeresse qui va rendre la vie plus difficile aux spammeurs si peu scrupuleux !

Comment les spammeurs peuvent-ils bien obtenir votre adresse e-mail ?

Voici quelques indices : par exemple, lorsque vous visitez un site web quelconque, il est parfois demandé de s'enregistrer. Et dans le processus d'enregistrement, on vous demande immanquablement... votre e-mail ! Rien ne vous assure que la société à qui vous faites si confiance ne revend pas ces précieuses adresses a tout vent... Cette même société peut également être victime de piratage... Et vol d'adresses !

Ou encore, lorsque vous envoyez un e-mail à un correspondant peu sécurisé, qui n'utilise pas d'antivirus par exemple, il est fort possible que, une fois que votre adresse e-mail soit chez lui, il se fasse "piller" les adresses e-mails de sses correspondants. Dont vous ! Et hop, vous voici à nouveau la cible des spammeurs.

L'une des techniques qui ratisse large est le pillage des pages internet. Les spammeurs parcourent le web à la recherche d'adresses e-mail (A l'aide de programmes bien entendu). Par exemple, admettons que vous fassiez partie de la société des joyeux lurons, et que cette société ait un site web, dans lequel figure une page avec les adresses de tous les membres, lorsque le programme du spammeur l'atteint, les adresses sont purement et simplement copiée, puis revendues à des tiers. Et, rapidement, vous recevez de la publicité pour des "mortgages", du "Viagra", et autre Valium !

Afin de décourager cette dernière pratique, je propose aux webmasters de créer une ou plusieurs pages web bourrées d'e-mails totalement invalides mais d'apparence fiable, générés au hasard !

A la longue, les bases de données des spammeurs pourraient être tellement infestées de fausses adresses qu'elles deviendraient inexploitables, invendables, et pourquoi pas, à la longue, pourrions nous rêver d'éradiquer le spam ?...

Regardez ici un exemple de page bourrée à craquer d'adresses e-mails invalides.

Un être humain constate rapidement que c'est n'importe quoi, mais pas les programmes automatiques !!!

Vous pouvez télécharger ici le document Word qui contient la macro qui génère les pages d'e-mails invalides.
ATTENTION : Si vous cliquez simplement sur le lien, c'est votre navigateur Web qui va ouvrir le document Word. Pour plus de commodité, vous pouvez cliquer avec le bouton droit de votre souris sur le lien, et choisisr "Enregistrer la cible Sous...", ce qui vous permettra un meilleur contrôle sur votre travail.

Mode d'emploi :

1. Ouvrez le fichier qui contient la macro avec Word (97, 2000, Xp ou 2003) - Activez les macros, évidemment...
2. Appuyez sur la comblinaison de touches CTRL-M pour générer une page pleine de faux e-mails (C'est la combinaison de touches attribuées à cette fameuse macro)
3. Sélectionnez l'ensemble de cette page avec CTRL-A, et copiez la avec CTRL-C

Il s'agit de code source HTML. Il faut évidemment savoir ce qu'est un code source HTML, mais le titre de la page précisant que cette astuce est réservée aux webmasters, je suppose que vous savez ce que c'est.

Et collez ce code-source HTML dans la partie source de votre programme de gestion de sites Web (FrontPage, DreamWeaver, GoLive, ...)

Le tour est joué ! Vous êtes a présent l'heureux propriétaire d'une page piégée, truffée de faux e-mails.

Afin d'être certain que lorsque les robots arrivent sur votre site ils se fassent piéger, insérez un lien hypertexte vers votre page piégée depuis votre page d'accueil, trop discret pour que les visiteurs légitimes cliquent dessus, mais suffisant pour que les programmes se laissent avoir. Par exemple sur le point final d'une phrase, comme ceci.

(Si vous allez sur ma page d'accueil www.info-3000.com, vous aurez de la peine à remarquer ce fameux lien d'un seul coup d'oeil)

Rien ne vous empêche de générer plusieurs pages piégées, et plusieurs liens !

Maintenant, je vais vous expliquer en détail comment cette macro fonctionne. Pourquoi ? D'une part parce que ça peut simplement vous intéresser, et, d'autre part, vous vous inviter et vous recommander de la manipuler et de la modifier quelque peu.

Pourquoi ? Parce que si beaucoup de webmasters utilisent simplement cette macro, j'ai peur que les spammeurs le constatent, et arrivent à programmer leurs robots pour que les pages générées avec cette macro soient "sautées". Par contre, si chaque programmeur en herbe en fait une mouture différente (Changer l'en-tête html, modifier les tailles des e-mailes, les extenstions, les mots...), les robots ne pourront pas détecter qu'il s'agit d'une page bourrées d'adresses fictives (C'est un peu ce qu'on appelle le "polymorphisme" - Plusieurs visages)

Voici la macro (Pour commencer, je vous la livre telle quelle, et plus bas, je la commente mieux):

Option Explicit
Sub GenererEMail()

  Dim Nombre As Long
  Dim Ctr As Long
  Dim C2 As Long
  Dim ChoixElementDocument As Long
  Dim Nombrecar As Long
  Dim Nom As String
  Dim Domaine As String
  Dim ChoixExtension As Long

  ' Extensions possibles :
  Const NombreExt = 7
  Dim Extension(NombreExt)
  Extension(1) = "com"
  Extension(2) = "net"
  Extension(3) = "org"
  Extension(4) = "fr"
  Extension(5) = "be"
  Extension(6) = "ch"
  Extension(7) = "us"

  ' Mots au hasard :
  Const NombreMot = 20
  Dim Mot(NombreMot)
  Mot(1) = "the"
  Mot(2) = "a" 
  Mot(3) = "switch"
  Mot(4) = "computer"
  Mot(5) = "mister"
  Mot(6) = "about"
  Mot(7) = "paris"
  Mot(8) = "New-York"
  Mot(9) = "Perfume"
  Mot(10) = "nice"
  Mot(11) = "black-out"
  Mot(12) = "here's the prisoners"
  Mot(13) = "nobody at home"
  Mot(14) = "yourself as mine"
  Mot(15) = "please read"
  Mot(16) = "newsletter"
  Mot(17) = "the doctor is out of office"
  Mot(18) = "don't go"
  Mot(19) = "visit our website"
  Mot(20) = "my tailor is rich"

  Randomize
  Selection.WholeStory
  Selection.Delete
  Selection.TypeText "<!DOCTYPE HTML PUBLIC " & """" & "-//W3C//DTD HTML 4.01 Transitional//EN" & """" & " > "
  Selection.TypeParagraph
  Selection.TypeText "<html>"
  Selection.TypeParagraph
  Selection.TypeText "<head>"
  Selection.TypeParagraph
  Selection.TypeText "<title>Document sans titre</title>"
  Selection.TypeParagraph
  Selection.TypeText "<meta http-equiv=" & """" & "Content-Type" & """" & "content=" & """" & "text/html; charset=iso-8859-1" & """" & ">"
  Selection.TypeParagraph
  Selection.TypeText "</head>"
  Selection.TypeParagraph
  Selection.TypeParagraph
  Selection.TypeText "<body>"

Nombre = InputBox("Combien d'éléments désirez-vous générer ? (1000 va générer une page moyenne)", "Nombre", 1000)
  For Ctr = 1 To Nombre
    ' Choisit-on un mot ou une adresse e-mail ? (4 chance sur 10 d'avoir un e-mail
    ChoixElementDocument = Int(Rnd() * 10) + 1
    Select Case ChoixElementDocument
      Case 1 To 3: Selection.TypeText Mot(Int(Rnd() * NombreMot) + 1) & " "
      Case 4: Selection.TypeText ", and that's all ! "
      Case 5: Selection.TypeText "was OK. <BR>"

      Case 6 To 10:
        ' Génération aléatoire du nom :
        Nombrecar = Int(Rnd() * 10) + 3
        Nom = ""
        For C2 = 1 To Nombrecar
          Nom = Nom & Chr(Int(Rnd() * 26) + 97)
        Next

        ' Génération aléatoire du domaine :
        Nombrecar = Int(Rnd() * 10) + 3
        Domaine = ""
        For C2 = 1 To Nombrecar
          Domaine = Domaine & Chr(Int(Rnd() * 26) + 97)
        Next

        ' Génération aléatoire de l'extension :
        ChoixExtension = Int(Rnd() * NombreExt) + 1
        Selection.TypeText "<a href=" & """" & "mailto:" & Nom & "@" & Domaine & "." & Extension(ChoixExtension) & """" & ">" & Mot(Int(Rnd() * NombreMot + 1)) & " </a>"

    End Select
  Next
  Selection.TypeParagraph
  Selection.TypeText "</body>"
  Selection.TypeParagraph
  Selection.TypeText "</html>"

End Sub

 

Passons à l'analyse plus détaillée :

 

Cette première ligne veut simplement dire que la déclaration des variables est obligatoire (les Dim)

Option Explicit
Sub GenererEMail()

Déclaration des variables scalaires (simples)

  Dim Nombre As Long
  Dim Ctr As Long
  Dim C2 As Long
  Dim ChoixElementDocument As Long
  Dim Nombrecar As Long
  Dim Nom As String
  Dim Domaine As String
  Dim ChoixExtension As Long

Déclaration des tableaux :

  ' Extensions possibles :

Le premier tableau représente les extensions possibles pour les e-mails. Ils peuvent se terminer par .com, .org, .fr, etc. Si vous voulez en ajouter d'autres, comme.tv ou .bk... Vous pouvez les ajouter facilement, pensez a adapter Const NombreExt = le nombre d'extensions possibles

  Const NombreExt = 7
  Dim Extension(NombreExt)
  Extension(1) = "com"
  Extension(2) = "net"
  Extension(3) = "org"
  Extension(4) = "fr"
  Extension(5) = "be"
  Extension(6) = "ch"
  Extension(7) = "us"

Le tableau suivant comprend des mots ou des bouts de phrases quelconques. En effet, je crains que si une page web ne contient que des e-mails, les robots ne soient pas dupes et n'enregistrent pas les adresses. Pensez a adapter Const NombreMot = Le nombre de mots possibles. Ici, tout est en anglais, mais vous pouvez mettre du français évidemment. Evitez peut être les caractères spéciaux tels que les accents ou les c cédille...

  ' Mots au hasard :
  Const NombreMot = 20
  Dim Mot(NombreMot)
  Mot(1) = "the"
  Mot(2) = "a" 
  Mot(3) = "switch"
  Mot(4) = "computer"
  Mot(5) = "mister"
  Mot(6) = "about"
  Mot(7) = "paris"
  Mot(8) = "New-York"
  Mot(9) = "Perfume"
  Mot(10) = "nice"
  Mot(11) = "black-out"
  Mot(12) = "here's the prisoners"
  Mot(13) = "nobody at home"
  Mot(14) = "yourself as mine"
  Mot(15) = "please read"
  Mot(16) = "newsletter"
  Mot(17) = "the doctor is out of office"
  Mot(18) = "don't go"
  Mot(19) = "visit our website"
  Mot(20) = "my tailor is rich"

Cette instruction sert simplement a ce sque les chiffres au hasard soient vraiment au hasard :

  Randomize

On commence par simplement effacer le contenu du document Word :

  Selection.WholeStory
  Selection.Delete

Maintenant, on écrit un en-tête HTML typique. Le &, c'est pour coller plusieurs éléments ensemble, et les """", c'est l'astuce pour coller un guillemet.

  Selection.TypeText "<!DOCTYPE HTML PUBLIC " & """" & "-//W3C//DTD HTML 4.01 Transitional//EN" & """" & " > "

TypeParagraph, c'est simplement la touche ENTER :

  Selection.TypeParagraph

On termine l'en-tête HTML :

  Selection.TypeText "<html>"
  Selection.TypeParagraph
  Selection.TypeText "<head>"
  Selection.TypeParagraph
  Selection.TypeText "<title>Document sans titre</title>"
  Selection.TypeParagraph
  Selection.TypeText "<meta http-equiv=" & """" & "Content-Type" & """" & "content=" & """" & "text/html; charset=iso-8859-1" & """" & ">"
  Selection.TypeParagraph
  Selection.TypeText "</head>"
  Selection.TypeParagraph
  Selection.TypeParagraph
  Selection.TypeText "<body>"

La macro vous demande combiend e mots vous voulez : Je recommande d'entrer un nombre entre 100 et 3000 mots, pour obtenir une page plus ou moins longue. Attention : SI vous répondez 10000, la macro met presque 20 secondes a s'exécuter :

Nombre = InputBox("Combien d'éléments désirez-vous générer ? (1000 va générer une page moyenne)", "Nombre", 1000)

Maintenant, on va compteur de 1 jusqu'au nombre d'éléments que vous avez choisi :

  For Ctr = 1 To Nombre

Pour choisir un nombre au hasard entre 1 et 10, on écrit : int(Rnd() * 10) + 1. Si il n'y a pas le +1, ce sera un nombre entre 0 et 9. Le Int, c'est pour avoir un nombre entier (INTeger), sans décimales :

    ' Choisit-on un mot ou une adresse e-mail ? (4 chance sur 10 d'avoir un e-mail
    ChoixElementDocument = Int(Rnd() * 10) + 1

Selon le chiffre ainsi chosi au hasard, stocké dans ChoixElementDocument, si c'est entre 1 et 3, on va écrire un mot au hasard, choisi dans le tableau Mot, défini au début du programme. Ce qui fait qu'on a 3 chances sur 10 d'écrire un simple mot, pas un e-mail. Et on le fait suivre d'un espace (& " ") :

    Select Case ChoixElementDocument
      Case 1 To 3: Selection.TypeText Mot(Int(Rnd() * NombreMot) + 1) & " "

SI c'est 4 (1 chance sur 10), on écrit   and that's all.  C'est une manière de terminer une phrase en quelque sorte... :

      Case 4: Selection.TypeText ", and that's all ! "

Si on a 5 (1 chance sur 10), on écrit    was ok.   et on ajoute <BR>, c'est à dire un retour à la ligne en langage HTML, un peu comme si on concluait un paragraphe.

      Case 5: Selection.TypeText "was OK. <BR>"

Maintenant, si on a entre 6 et 10 (6,7,8,9,10), on a dont 1 chance sur 2 d'écrire un e-mail. Dans ce cas, on va générer un e-mail au hasard.
Prenons par exemple qwert@uiopl.com

      Case 6 To 10:

D'abord, combien de caractères pour le nom ? On choisit un chiffre au hasard entre 3 et 10 + 3 (entre 3 et 13) :

        ' Génération aléatoire du nom :
        Nombrecar = Int(Rnd() * 10) + 3

On précise que la variable Nom est égale à vide :

        Nom = ""

Maintenant, avec une boucle, je vais de 1 jusqu'au nombre de caractères chosit en hasard lors de l'étape précédente :

        For C2 = 1 To Nombrecar

Je choisit un chiffre au hasard entre 97 et 97+26. Pourquoi ? Parce que les lettres sont codées dans votre ordinateur sous formes de chiffres (on appelle ce codage ASCII). Et a vaut ... 97. b vaut 98, etc. et z vaut 97+26 (123)

Nom est égal à lui-même & le caractère (Chr - CHaRacter) correspondant à ce chifrfe au hasard

          Nom = Nom & Chr(Int(Rnd() * 26) + 97)
        Next

A présent, je me retrouve avec Nom = qwer (dans notre exemple)

Je fais la même chose avec le domaine (dans notre exemple, le domaine, c'est uiopl)

        ' Génération aléatoire du domaine :
        Nombrecar = Int(Rnd() * 10) + 3
        Domaine = ""
        For C2 = 1 To Nombrecar
          Domaine = Domaine & Chr(Int(Rnd() * 26) + 97)
        Next

Maintenant, l'extension. On ne met pas n'importe quoi, c'est .com, .net, .org... mais pas .ztr ou .sdfw ! On va choisir un nombre au hasard compris entre 1 et le nombre d'extensions prédéfinies, au tout début du programme, vous vous rappelez ?

        ' Génération aléatoire de l'extension :
        ChoixExtension = Int(Rnd() * NombreExt) + 1

Maintenant qu'on a notre adresse complète :
Nom = qwer
Domaine = uiopl
Extension : .com

Il suffit de les coller : qwer@uiopl.com (Nom & "@" & Domaine & "." & Extension

Mais, en langage HTML, pour faire un joli lien hypertexte (qui pointe vers l'adresse, comme ceci), il faut écrire très exactement :

<a href="mailto:qwer@uiopl.com">comme ceci</a>

Tout est important, même les guillemets ! "Comme ceci" sera remplacé par un mot aléatoire, choisi dans la liste des mots, au début du programme (Mot(Int(Rnd() * NombreMot + 1))) :

        Selection.TypeText "<a href=" & """" & "mailto:" & Nom & "@" & Domaine & "." & Extension(ChoixExtension) & """" & ">" & Mot(Int(Rnd() * NombreMot + 1)) & " </a>"

On termine le Select Case ChoixElementDocument, et le  For Ctr = 1 To Nombre

    End Select
  Next

Et on termine en écrivant la fin de toute page HTML qui se respecte (</body> et </html>)

  Selection.TypeParagraph
  Selection.TypeText "</body>"
  Selection.TypeParagraph
  Selection.TypeText "</html>"

End Sub