Hook LFE associated content: mise à jour

Posted in Link Farm Evolution on juin 7th, 2011 by admin

Wassup man?

Aïe! Plus de deux mois sans mise à jour, on approche le syndrome du blog mort-né :D

En fait j’ai pas mal délaissé mes différents outils black hat, pour me recentrer sur la glandouille mes sites naturels.

 

 

Or à l’occasion du concours de ref pandaranol j’ai commencé à ressortir mes différents outils, notamment LFE pour me construire un petit reseau de splog.

En fait j’attendais depuis longtemps un concours de ce genre pour enfin tester en ‘conditions’ mon outillage numérique.

Ca devrait je l’espère me forcer à terminer mon hook de création auto de linkwheel, présenté dans le dernier article.

Pour en revenir au titre….

En me re-penchant sur mon ébauche de hook auto splog j’ai constaté avec effroi qu’il n’affichait plus rien.

Après un peu de tripatouillage à droite à gauche, j’ai constaté que le hic venait du hook associatedcontent (pourtant pas de news sur le site officiel de LFE), en effet Yahoo a modifié très légèrement (heureusement!) son url d’aperçu impression, qui est utilisée par le hook pour récupérer le contenu texte de l’article.

La modif à faire est la suivante: en ligne 15 du fichier associated_content.php, vous trouvez:


$article = $hc->get('http://www.associatedcontent.com/pop_print.shtml?content_type=article&content_type_id='.$articlelinks[1][$articleid]);
//

qui doit être remplacé par:

  $article = $hc->get('http://www.associatedcontent.com/shared/print.shtml?content_type=article&content_type_id='.$articlelinks[1][$articleid]);
//

That’s all, folks!

edit du 19 Juin: La dernière mise à jour de LFE (1.9.21 du 12 juin) inclus cette mise à jour.

Tags:

Comment écrire un hook pour LFE – Introduction

Posted in Link Farm Evolution on mars 19th, 2011 by admin

Un petit rappel sur LFE et les hooks

Tout d’abord un petit rappel sur le logiciel Link Farm Evolution – aka LFE.

C’est un script écrit en php qui permet (entre autres) de créer puis poster en masse des blogs sur des plateformes wpmu (WordPress MultiUser, version de wordpress qui permet la création de blogs par les visiteurs: cela transforme WordPress en plateforme de blogs).

wpmu

Bon, depuis quelques mois wpmu a fusionné avec WordPress (je ferais d’ailleur un article sur l’installation de WordPress en mutliblog) et n’existe plus en tant que tel mais cela n’empéche pas qu’il reste des milliers de wpmu à spammer utiliser sur le web.

Le but de LFE est de se créer une base de blogs parasites pour fabriquer une linkwheel qui viendra supporter vos money sites. Le contenu de ses blogs peut fortement varier selon le degré de positionnement de ceux ci dans la linkwheel: cela va du contenu tout pourri généré à coup de chaînes de markov, à du contenu unique fait main (cas d’utilisation de LFE en white hat) en passant par du contenu spinné.

LFE est codé en php, mais encodé avec ioncube pour éviter le piratage: l’effet de bord est l’impossibilité de customiser son LFE (à part de le de-ioniser, mais cela donne du code trés difficile à lire et sans doute pas directement utilisable sans un minimum de remise en forme). Heureusement les auteurs du script ont mis en place le sytème de ‘hook’: des sortes de plugins permettant de modifier à la volée le contenu destiné à être envoyé sur les WPµ.

D’origine, un certain nombre de hooks sont fournis:

  • associated_content : récupère du contenu sur le site associated content en fonction d’un mot clef pour les insérer dans vos posts
  • blog_search: récupère du contenu depuis un moteur de blog au choix,  en accord avec un mot clef pour les insérer dans vos posts
  • flickr: insère une photo dans votre post, selon le mot clef choisit, pratique pour illustrer un article et le rendre plus ‘normal’
  • google_translate: traduit un texte en transitant éventuellement par une langue au choix: pratique pour faire du fr->en->fr et obtenir un texte unique
  • Rss Feed: récupère les articles d’un flux rss pour les insérer dans vos posts

Un hook s’utilise en placant son nom entre crochet et en positionnant les paramètres qui vont bien.

Exemple: [flickr('sexy babe','5','false','true')] insère 5 photos de jolies filles dans votre article

