L`Imacro, le Javascript et vous
Transcription
L`Imacro, le Javascript et vous
L'Imacro, le Javascript et vous
introduction:
l'Imacro de la société Iopus est un pseudo langage d'automatisation web, le Javascript est un
langage de développement web (c'est ce qui permet a vos pages de pouvoir bouger avec le flash
mais bon osef du flash ^^) quand a vous, vous êtes un futur codeur iim-Js
le but sera de vous inculquer les bases de la combinaison de ces langages afin de produire un bot
informatique
partie I: Imacros alias simplicité
pour faire un bot web a partir d'imacros, rien de plus simple, il suffi de cliquer sur le bouton
enregistrer, de faire la tâche a automatiser puis de lancer la macro en boucle par exemple:
VERSION BUILD=4100420
'Simple but effective macro to saves the current page
'
'Ask for a name
PROMPT Enter<SP>a<SP>Page<SP>Name !VAR1 NoName_Time_{{!
NOW:yyyymmdd_hhnnss}}
'
'Save the page
SAVEAS TYPE=CPL FOLDER=* FILE={{!VAR1}}
Est une source Imacro basique, vous ne comprenez rien ? Un peu normal c'est assez compliquer
mais l'avantage c'est que vous ne devrez jamais mettre le nez la dedans car l'enregistrement est
automatique
partie II: Javascript alias lisibilité
maintenant si je vous dit que Javascript c'est de l'anglais vous me croyez ? Non ? Alors regardez ce
qui suit:
Var compteur=0;
While (compteur<10){
compteur=compteur+1;
alert(""+compteur+ "hello de votre navigateur!");
}
Maintenant traduction anglais►français:
variable compteur=0;
tant que (compteur<10){
compteur=compteur+1;
alerte(""+compteur+ "hello de votre navigateur!");
}
et encore je n'ai pas tricher! Demandez a votre prof d'anglais je pense qu'il est du même avis
partie III: Combiner les langages
vous pouvez combiner les langage pour associer les avantages des deux et la commande béni qui
permet ce miracle se nomme {roulement de tambour}
iimPlay("CODE: ")
en fait vous pouvez jouer du Imacro dans du Javascript mais pas l'inverse et c'est le but de cette
commande
reprenons le première exemple:
VERSION BUILD=4100420
PROMPT Enter<SP>a<SP>Page<SP>Name !VAR1 NoName_Time_{{!NOW:yyyymmdd_hhnnss}}
SAVEAS TYPE=CPL FOLDER=* FILE={{!VAR1}}
Vous pouvez l'inclure dans du Javascript en faisant:
iimPlay("CODE:VERSION BUILD=4100420")
iimPlay("CODE:PROMPT Enter<SP>a<SP>Page<SP>Name !VAR1 NoName_Time_{{NOW:yyyymmdd_hhnnss}}")
iimPlay("CODE:SAVEAS TYPE=CPL FOLDER=* FILE={{!VAR1}}")
Les code sont exactement les même mais l'un est en javascript et l'autre en iim vous me direz quel
utilité ? Et bien je vous répond que la plupart des « mot clé » du javascript sont absent en iim j'ai
nommé:
While (condition) {instruction}
if (condition) {instruction} else {instruction}
switch variable{
case (condition)
instruction
break
}
Mouai et sa sert a quoi ce bordel ? Et bien a tout justement! Vous vous voyez bien faire un code un
peu dynamique sans condition ou boucle ? Moi je vous dit bon courage car c'est pas gagné !!
partie IV: Commencer a faire son petit bot
alors au tout début on va enregistrer une macro iim car le zèle c'est pas pour moi et quand on peu
enregistrer sans avoir a taper je dis allons y!
URL
TAG
SET
TAG
TAG
TAG
TAG
TAG
TAG
GOTO=http://darkmoon-online.net/?
POS=1 TYPE=INPUT:TEXT FORM=ACTION:? ATTR=NAME:login CONTENT=poke123
!ENCRYPTION NO
POS=1 TYPE=INPUT:PASSWORD FORM=ACTION:? ATTR=NAME:password CONTENT=0000
POS=1 TYPE=INPUT:SUBMIT FORM=ACTION:? ATTR=NAME:log
POS=2 TYPE=A ATTR=TXT:Votez
POS=2 TYPE=IMG ATTR=SRC:http://www.rpg-paradize.com/vote.gif
POS=2 TYPE=IMG ATTR=SRC:http://www.topwow.fr/bouton.gif
POS=2 TYPE=IMG ATTR=SRC:http://www.gowonda.com/vote.gif
Voilà un parfait petit code iim mais il est un peu fixe vous ne trouvez pas ? C'est pourquoi
convertissons le en Js pardi !
iimPlay("CODE:URL GOTO=http://darkmoon-online.net/?");
iimPlay("CODE:TAG POS=1 TYPE=INPUT:TEXT FORM=ACTION:? ATTR=NAME:login
CONTENT=poke123");
iimPlay("CODE:SET !ENCRYPTION NO");
iimPlay("CODE:TAG POS=1 TYPE=INPUT:PASSWORD FORM=ACTION:? ATTR=NAME:password
CONTENT=0000");
iimPlay("CODE:TAG POS=1 TYPE=INPUT:SUBMIT FORM=ACTION:? ATTR=NAME:log");
iimPlay("CODE:TAG POS=2 TYPE=A ATTR=TXT:Votez");
iimPlay("CODE:TAG POS=2 TYPE=IMG ATTR=SRC:http://www.rpg-paradize.com/vote.gif");
iimPlay("CODE:TAG POS=2 TYPE=IMG ATTR=SRC:http://www.topwow.fr/bouton.gif");
iimPlay("CODE:TAG POS=2 TYPE=IMG
ATTR=SRC:http://www.gowonda.com/vote.gif");
Bon là on a rien gagner je vous l'accorde mais maintenant on peu utiliser des variables (plus que les
3 malheureuses inclus dans iim) ce qui va nous permettre de clarifier tout ça
Var login="poke123";
var pass="0000";
iimPlay("CODE:URL
iimPlay("CODE:TAG
CONTENT="+login);
iimPlay("CODE:SET
iimPlay("CODE:TAG
CONTENT="+pass);
iimPlay("CODE:TAG
iimPlay("CODE:TAG
GOTO=http://darkmoon-online.net/?");
POS=1 TYPE=INPUT:TEXT FORM=ACTION:? ATTR=NAME:login
!ENCRYPTION NO");
POS=1 TYPE=INPUT:PASSWORD FORM=ACTION:? ATTR=NAME:password
POS=1 TYPE=INPUT:SUBMIT FORM=ACTION:? ATTR=NAME:log");
POS=2 TYPE=A ATTR=TXT:Votez");
iimPlay("CODE:TAG POS=2 TYPE=IMG ATTR=SRC:http://www.rpg-paradize.com/vote.gif");
iimPlay("CODE:TAG POS=2 TYPE=IMG ATTR=SRC:http://www.topwow.fr/bouton.gif");
iimPlay("CODE:TAG POS=2 TYPE=IMG ATTR=SRC:http://www.gowonda.com/vote.gif");
Plus clair mais toujours fixe et si on proposait une input comme seul javascript en a le secret pour
rendre le code adaptable (a mois que vous vouliez voter pour moi cela va de soit ^^)
avant de regarder la solution tentez de le faire vous même voici la fonction d'inputbox
window.prompt("le message a afficher")
Var login=window.prompt("bonjours veuillez entrer votre login");
var pass=window.prompt("et maintenant veuillez entrer votre mot de passe");
iimPlay("CODE:URL GOTO=http://darkmoon-online.net/?");
iimPlay("CODE:TAG POS=1 TYPE=INPUT:TEXT FORM=ACTION:? ATTR=NAME:login
CONTENT="+login);
iimPlay("CODE:SET !ENCRYPTION NO");
iimPlay("CODE:TAG POS=1 TYPE=INPUT:PASSWORD FORM=ACTION:? ATTR=NAME:password
CONTENT="+pass);
iimPlay("CODE:TAG POS=1 TYPE=INPUT:SUBMIT FORM=ACTION:? ATTR=NAME:log");
iimPlay("CODE:TAG POS=2 TYPE=A ATTR=TXT:Votez");
iimPlay("CODE:TAG POS=2 TYPE=IMG ATTR=SRC:http://www.rpg-paradize.com/vote.gif");
iimPlay("CODE:TAG POS=2 TYPE=IMG ATTR=SRC:http://www.topwow.fr/bouton.gif");
iimPlay("CODE:TAG POS=2 TYPE=IMG ATTR=SRC:http://www.gowonda.com/vote.gif");
Cool on a un code qui vote a toute vitesse une seul fois on arrange ça ? Je vous donne des indices
pour que vous puissiez le faire vous même après vous pourrez regarder la solution
-la commande imacro WAIT seconds=temps en seconde sert a attendre un temps déterminer
-la commande Javascript while (1) {instruction} permet de faire une boucle infini
-en général les votes ne sont pas comptabilisé si vous cliquez sur les trois liens trop rapidement
-les trois dernière ligne représentes respectivement le vote pour rpg paradize, le vote pour top wow
et le vote pour gowonda
pas trouvé ? Tant pis voilà la solution:
Var login=window.prompt("bonjours veuillez entrer votre login");
var pass=window.prompt("et maintenant veuillez entrer votre mot de passe");
while (1){
iimPlay("CODE:URL GOTO=http://darkmoon-online.net/?");
iimPlay("CODE:TAG POS=1 TYPE=INPUT:TEXT FORM=ACTION:? ATTR=NAME:login
CONTENT="+login);
iimPlay("CODE:SET !ENCRYPTION NO");
iimPlay("CODE:TAG POS=1 TYPE=INPUT:PASSWORD FORM=ACTION:? ATTR=NAME:password
CONTENT="+pass);
iimPlay("CODE:TAG POS=1 TYPE=INPUT:SUBMIT FORM=ACTION:? ATTR=NAME:log");
iimPlay("CODE:TAG POS=2 TYPE=A ATTR=TXT:Votez");
iimPlay("CODE:WAIT seconds=5");
iimPlay("CODE:TAG POS=2 TYPE=IMG ATTR=SRC:http://www.rpg-paradize.com/vote.gif");
iimPlay("CODE:WAIT seconds=5");
iimPlay("CODE:TAG POS=2 TYPE=IMG ATTR=SRC:http://www.topwow.fr/bouton.gif");
iimPlay("CODE:WAIT seconds=5");
iimPlay("CODE:TAG POS=2 TYPE=IMG ATTR=SRC:http://www.gowonda.com/vote.gif");
iimPlay("CODE:WAIT seconds=7200");
}
Et voilà un jouli bot vote pour darkmoon vous pouvez aussi l'améliorer en affichant en temps réel le
nombre de vote effectué depuis le début. Je vous aide encore un petit peu:
la commande Javascript iimDisplay( "message") permet d'afficher un message dans la boite d'info
de Js
l'operateur Javascript ++ permet d'incrémenter une valeur de 1
vous n'avez pas trouver ? Poke a la rescousse !!
var login=window.prompt("bonjours veuillez entrer votre login");
var pass=window.prompt("et maintenant veuillez entrer votre mot de passe");
var count=0;
while (1){
iimPlay("CODE:URL GOTO=http://darkmoon-online.net/?");
iimPlay("CODE:TAG POS=1 TYPE=INPUT:TEXT FORM=ACTION:? ATTR=NAME:login
CONTENT="+login);
iimPlay("CODE:SET !ENCRYPTION NO");
iimPlay("CODE:TAG POS=1 TYPE=INPUT:PASSWORD FORM=ACTION:? ATTR=NAME:password
CONTENT="+pass);
iimPlay("CODE:TAG POS=1 TYPE=INPUT:SUBMIT FORM=ACTION:? ATTR=NAME:log");
iimPlay("CODE:TAG POS=2 TYPE=A ATTR=TXT:Votez");
iimPlay("CODE:WAIT seconds=5");
iimPlay("CODE:TAG POS=2 TYPE=IMG ATTR=SRC:http://www.rpg-paradize.com/vote.gif");
count++;
iimPlay("CODE:WAIT seconds=5");
iimPlay("CODE:TAG POS=2 TYPE=IMG ATTR=SRC:http://www.topwow.fr/bouton.gif");
count++;
iimPlay("CODE:WAIT seconds=5");
iimPlay("CODE:TAG POS=2 TYPE=IMG ATTR=SRC:http://www.gowonda.com/vote.gif");
count++;
iimPlay("CODE:WAIT seconds=7200");
iimDisplay( ""+count+" votes ont été effectué depuis le lancement du bot");
}
Et voilà le bot est fini maintenant place a l'évaluation de vos compétences
si vous avez regarder la solution 3 fois:
vous n'avez pas compris
si vous avez regarder la solution 2 fois:
vous avez presque compris on est pas loin du but !
si vous avez regarder la solution 1 fois:
vous avez parfaitement compris plus qu'a nous sortir un beau bot tout neuf !
si vous avez regarder la solution 0 fois:
pourquoi avoir lu ce tuto vous savez déjà tout roulez jeunesse !