Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
842 connectés 

  FORUM HardWare.fr
  Programmation
  Divers

  Les bots : programmation, pièges, principes, etc....

 


 Mot :   Pseudo :  
 
 Page :   1  2  3  4  5  6  7
Page Précédente
Auteur Sujet :

Les bots : programmation, pièges, principes, etc....

n°390237
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 12-05-2003 à 11:55:47  profilanswer
 

Vu que le sujet commençait à polluer blabla@prog (c'est vrai quoi, parler de programmation dans ce topic, faut pas exagérer :d), j'ouvre ce topic pour ceux qui souhaitent parler des bots qu'ils développent actuellement.
 
Au delà de l'aspect purement fun (les 3 projets actuellement en cours visent surtout à scanner le forum pour poster le premier post après la page 999 pour avoir le split de blablaz@prog), la programmation d'un bot se révèle formatrice à plus d'un titre. En effet, les concepts suivants sont abordés :
 
- multithreading,
- programmation réseau, haut et bas niveau,
- connaissance du protocole HTTP,
- création d'une interface graphique multithreadée,
- création de divers outils d'administration et de supervision
- création d'une interface d'administration HTML pour administrer le bot à distance,
- etc...
 
La programmation d'un bot est donc quelque chose d'assez formateur sur pas mal de plans.
 
A ce jour, 3 projets existent :
 
- Celui de benou, programmé en java, et qui est le seul actuellement à avoir prouvé son fonctionnement (et quel fonctionnement ! il est même parvenu à créer une page 26 :d)
- Celui de kadreg, programmé en C++/QT
- Le mien, programmé en C# (une version 100% assembleur existe, mais sa maintenance est une horreur). Pas encore totalement finalisé, et pas mal buggé. Je paye ma méconnaissance du framework .NET (mais quel meilleur moyen d'apprendre que celui ci ?)
 
Donc voilà, ce topic est dédié à toute question sur ces 3 projets, aussi bien de la part de leurs auteurs que des autres :)

mood
Publicité
Posté le 12-05-2003 à 11:55:47  profilanswer
 

n°390246
bobuse
Posté le 12-05-2003 à 12:05:42  profilanswer
 

En ce qui concerne l'administration, moi j'aurai plus pensé à un dialogue par IRC avec le bot. D'autant plus qu'il existe une superbe API en Java : jircBot (jibbles.org)
 
Je pensais également à ajouter une surveillence du contenu des topics, du genre detecteur de newbie qui demande une question mille fois posée, ou qui est dans une des FAQ ...
 
En parlant de threads, vous en avez combien et pour quels tâches ?


Message édité par bobuse le 12-05-2003 à 12:07:01

---------------
get amaroK plugin
n°390250
kadreg
profil: Utilisateur
Posté le 12-05-2003 à 12:09:14  profilanswer
 

bobuse a écrit :


En parlant de threads, vous en avez combien et pour quels tâches ?


 
5 qui lisent le forum. Le premier qui trouve qu'il peut poster (999 réponses) prends le droit de poster (section sous mutex) pour poster. Les suivants ne pourront de toutes façon pas prendre ce droit et irons donc roupiller en découvrant que le topic à moins de 500 réponses.


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°390258
antp
Super Administrateur
Champion des excuses bidons
Posté le 12-05-2003 à 12:14:05  profilanswer
 

On a quand même de beaux exemples de ce qui peut arriver :
- un post de trop dans une partie du topic : http://forum.hardware.fr/forum2.ph [...] 10&page=26
- un loserbot : http://forum.hardware.fr/forum2.ph [...] 25#t383507
:D


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°390266
kadreg
profil: Utilisateur
Posté le 12-05-2003 à 12:20:51  profilanswer
 

J'ai le prix du bot le plus laid [:yaisse2]
 
 http://rincevent.dyndns.org/toto/qbot.jpg


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°390273
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 12-05-2003 à 12:25:27  profilanswer
 