Il est possible dans une certaine limite d’encapsuler les hooks, pour obtenir du contenu sur mesure: par exemple traduire un article. Dans la pratique, cette limite est vite atteinte et l’encapsulage rendu souvent impossible (dès que l’on veut utiliser un paramètre dans un hook encapsulé).

D’où l’idée d’écrire ses propres hooks.

Qu’est ce que cela donne en pratique?

Je précise avant d’entrer plus en détails que je ne suis pas développeur mais seulement bidouilleur, donc par avance mes excuses aux puristes du code qui vont sans doute souffrir :D

Les hooks sont de simples fichiers php stockés dans le dossier /contentsources/ de LFE.

Ici, point besoin de déclarations fastidieuses ou de structure de données complexes: le fichier php qui définit le hook contient une seule fonction,dont la définition va correspondre à la syntaxe à utiliser dans LFE pour appeler le hook.

Tous les ‘echo’ contenus dans le hook vont produire une sortie dans l’article.

Pour commencer, quoi de plus traditionnel qu’un ‘hello world’ :


<?php
function hello($var='')
{
switch ($var)
{
 case '1':
 $out= 'hello world';
 break;
 case '2':
 $out= 'welcome to LFE';
 break;
 default:
 $out= 'tous les autres cas ici ';
}
echo $out;
}
?>

On peut sauver ce bout de code avec le nom qu’on veut, le mieux étant hello.php.
Il suffit ensuite d’appeler le hook via :

[hello('1')]

pour afficher ‘hello world’ dans son article.

On peut bien sur faire appel à d’autres hook dans son propre hook.

L’auto splog du pauvre :D

Pour expliciter un exemple plus utile de hook, on va faire une ébauche d’un célèbre hook payant pour LFE.

En effet un soucis avec LFE c’est qu’il ne construit pas vraiment de linkwheel à lui tout seul: il ne génère que du contenu brut, sans liens vers nos autres splogs/sites. Du moins lorsqu’on veut pousser l’automatisation au maximum.

Pour améliorer un peu cela, on va se servir de hooks existants pour en reconstruire un permettant d’ajouter des liens vers d’autres étages de notre nébuleuse de liens.Le fonctionnement du hook sera le suivant: on lui passe un mot clef en anglais (pour aller scrapper des resultats), un mot clef en francais et une url: le hook se charge ensuite de trouver tous les mots clefs exacts de l’article et d’en linker un certain nombre vers votre url.

Le but encore une fois n’est que d’apprendre à construire un hook, pas de faire un truc forcément utile à ce stade de conception.

Comme on l’a vu précédemment, tous les hook génèrent une sortie texte vers les articles en construction via la fonction echo.

Si l’on veut réutiliser un hook dans notre propre fonction, on va devoir bloquer son affichage sans quoi chaque hook produirait son propre texte dans l’article.

Ce que l’on veut, c’est utiliser les résultats de ces hooks pour les modifier, et seulement à la fin produire une seule sortie texte customisée.

Pour cela, on utilise les fonctions php ob_start() , ob_get_contents et ob_end_clean().

La première redirige tous les affichages produits par echo dans un buffer. La deuxième permet de récuperer le contenu du buffer.

Enfin la troisième vide le buffer de son contenu.

Un exemple:


ob_start();
associatedcontent($keyword, $t);
$contents = ob_get_contents();
ob_end_clean();

Dans cet exemple, on a pu faire appel à associatedcontent sans que celui ci ne génère de contenu dans l’article. Par contre, on a récupéré sa sortie (dans la variable $content ) pour pouvoir ultérieurement la traiter et la modifier par un autre hook .

Ok, maintenant qu’on a un article, on va lui appliquer un traitement pour le rendre unique, ou au moins tenter de le rendre ‘nouveau’ pour google.

On va voir deux manières simples pour tenter de rendre un texte unique: la traduction, ou les chaines de markov.

Pour le premier cas, on peut simplement traduire un texte anglais vers le français. On peut aussi prendre un texte francais, le traduire en anglais (ou n’importe quelle autre langue) puis le retraduire en français. On obtient ainsi un texte probablement unique.

Ce qui ne veut pas dire non détectable comme doublon par google.

Voici le hook à utiliser:


ob_start();
googletranslate($contents, $from, $to, $intermediary);
$contents = ob_get_contents();
ob_end_clean();

On utilise la sortie précédemment généré et stockée dans la variable $content, et on la traduit simplement d’une langue donnée vers une autre, en passant éventuellement par une langue intermédiaire (cas du fr->en->fr). Le résultat traduit est à nouveau stocké dans $content.

Dans le deuxième cas, on fait appel à un algorithme appelé chaines de markov. Soit disant un algo qui génère du texte unique de manière intelligente.

Dans la pratique, j’ai trouvé le résultat plutôt médiocre: il se contente de mélanger les paragraphes. Donc un bout de phrase copié et collé dans google ramène sur l’article original.

Un hook ‘chaine de markov’ existe déjà pour LFE, à télécharger ici : http://blackhatseo-blog.com/m/discussion/comment/16196/#Comment_16196

Si l’on veut l’utiliser à la place de la méthode traduction, le code précedent doit être remplacé par:


$markovChains = new MarkovChains();
$contents= $markovChains->GenerateMarkovText($contents);

Je vous conseille de faire quelques tests en changeant les valeurs des paramètres de la fonction __construct de la classe MarkovChains.

Notamment d’adapter la valeur $approximateLength à la longueur souhaitée de vos articles.

Bon alors maintenant qu’on a un texte plus ou moins unique, il va nous falloir le truffer de liens contextuels vers nos sites!

Les différentes étapes sont les suivantes: (je ne détaille pas plus, ce n’est que du php sans particularité liée à la création de hook ou LFE)

  • recherche de tous les mots clefs dans l’article: chaque position de mots clef est stockée dans un tableau
  • on crée un tableau avec une liste aléatoire de n positions de mots clefs: ce ‘n‘ correspond à nombre de liens voulu dans l’article
  • on tri le tableau par ordre d’indice décroissant: en effet chaque remplacement va allonger le texte (car on rajoute un a href + votre url). Donc les positions vont se décaler au fur et à mesure. Si on commence par la fin on évite cet effet de bord. Doit y avoir plus simple parceque ça me semble super lourd comme méthode :D
  • enfin pour chaque position on effectue le remplacement avec la fonction substr_replace qui nous permet de préciser la position du remplacement et sa longueur. Un simple str_replace aurait remplacé toutes les occurrences.

A noter que je traite les recherches de keyword avec un espace avant et après: cela permet d’éviter les mots englobés dans un autre (exemple: achat et chat).

Une modif simple serait de de rajouter une option pluriel qui irait chercher chats en plus de chat. Ou encore ‘un chat’ et ‘le chat‘,inclure du spinning, etc…

Enfin, voici la syntaxe d’utilisation du hook:

[translateac3('cat','en','fr','chat','http://www.mondomaine.com',3)]

Cela recherche les articles associated content avec le mot clef ‘cat‘, le traduit en fr, puis remplace 3 occurrences du mot clef ‘chat‘ par votre url, ce qui permet d’avoir vos liens contextuel dans du texte généré à la volée. Pas encore une linkwheel, mais on s’en approche ^^.

Voila pour ce premier tuto sur la création de hook. Je pensais faire plus court et plus simple et puis finalement une fois lancé…

Alors évidemment, c’est une ébauche de hook ‘auto splog’, et il y a des tas de façon de l’améliorer et de le rendre plus souple (accès à des fichiers de keywords,d’urls,  à la base de donnée des blogs,ect…), on verra ca dans la deuxième partie.

Quant au code, il est sans doute très crade, mais ca a toujours été le dernier de mes soucis :D

Hook translateac3 à télécharger ici.

Tags: ,

Mes premiers pas avec Xrumer

Posted in black hat, Link Farm Evolution, ScrapeBox, tutoriel xrumer, Xrumer on mars 15th, 2011 by admin

Bien qu’ayant toujours pratiqué le white hat sur l’ensemble de mes sites ( et même plus que du white hat, puisque je n’ai quasiment jamais référencé mes sites, préférant me focaliser sur le contenu, mais ceci est une autre histoire ^^) , depuis quelques mois et surtout ces dernières semaines je m’intéresse de plus près au référencement black hat.

Ainsi Scrapebox, LinkFarmEvolution et Xrumer sont devenus mes nouveaux compagnons :D

Xrumer et sa ‘learning curve’