Pour le dialogue avec le bot, lorill avait suggéré un moyen encore plus fun : jabber ! J'ai vu qu'il existait un wrapper de jabber pour .NET, quand mon bot sera débuggé je tacherais de créer une interface jabber. Trop bon : je suis au boulot, et je reçois un message instantané de mon bot me disant que le split a eu lieu [:yaisse2]
 
Pour mes threads, j'en ai 4 pour la surveillance du forum, et 1 pour le post du message.
 
J'extrais le n° du post en cours via une regexp, et je met mes threads de surveillance en pause selon cette table : n < 500 => Thread.Sleep(30000), 501 < n <= 900 => Thread.Sleep(10000), 901 < n <=950 => Thread.Sleep(5000), n > 950 => Thread.Sleep(1000)

n°390276
mareek
Et de 3 \o/
Posté le 12-05-2003 à 12:26:33  profilanswer
 

Harkonnen a écrit :

Au delà de l'aspect purement fun (les 3 projets actuellement en cours visent surtout à scanner le forum pour poster le premier post après la page 999 pour avoir le split de blablaz@prog)

c'est sûr qu'il risque pas de marcher si tu attends la page 999 pour poster [:boidleau]


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
n°390279
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 12-05-2003 à 12:27:58  profilanswer
 


[:boiteakaola]


Message édité par Harkonnen le 12-05-2003 à 12:28:22
n°390281
kadreg
profil: Utilisateur
Posté le 12-05-2003 à 12:29:06  profilanswer
 

Au fait, comment vous cherchez le nombre de posts du topic ? Sur son nom ou son Id ? Perso, je cherche le premier topic appelé "BlaBla@Programmation".


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°390283
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 12-05-2003 à 12:30:29  profilanswer
 


Y a [:shooter], aussi :o


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
mood
Publicité
Posté le 12-05-2003 à 12:30:29  profilanswer
 

n°390285
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 12-05-2003 à 12:32:01  profilanswer
 

kadreg a écrit :

Au fait, comment vous cherchez le nombre de posts du topic ? Sur son nom ou son Id ? Perso, je cherche le premier topic appelé "BlaBla@Programmation".


Sur son ID. Je rentre manuellement le n° du topic dans un champ texte après chaque split. Ca évite au bot de se faire avoir avec ce genre de ficelle : :whistle:
 
http://forum.hardware.fr/forum2.php3?post=36512&cat=10


---------------
J'ai un string dans l'array (Paris Hilton)
n°390289
mareek
Et de 3 \o/
Posté le 12-05-2003 à 12:35:21  profilanswer
 

kadreg a écrit :

Au fait, comment vous cherchez le nombre de posts du topic ? Sur son nom ou son Id ? Perso, je cherche le premier topic appelé "BlaBla@Programmation".

si tu te base sur l'ID, t'es obligé de remettre les infos à jour à chaque split, spa top :/
 
A mon avis, le mieux est de se baser sur le nom du topic, du createur du topic et eventuellement de la presence de l'asterisque dans le nombre de pages (pour éviter les petits malins qui postent des topics appelés "blabla@prog 999" :whistle: ).


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
n°390324
lorill
Posté le 12-05-2003 à 13:00:52  profilanswer
 

Harkonnen a écrit :

Pour le dialogue avec le bot, lorill avait suggéré un moyen encore plus fun : jabber !  


a ce propos, pour ceux que ca interesse :
un bot en python par jabber. Pas le même principe que les botsASplit, c'est juste pour causer sur le forum via jabber.
 
http://equinoxe.dnsalias.org/PERSO/pyqaplop/
 
pas finalisé et le sera jamais, mais a titre educatif ca peut etre utile.
 
le principe : un user jabber pour le bot. On lui envoie un message d'abonnement au topic. Ensuite, chaque nouveau message est envoyé aux abonnés, et un message envoyé au bot est posté sur le topic avec le compte de l'abonné.

n°391281
kadreg
profil: Utilisateur
Posté le 13-05-2003 à 08:29:38  profilanswer
 

Bon, ce con a planté dans la journée d'hier. Aujourd'hui, je le relance sous debugger pour essayer de comprendre le pb, mais s'il ne plante que lorsque je suis parti bosser, c'est pas gagné ...


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°391296
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 13-05-2003 à 08:45:24  profilanswer
 