Xrumer est un logiciel russe permettant de créer des profils et de poster sur des forums de manière automatisé. Surtout, et ce pourquoi je l’ai acheté, il crack en interne les captcha, ce qui permet d’éviter d’avoir à payer des chinois/indiens/.. pour sous traiter cette étape.

Si vous vous intéressez au BH, vous trouverez souvent des références à la courbe d’apprentissage difficile (learning curve) mais nécessaire pour pourvoir utiliser Xrumer.

Cela est sans doute vrai si vous souhaitez utiliser le logiciel pour automatiser la création de topics et de question/réponses. Si vous souhaitez tout comme moi vous en servir comme un outil de création en masse de profils la learning curve pour une utilisation basique tiendra en même pas 5 minutes.

Première étape, se constituer une liste de forums

Xrumer est livré avec une liste toute prête de forums, que je n’ai pas testée car j’imagine qu’elle est bien pourrie par le spam.

Pour se créer sa première liste, Scrapebox nous sera utile. Son faible prix (de l’ordre de 50$) et les innombrables fonctions de ce couteau suisse du black hat (ou moins black) en font un outil à posséder impérativement pour tout BH.

Un footprint du genre ‘inurl:viewprofile inurl:.edu’ , pas top mais qui permettra de se faire une liste de départ pour tester Xrumer.

A noter que le logiciel de scrap Hrefer est fourni avec Xrumer, mais je le trouve pénible à utiliser et je préfère pour l’instant continuer à utiliser scrapebox.

A cette étape je me retrouve avec une liste de forums edu (environ 700 dont une centaine avec PR>=6).

Import de la liste dans Xrumer et configuration

On va maintenant importer notre liste dans le dossier Links de Xrumer, et le renommer LinksList idn.txt où n est un nombre à augmenter séquentiellement au fur et à  mesure que vous importez de nouvelles listes.

Xrumer gère des projects, qui ne sont rien d’autre que des enregistrements des caractéristiques de vos différents profils

On va donc en créer un nouveau via Project->New.

Il vous propose une fenêtre avec la liste de tous les paramètres de votre profil: le pseudo et mot de passe bien-sur, mais aussi d’autre champs facultatifs comme l’adresse ICQ, la ville ou les hobbies, mais surtout le champ Homepage.

C’est dans ce champ que vous placez l’adresse de votre site à référencer.Il est préférable pour ‘noyer le poisson’ de linker plusieurs sites et/ou plusieurs url d’un domaine lors d’un blast. Voir même de linker d’autres liens de profils pour créer une sorte de linkwheel de profils.

Cela se fait simplement par l’utilisation du spinning. Exemple:

{http://momneysite.com/article_de_test.php | http://moenymoneymoeny.blogspot.com | http://forum.com/profile=au_autre_profile}

Bonne nouvelle pour tous les autres champs, il suffit de cliquer ‘Autofilling’ pour que le programme génère automatiquement les champs pseudos/password/Ville, etc..

 

remplissage automatique des champs

 

La manière dont tout cela généré est configurable, mais ça ne rentre pas dans le cadre d’une prise en main en 5 minutes^^.

Il faut juste savoir que tous les champs sont spinnable, donc par exemple vous pouvez remplir le champs hobbies en fonction de mot clef de votre thématique mais je doute que cela aie une influence sur le ref  (toutefois ça ne coûte rien de le faire).

Pour les forums de type SMF, il y a la possibilité de laisser une ancre de votre choix sur votre lien spammy, facilitant ainsi le positionnement sur un mots clef de votre choix.

Pour cela, il faut utiliser assez bizarrement le champ ‘Topic’ destiné initialement au sujet de votre spam-topic.

La aussi, possibilité d’utiliser du spinning pour éviter de trop se faire flaguer sur un mot clef donné:

Voila pour ce qui est du profil. Il faut maintenant gérer les emails.

Xrumer permet de créer des emails via le provider mail.ru, mais impossible de le faire fonctionner.

Le mieux à faire c’est de prendre un domaine poubelle, et de créer plusieurs adresses voire d’utiliser un catchall.

Ce qui permet ensuite de mettre du spinning sur l’adresse email. Pour l’instant je ne génère que des petites quantités de liens afin de tester le soft et ses répercutions (moins de 500 par jour) donc j’ai pas encore besoin de jongler avec les adresses email.

Donc après s’être créé une adresse spécifique il suffit de la rentrer ainsi que les logins/pass dans la partie email du project.

Le champ pop-server devrait être du type mail.votredomaine.tld . C’est tout ce qu’il y a à faire pour une utilisation de Xrumer en mode ‘test’.

Pour des quantités industrielles (genre plusieurs dizaines de milliers/jour),  la gestion d’emails est un point crucial car elle nécessite de jongler avec les catchall et les listes de spam.

En théorie pour l’utilisation d’un catchall, il suffit de mettre l’adresse de ce dernier (genre all@domain.tld) dans Login, de préciser son mot de passe, et dans Adress de mettre une adress devant être captché (toto@domain.tld ou mieux, {toto@domain.tld|tata@domain.tld|gege@domain.tld}.

Enfin, il faut éditer le fichier xpop.txt (dans la racine Xrumer) et remplir les champs username/password/host/ en fonction des paramètres de son catchall.

Voila, n’oubliez pas de sauver :) et on est presque parti pour commencer le sale boulot de spammer !

 

Deux dernières choses à checker avant de lancer notre blast:

  • dans Options->Advanced Options, cochez ‘Registering Only’ car on ne veut que créer des profils.
  • dans Options->Profiles activation via e-mail, cochez ‘Automatic Mode’ ( ça devrait l’être par défaut)

 

Lancement du blast et premières analyses

Il faut choisir la liste de liens qu’on a précédemment placée dans le dossier Links.

Dans la zone ‘Links database ID’ choisir le numéro correspondant à votre fichier, et assurez vous que LinkList est selectionné dans le menu déroulant.

Et maintenant….Start!

Chose bizarre que j’ai constaté, souvent le premier start ne fonctionne pas. Il faut faire stop, changer le numéro de la database et remettre le bon, repositionner le curseur d’avancement à 0, et refaire Start.

Dans multithreading settings, vous pouvez ajuster le nombre de thread maxi pour booster ou pas la nombre de création de profils par seconde, selon la possibilité de votre connection internet.

Quelles sont mes premières analyses de débutant sous Xrumer?

Tout d’abord, un taux de succès très interessant: sur ma première liste de 93 forums edu PR6 à PR9 , j’ai obtenu manuellement environ 29 succés, dont 11 profils avec liens effectivement en ligne (cela m’a pris des heures, notamment sur les forums tawainais :D). La différence s’explique par les profils devant être validé par l’admin.

C’est très formateur de faire ça à la main au moins une fois, ça permet d’avoir une connaissance assez large des différentes raisons d’échecs (le lien n’est pas un forum, demande une réponse à une question seulement connue si l’on est du milieu étudiant, plantage du script/mauvaise configuration du forum trés fréquent, validation admin,etc.. ) au lieu d’accuser dans le futur Xrumer.

Mon premier résultat avec Xrumer me donne 12 profils effectifs: c’est donc équivalent voire supérieur à un humain, et le spaming ne prend qu’une minute au lieu de nombreuses heures à la main.

Sur ma liste totale d’environ 700 liens, j’obtiens 42 profils, soit 6.8% de taux de réussite.

Il n’en reste pas moins qu’Xrumer doit être utilisé pour du blast de masse, alors comment augmenter ce taux de succés?

Il y a plusieurs possibilité: améliorer ses footprints, ou faire ce que j’appelle du ‘reverse-spamming‘.

Cela consiste à pister les traces de spam des autres, parfois cela est appelé tracker ou pister, et c’est évidemment mal vu par les BH qui aiment utiliser les autres mais qui  n’aiment pas être le dindon de la farce :D .

Pour cela, prendre un des profils que vous avez blasté. Remontez l’id de quelques centaines ou quelques miliers selon la taille de la memberlist. Exemple:

votre profil est sur une adresse du genre: http://www.adresse_du_forum.tld/forum/index.php?action=profile;u=11256

Vous allez sur l’adresse http://www.adresse_du_forum.tld/forum/index.php?action=profile;u=8256

Il y a de fortes chances que vous tombiez sur un profil de spammer. Copiez l’url de son site et tapez le dans google accolé à un footprint (par exemple ‘viewprofile.php’).

Vous obtenez la liste de tous les forums que notre spammeur a blasté. Plus vous remontez dans l’id du forum, plus le blast est vieux et plus le site aura de l’ancienneté. La liste que vous renvoie alors google est à priori trustée puisque le blast est ancien donc les profils aussi (pas forcement, mais c’est un indice).

Avec ce reverse-spamming, j’obtiens des taux de succès de 50 à 60 %. Évidemment, les forums ainsi blasté sont par nature spammy, mais reste il encore des forums safe , j’en doute ^^.

Voila pour ce premier article sur Xrumer. Je débute avec, donc il s’agit avant tout de choses basiques, mais au fur et à mesure de ma progression je posterai de nouveaux articles sur le sujet.

DNS kimsufi , domaine .fr et erreur SOA

Posted in DNS, kimsufi, serveur dedié on mars 3rd, 2011 by admin

Pour débuter ce blog, quoi de plus à propos qu’un petit topo sur ce qui peut parfois ressembler à un parcours du combattant: mettre un place un domaine .fr sur son serveur dédié :D

Pour une extension quelconque, la mise en ligne d’un site peut débuter 5 minutes après l’achat. Il suffit de paramétrer les DNS dans l’interface de son fournisseur de domaines avec les DNS de votre serveur dédié. Cela peut même souvent se faire en même temps que l’achat.

Mais en France on ne fait rien comme tout le monde, et la mise en ligne d’un domaine .fr peut prendre des heures voire des jours entiers!

En effet la mise en place des DNS est vérifié par l’AFNIC en temps réel ( http://www.afnic.fr/outils/zonecheck ) et le moindre truc qui cloche (compte email postmaster non configuré par exemple) va lever un warning.

Le hic c’est qu’à la moindre incohérence dans les DNS paramétrés, le changement/mise en place de DNS sera refusé et votre joli domaine restera sur les DNS de parking de votre fournisseur de NDD.

Je me rappelle ainsi de mon premier .fr sur dédié qui m’avait bien occupé pendant des semaines, avant de finir par laisser tomber.

Avec les quelques 150 domaines que je gère je pensais être rodé mais hier je suis reparti dans une nouvelle galère avec le domaine spekulator.fr.

Pour rappel, avec un kimsufi, les DNS à paramètrer sont les suivant:

ksxxxxx.kimsufi.com et ns.kimsufi.com

Si vous obtenez une erreur de zone check lors de la mise en place, il faut vérifier 2 choses:

-Pour une erreur de type « Impossible de trouver le serveur de nom primaire (SOA)« , cela vient probablement d’une auto config  sur les anciens serveurs kimsufi. Pour y remedier, il faut faire une modif dans la config de bind.

La marche à suivre avec ovhm (le panel fait maison d’OVH, super simple et pratique): aller dans ‘Serveur’, puis ‘Serveur de noms de domaines BIND’ et enfin cliquez sur le nom de domaine en question.

Aller dans ‘Serveur de noms (2)’ : le deuxième doit être ‘ns.kimsufi.com.’  et non ‘sdns1.ovh.net.’ (avec le point à la fin à chaque fois).

A noter que les derniers serveurs kimsufi positionnent la bonne valeur automatiquement dès que vous ajoutez un domaine dans ovhm, donc cette manip devrait devenir obsolète.

Ensuite, aller dans votre manager ovh, selectionnez votre dédié , puis ‘Services’ et ‘DNS secondaires’.

Ajoutez votre domaine (sans les www) et laissez l’opération se dérouler. Vous devriez enfin obtenir le bon pointage du domaine sur votre serveur!

 

Voila pour le classique.

L’erreur que j’ai eu hier était: « [TEST présence d'un enregistrement SOA]: réponse refusée par le serveur:« .

Une variante donc :D

Après avoir tâtonné pendant une heure, j’ai trouvé d’où venait le hic: j’ai rajouté le domaine dans ovhm juste après la création du domaine.

L’AFNIC a logiquement levé une erreur à la création du domaine car il n’était pas encore déclaré sur mon serveur. Pourtant, il a ensuite mémorisé l’erreur et impossible de lui faire reconnaitre mes DNS par la suite.

La solution, simple, a été de supprimer le site dans ovhm et de le rajouter dans la foulée. Le zone check est passé ensuite sans erreur et le domaine était en ligne en moins d’une heure (peut être moins, j’ai pas surveillé de près).

Voili voila, en espérant que ça épargne du temps à d’autres !