Moi j'ai cassé le moteur et je l'ai entièrement refait.
 
Avant :
- 4 threads qui surveillaient le post 999
- Dés qu'un des threads l'avait trouvé, il envoyait un évènement au thread principal qui postait via un 5eme thread  
 
Inconvénient majeur : mon thread principal était bloqué en attendant que l'évènement se produise et me bouffait la quasi totalité des ressources
 
Maintenant :
- 4 threads qui surveillent le post 999
- Dés que le post est trouvé, le thread qui l'a trouvé poste le message via un 5eme thread.
- Je m'assure qu'aucun autre thread ne poste via un mutex : dés que le post 999 est trouvé, le thread prend le mutex et ne le libère qu'une fois le message posté. Ainsi, même si un autre thread détecte le post 999 (au cas ou le message ne serait pas encore posté), il ne pourra pas poster tant qu'il n'aura pas le mutex.
 
Codage terminé cette nuit [:lorelei]. Ce soir je passe au test.


---------------
J'ai un string dans l'array (Paris Hilton)
n°391364
benou
Posté le 13-05-2003 à 09:40:39  profilanswer
 

je reposte ici mes screens shoot :
http://perso.wanadoo.fr/vieuxbenou/hfr_bot/accueil.gif
http://perso.wanadoo.fr/vieuxbenou/hfr_bot/supervision.gif
http://perso.wanadoo.fr/vieuxbenou/hfr_bot/admin.gif
 
ma technique à moi c'est une liste d'état : chacune a un objectif (surveiller le topic jusqu'à un certain nombre de posts), des moyens (nombre thread) et un phase de repos (sleep).
 
Le bot commence au premier état. Dès qu'un état a atteint son objectif, il libère les ressources (stop les threads) et demande au bot de passer à l'état suivant.
 
Une fois que tous les états ont été effectués (logiquement le dernier objectif est 999), on passe en mode post : un nombre prédeterminé de messages sont postés parraléllement.
 
Le plus chaint ca a été d'assurer que tous les threads se sycnhronise correctement et qu'il n'y ait pas des threads qui continue à fonctionner tous seuls ...
 
ca a surtout été compliqué avec l'interface d'admin : c'est chaud de mofifier en live le nombre de thread d'un état qui est actif :/
 
Là mon bot fonctionne depuis hier à 2h du mat ... (bientot 30h). A priori y a pas de fuite mémoire. Par contre, je crains un peu la phase de posting : j'ai pû la tester qu'un fois en "conditions réelles", et même si j'ai un le split, mon bit était carrément parti en couille !  [:mlc2]


Message édité par benou le 13-05-2003 à 09:41:02

---------------
ma vie, mon oeuvre - HomePlayer
n°391384
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 13-05-2003 à 09:53:00  profilanswer
 

benou a écrit :

Le plus chaint ca a été d'assurer que tous les threads se sycnhronise correctement et qu'il n'y ait pas des threads qui continue à fonctionner tous seuls ...


Je pense qu'on est tous d'accord pour dire que la programmation multithreadée est complexe, surtout quand les threads doivent faire la même chose : on doit alors synchroniser, et ça peut tourner en une galère infame
 

benou a écrit :


ca a surtout été compliqué avec l'interface d'admin : c'est chaud de mofifier en live le nombre de thread d'un état qui est actif :/


Une fois que mon bot fonctionnera correctement (même si j'ai pas le split je m'en fous, je considère qu'il fonctionne correctement s'il me détecte le post 999 et qu'il poste juste après), j'envisage aussi de faire une interface d'admin, mais en réalisant un éxécutable client, pas une interface web. Pour la simple raison que .... je sais pas faire ! [:w3c compliant]
Mon bot se transformera en serveur et je créérai un mini protocole avec quelques commandes (HALT, PAUSE, SLEEP n, etc...) qui me permettront de l'administrer à distance.
Puis, étape suivante : interfacer mon bot avec Jabber pour qu'il me prévienne que le message a été posté !
Le fin du fin serait que le bot m'envoie un SMS via le site de SFR une fois le message posté [:ddr555]


---------------
J'ai un string dans l'array (Paris Hilton)
n°391387
lorill
Posté le 13-05-2003 à 09:53:52  profilanswer
 

benou a écrit :

mon bit était carrément parti en couille !  [:mlc2]


un peu de tenue que diable [:toad666]

n°391389
antp
Super Administrateur
Champion des excuses bidons
Posté le 13-05-2003 à 09:56:20  profilanswer
 

[:rofl] le lapsus


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°391454
benou
Posté le 13-05-2003 à 10:28:10  profilanswer
 

lorill a écrit :


un peu de tenue que diable [:toad666]


[:rofl] [:rofl] [:rofl]
 
il est trop beau celui là :lol:  je le laisse !!!  [:netbios]

n°391460
benou
Posté le 13-05-2003 à 10:29:49  profilanswer
 

Harkonnen a écrit :

j'envisage aussi de faire une interface d'admin, mais en réalisant un éxécutable client, pas une interface web. Pour la simple raison que .... je sais pas faire ! [:w3c compliant]


bha, tu peux faire un petit site ASP ... c'est pas bien compliqué !  
mais bon, faudrait que tu laisses tourner IIS sur ta machine :/

n°391461
bobuse
Posté le 13-05-2003 à 10:30:35  profilanswer
 

Harkonnen a écrit :


 
Le fin du fin serait que le bot m'envoie un SMS via le site de SFR une fois le message posté [:ddr555]


Le plus simple est de t'envoyer un mail sur ton compte SFR ..
Enfin, je sais pas s'il le font chez SFR, mais chez bouygues, j'ai un compte mail, qui m'envoie un SMS avec l'expediteur et l'objet du message. du coup, je peux m'envoyer autant de SMS que je veux et avec juste un pauv' commande mail ;)


---------------
get amaroK plugin
n°391463
bobuse
Posté le 13-05-2003 à 10:31:32  profilanswer
 

benou a écrit :


bha, tu peux faire un petit site ASP ... c'est pas bien compliqué !  
mais bon, faudrait que tu laisses tourner IIS sur ta machine :/


SSH, c'est bien sinon  [:spamafote]


---------------
get amaroK plugin
n°391471
benou
Posté le 13-05-2003 à 10:33:39  profilanswer
 

sinon, harko, vu que t'es partit sur une solution full crosoft, tu sais que tu peux utiliser des API qui permettent d'envoyer des messages à MSN ...

n°391482
kadreg
profil: Utilisateur
Posté le 13-05-2003 à 10:36:25  profilanswer
 

bobuse a écrit :


SSH, c'est bien sinon  [:spamafote]  


 
Moi, ça passe pas du buureau [:spamafote]


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°391486
lorill
Posté le 13-05-2003 à 10:37:06  profilanswer
 

kadreg a écrit :


 
Moi, ça passe pas du buureau [:spamafote]


httptunnel

n°391489
harrysauce
Miaaaooou!
Posté le 13-05-2003 à 10:37:21  profilanswer
 

:jap:
c'est excellent comme projet ca n'empeche!!!!
Peut être que quand j'aurai le temps et que j'aurai fini le projet sur lequel je bosse en ce moment j'essairai de me faire un bot :D
(quoique d'ici là ca sera passible d'un ban :o)

n°391578
kadreg
profil: Utilisateur
Posté le 13-05-2003 à 11:03:08  profilanswer
 

lorill a écrit :


httptunnel


 
faute grave :o


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°391584
benou
Posté le 13-05-2003 à 11:04:08  profilanswer
 

ca va spliter [:totoz]

n°391602
lorill
Posté le 13-05-2003 à 11:05:46  profilanswer
 

kadreg a écrit :


faute grave :o


:??:

n°391609
lorill
Posté le 13-05-2003 à 11:06:15  profilanswer
 

benou a écrit :

ca va spliter


ratai  :whistle:

n°391611
kadreg
profil: Utilisateur
Posté le 13-05-2003 à 11:06:35  profilanswer
 

benou a écrit :

ca va spliter  


 
Ca a splitter, aucun bot n'a marché [:mdr]


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°391624
benou
Posté le 13-05-2003 à 11:10:14  profilanswer
 

tin c'est les boules !! :D
 
en plus le plantage de mon bot a niqué mon site :/
 
j'ai du le stoper avec l'url fatidique du kill_serveur ... mais du coup j'aurais pas les logs [:ruisseau de larmes]
 
keskicépasé  :??:

n°391642
harrysauce
Miaaaooou!
Posté le 13-05-2003 à 11:15:31  profilanswer
 

benou a écrit :

tin c'est les boules !! :D
 
en plus le plantage de mon bot a niqué mon site :/
 
j'ai du le stoper avec l'url fatidique du kill_serveur ... mais du coup j'aurais pas les logs [:ruisseau de larmes]
 
keskicépasé  :??:  


t'as qu'a lui dire de poster au 100eme message par exemple, ca sera moins long que d'attendre le prochain split et tu pourras voir où ca a planté....

n°391674
benou
Posté le 13-05-2003 à 11:28:34  profilanswer
 

harrysauce a écrit :


t'as qu'a lui dire de poster au 100eme message par exemple, ca sera moins long que d'attendre le prochain split et tu pourras voir où ca a planté....


le problème c'est que mon algo a besoin qu'un nouveau topic du même nom passe devant l'ancien de façon à ce que je ne continue pas à poster dessus ... et puis bon... ca me dérange un peu de faire des tests sur blabla ...
 
mais va bien falloir que je trouve le bug :/

n°391677
bobuse
Posté le 13-05-2003 à 11:30:31  profilanswer
 

Bon alors, je vais faire mon gros newbie ... comment on s'y prend pour poster un message ?
 
J'imagine qu'on envoie une requete http POST. On envoie une url d'une page PHP avec des parametres ?


---------------
get amaroK plugin
n°391678
kadreg
profil: Utilisateur
Posté le 13-05-2003 à 11:31:34  profilanswer
 

bobuse a écrit :


J'imagine qu'on envoie une requete http POST. On envoie une url d'une page PHP avec des parametres ?


 
oui. Perso, j'utilise curl (la lib), j'ai juste copier/coller les exemples pour que ça marche


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°391685
bobuse
Posté le 13-05-2003 à 11:34:02  profilanswer
 

kadreg a écrit :


 
oui. Perso, j'utilise curl (la lib), j'ai juste copier/coller les exemples pour que ça marche


okay :D  merci
 
[:neowen]


Message édité par bobuse le 13-05-2003 à 11:34:57

---------------
get amaroK plugin
n°391686
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 13-05-2003 à 11:34:16  profilanswer
 

benou a écrit :

sinon, harko, vu que t'es partit sur une solution full crosoft, tu sais que tu peux utiliser des API qui permettent d'envoyer des messages à MSN ...


pas bête ça [:meganne]
En fait, j'ai choisi le C# pour une simple raison : ne pas me faire chier avec les fuites mémoire. c'était soi ça, soit rajouter un GC à une programmation en C++ (je l'aurais fait aussi avec QT d'ailleurs). Et comme je connais pas Java...
Et puis, faut reconnaitre que le C# est quand même un langage sympa, et gratuit de surcroit. Pour une fois que crosoft fait un truc bien, il faut le dire.


---------------
J'ai un string dans l'array (Paris Hilton)
n°391687
benou
Posté le 13-05-2003 à 11:34:49  profilanswer
 

moi j'ai fait ca à la main avec des sokets ...

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4  5  6  7
Page Précédente

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Divers

  Les bots : programmation, pièges, principes, etc....

 

Sujets relatifs
[ Cherche langage de programmation ] + question PHP --> EXE ?programmation debutant
programmation Pocket PC en C++[projet] Quel langage de programmation utiliser ? (active directory...
Programmation d'un événementProgrammation openGL
programmation HPVEE ...Programmation ASM sur Windows ?
[O Caml] Programmation d'un interpréteur - pb de syntaxeProgrammation GTK Linux , problème de #include
Plus de sujets relatifs à : Les bots : programmation, pièges, principes, etc....


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR