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

  FORUM HardWare.fr
  Programmation
  PHP

  réalisation d'un bot: automatisation d'une requête

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Précédente
Auteur Sujet :

réalisation d'un bot: automatisation d'une requête

n°1158721
pmusa
▓▓▓▓▓▓▓
Posté le 25-07-2005 à 09:53:41  profilanswer
 

Bonjour,
 
Dans le cadre d'un petit délire personnel (projet très secret confidentiel  :o ), j'aimerai créer un bot qui automatisera une tache sur un site que je consulte assez regulièrement.
Je me suis abondamment documenté et ça tourner principalement autour d'une seul fonction: fsockopen.
en revanche cette page contient un formulaire, suivi d'un AUTRE formulaire (qui à besoin du premier) et, enfin ( :sweat: ), une page de traitement.
J'en ai donc déduis qu'il fallait forcément envoyer (et peut-être recevoir non?  :??: ) des headers POST et/ou GET... or je ne sais pas comment on se débrouille.  :(  
Ensuite il me sera necessaire de récuperer dans le 2ème formulaire le lien d'une image qui pointe sur http://www.lesite.net/index.php?ru [...] wet=tarzan
J'ai besoin de récuperer uniquement la valeur de $cat, ici 645123 et l'envoyer ensuite en POST pour la page de traitement.
 
Pourriez-vous me dresser la liste des fonctions qui me seront capitales? pour le reste, je saurai me demerder. et au besoin je repasserai  [:aras qui rit]  
 
merci à vous.  :jap:


Message édité par pmusa le 25-07-2005 à 09:55:44
mood
Publicité
Posté le 25-07-2005 à 09:53:41  profilanswer
 

n°1158724
cesarr89
Posté le 25-07-2005 à 09:55:31  profilanswer
 

Et cURL ca pourrait pas te servir par hasard  :??:

n°1158728
pmusa
▓▓▓▓▓▓▓
Posté le 25-07-2005 à 09:58:23  profilanswer
 

je connais pas CURL et mon serveur ne gère pas de toute façon.  [:airforceone]  
je sais que ça peut se réaliser via PHP, j'ai lu des sources de script. ( en POO :/ )
 
 :jap:

n°1158730
cesarr89
Posté le 25-07-2005 à 09:59:19  profilanswer
 

non mais cURL c'est juste 1 ou 2 include dans ton PHP donc pourquoi tu me raconte que ton serveur gère pas?

n°1158755
pmusa
▓▓▓▓▓▓▓
Posté le 25-07-2005 à 10:15:11  profilanswer
 

bah je dois surement confondre avec un autre.  :??: mais je crois que j'peux pas utiliser CURL sur mon serveur.
de toute façon je connais pas ce truc, oublie.  [:bambookillah]  
 
moi je veux me le faire avec du php.  ;)

n°1158759
cesarr89
Posté le 25-07-2005 à 10:16:17  profilanswer
 

Bah oui mais justement, avec cURL tu le fais toujours en PHP.
Tu dois pas comprendre ce qu'est cURL.
 
Edit: tu peux même compiler PHP avec cURL, du coup ta plus de include à faire.
 
Edit2: http://www.nexen.net/docs/php/annotee/curl.intro.php


Message édité par cesarr89 le 25-07-2005 à 10:19:09
n°1158787
pmusa
▓▓▓▓▓▓▓
Posté le 25-07-2005 à 10:37:35  profilanswer
 

ouè mais non, je connais pas ce truc. :/ désolé de t'embêter.  :) Si je le fait avec CURL je vais poser plein de questions. moi j'veux péachpèèè.  :cry:  
 
 ;)

n°1158789
cesarr89
Posté le 25-07-2005 à 10:41:26  profilanswer
 
n°1158809
pmusa
▓▓▓▓▓▓▓
Posté le 25-07-2005 à 10:57:50  profilanswer
 

non.  :(  
 

Code :
  1. <?php
  2. $fp = fsockopen("http://www.lesite.com/dir/formulaire2.php", 80, $errno, $errstr, 30);
  3. if (!$fp) {
  4.     echo "$errstr ($errno)<br />\n";
  5. } else {
  6.     $out = "POST / HTTP/1.1\r\n";
  7.     $out .= "Connection: Close\r\n\r\n";
  8.     fwrite($fp, $out);
  9.     while (!feof($fp)) {
  10.         echo fgets($fp, 128);
  11.     }
  12.     fclose($fp);
  13. }
  14. ?>


 
là, avec $out, j'aimerai lui envoyer une variable en method POST: $id, aui aurai la valeur 123
 
comment procéder?
 
$out .= "id: 123\r\n\r\n";
 :??:  :D  
 
 
merci

n°1158813
cesarr89
Posté le 25-07-2005 à 11:00:22  profilanswer
 

Bah utilise le lien que je t'ai filé, c'est obligé que ca te convienne là

mood
Publicité
Posté le 25-07-2005 à 11:00:22  profilanswer
 

n°1158931
pmusa
&#9619;&#9619;&#9619;&#9619;&#9619;&#9619;&#9619;
Posté le 25-07-2005 à 12:03:16  profilanswer
 

non ça n'a rien à voir.  [:airforceone]

n°1158936
cesarr89
Posté le 25-07-2005 à 12:07:47  profilanswer
 

Si tu le dis....dans ce cas là je peux pas t'aider plus.

n°1158943
pmusa
&#9619;&#9619;&#9619;&#9619;&#9619;&#9619;&#9619;
Posté le 25-07-2005 à 12:18:43  profilanswer
 

merci quand même hein.  :jap:

n°1158944
cesarr89
Posté le 25-07-2005 à 12:19:35  profilanswer
 

de rien.

n°1159513
pmusa
&#9619;&#9619;&#9619;&#9619;&#9619;&#9619;&#9619;
Posté le 25-07-2005 à 21:05:49  profilanswer
 

rebonsoir,  :jap:  
 
pour l'instant je me demerde un peu et j'essaye de mettre en oeuvre tout le charabia que j'ai acquis en poo php. :/
j'ai fais ça sur papier et je vais bientôt le saisir avec mon editeur de texte. je suis asses satisfait.
 
l'ultime problème que je me pose:
 
 
étant donné que je dois accéder à 3 pages au total, et que chacune dépend de la précedente (je rappel l'ordre: 1. indentification via login espace membre, 2.soumission d'un formulaire, 3. accès à la seconde partie du formulaire pour valider avant de recuperer le lien d'une image qui y réside),
je me demande donc comment les synchroniser.  :heink: en fait pour acceder au formulaire je dois être LOGGUE, et si j'envoie des entêtes à la pages d'identification puis à la page du formulaire, il me dit que je suis tjrs pas connecté.  :sweat:  
 
dois-je utiliser la meme ressource issue du fsockopen pour accéder au formulaire pour qu'il "mémorise" mes identifiants et passe au traitement du formulaire??

 
ptain chui pas clair.  :D  
dites moi au moi si je me fais comprendre.  :(  
 
A+

n°1159519
gatsusat
Posté le 25-07-2005 à 21:08:20  profilanswer
 

perso ca ne passera jamais ton système, puisque si le site utilise le système des cookies et tout le tralala, en PHP tu n'arriveras jamais à obtenir ce que tu recherches à faire

n°1159559
micfont999
Simplement Moi
Posté le 25-07-2005 à 21:59:17  profilanswer
 

Soit généralement des bot en C comme le font les modo sur ce site :)

n°1159754
pmusa
&#9619;&#9619;&#9619;&#9619;&#9619;&#9619;&#9619;
Posté le 26-07-2005 à 08:01:28  profilanswer
 

Si si je peux "renseigner" mon cookie au site.  :p  
via le header:
Cookie: mavar1=mavaleur1; mavar2=mavaleur2; mavarN=mavaleurN;
 
il suffit juste de savoir quelles sont les couples clef/valeur que ledit site t'envoie (ce qui est ok en ce qui me concerne) et ça tourne.  :jap:  
 
j'ai fait des tests là enocre et j'arrive à me connecter sans problème sur mon espace membre.  :sol: par contre je ne sais pas comment enchainer l'accès au formulaire. :/ si il faut utiliser la même resource du socket sans la fermet ou peut-être juste essayer d'envoyer mes cookies, etc...
 
personne n'aurait une idée??  :??:

n°1160739
pmusa
&#9619;&#9619;&#9619;&#9619;&#9619;&#9619;&#9619;
Posté le 26-07-2005 à 20:26:38  profilanswer
 

ça peut vous aider si je post le code? (up caché)

n°1160749
micfont999
Simplement Moi
Posté le 26-07-2005 à 20:40:51  profilanswer
 

va y toujours ^^

n°1160752
pmusa
&#9619;&#9619;&#9619;&#9619;&#9619;&#9619;&#9619;
Posté le 26-07-2005 à 20:45:02  profilanswer
 

donnez moi... 60 minutes.  :whistle:  
 
 :jap:

n°1160794
pmusa
&#9619;&#9619;&#9619;&#9619;&#9619;&#9619;&#9619;
Posté le 26-07-2005 à 22:01:26  profilanswer
 

Code :
  1. <?php
  2. class socket{
  3. var $serveur;
  4. var $port;
  5. var $page; #page à traiter
  6. var $methode; #GET ou POST
  7. var $moncookie; #couple clef/valeur de mon cookie
  8. var $post; #requete POST à soumettre
  9. var $headers = array(); #headers reçus
  10. var $cookie_recep = array(); #cookies reçus
  11. function __construct($serveur,$port){
  12. $this->serveur = $serveur;
  13. $this->port = $port;
  14. echo "constructeur ok!<br />\r\n";
  15. }
  16. function url_post($page,$vars){
  17. $this->page = $page;
  18. $this->methode = 'POST';
  19. echo "url_post ok!<br />\r\n";
  20. $this->req($vars);
  21. }
  22. function req($vars){
  23. $req='';
  24. if(is_array($vars)){
  25.  foreach($vars as $clef => $valeur){
  26.  $req .= urlencode($clef).'='.urlencode($valeur).'&';
  27. }
  28. $req = substr($req,0,-1); #pour kicker le char & en fin d'url
  29. }
  30. else{
  31. $req = $vars;}
  32. $this->post = $req;
  33. echo "req ok!<br />\r\n";
  34. }
  35. function envoi_req(){
  36. $envoi= "$this->methode $this->page HTTP/1.1\n" .
  37.  "Host: {$this->serveur}\n" .
  38.  "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; fr-FR; rv:1.7.10) Gecko/20050717 Firefox/1.0.6
  39. \n" .
  40.  "Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
  41. \n" .
  42.  "Accept-Language: fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3\n";
  43. if(isset($this->moncookie)){
  44. $envoi .= "Cookie: ";
  45. foreach($this->moncookie as $clef => $valeur){
  46. $envoi .= "$clef={$valeur}; ";}
  47. }
  48. $envoi = substr($req,0,-1); #kicker le char ;
  49. $envoi .= "\r\n";
  50. if(isset($this->post)){
  51.  $envoi .=   "Content-type : application/x-www-form-urlencoded\n".
  52.     'Content-Length : ' . strlen($this->post) . "\n";
  53. }
  54. echo "envoi req ok!<br />\r\n";
  55. return $envoi . "\r\n";
  56. }
  57. function definir_moncookie($array){
  58. foreach($array as $clef => $valeur){
  59. $this->moncookie[$clef] = $valeur;}
  60. echo "envoi cook ok!<br />\r\n";
  61. }
  62. function execute(){
  63. if(!$fp = @fsockopen($this->serveur,$this->port,$errno,$errdescr)){
  64. echo 'echec connexion à '. $this->serveur . ' via le port ' . $this->port . '. Erreur récupérée: ' . $errno . ' - ' . $errdescr;
  65. return false;
  66. }
  67. else{
  68. echo "connex ok!<br />\r\n";
  69. socket_set_timeout($fp,30);
  70. $req = $this->envoi_req();
  71. fputs($fp,$req);
  72. while(!feof($fp)):
  73. $ligne = fgets($fp,4096);
  74. #echo $ligne;
  75. if(preg_match("#HTTP/([a-zA-Z0-9]+) ([0-9]{3}) (.+)#", trim($ligne), $infos)){
  76. $this->headers['http-version'] = $infos[1];
  77.  if(in_array((int)$infos[2], array(100, 200, 201, 302, 307))){
  78.  echo "requête effectuée avec succès.<br />\r\n"; #ouf
  79.  }
  80. }
  81. if(preg_match('`([^:]+?) :\s*(.+)`', $ligne, $get)){
  82. if(isset($this->headers[strtolower($get[1])])){
  83.  if(is_array($this->headers[strtolower($get[1])])){
  84.  $this->headers[strtolower($get[1])][] = trim($get[2]);
  85.  }
  86.  else{
  87.  $this->headers[strtolower($get[1])] = array($this->headers[strtolower($get[1])], trim($get[2]));
  88.  }
  89. }
  90. else{
  91. $this->headers[strtolower($get[1])] = trim($get[2]);
  92. }
  93. }
  94. endwhile;
  95. if(isset($this->headers['set-cookie'])){
  96. foreach($this->headers['set-cookier'] as $valeur){
  97.  if(preg_match('`([^=]+?)=([^;]*)`', $valeur, $recup)){
  98.  $this->recep_cookie[$recup[1]] = array('valeur' => $recup[2]);
  99.  }
  100.  if(preg_match('`expires=(.+)`', $valeur, $enreg)){
  101.  $this->recep_cookie[$recup[1]]['expires'] = strtotime($enreg[1]);
  102.  }
  103. }
  104. }
  105. }
  106. }
  107. }
  108. ?>


 
je DEBUTE la POO, soyez indulgent.  :D


Message édité par pmusa le 30-07-2005 à 10:13:02
n°1160882
esox_ch
Posté le 26-07-2005 à 23:25:44  profilanswer
 

Et c'est quoi le probleme?


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°1162017
pmusa
&#9619;&#9619;&#9619;&#9619;&#9619;&#9619;&#9619;
Posté le 27-07-2005 à 17:51:34  profilanswer
 

le problème c'est que j'arrive à me connecter sans problème ( :D ) à mon interface membre, mais qu'après je ne peux pas accéder au formulaire sous pretexte que je ne suis pas loggué.  :pt1cable:  
bizarre, n'est-il pas?

n°1162139
pmusa
&#9619;&#9619;&#9619;&#9619;&#9619;&#9619;&#9619;
Posté le 27-07-2005 à 19:32:25  profilanswer
 

je me suis expliqué clairement, j'ai montrer des efforts de mon côté, en POO qui plus est, alors pitié... sortez moi de là.  :D  :(

n°1162142
esox_ch
Posté le 27-07-2005 à 19:37:55  profilanswer
 

Ce que je fais quand ce genre de truc merde :  
Je fais le parcours avec FF une fois en enregistrant tout les packets envoyés avec ethereal ou un plugin, et apres je comparre a ce que mon bot envoie ... A la fin tu t'en sors toujours :D


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°1162167
pmusa
&#9619;&#9619;&#9619;&#9619;&#9619;&#9619;&#9619;
Posté le 27-07-2005 à 20:02:35  profilanswer
 

ah ué pas kon. http://www.designlaboratory.net/smileyyyy/heink.gif
t'as des noms de plugins là? http://www.designlaboratory.net/smileyyyy/slurpt.gif

n°1162183
esox_ch
Posté le 27-07-2005 à 20:31:27  profilanswer
 

Je crois que c'est LiveHTTPHeaders ou un truc du genre ...


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°1162184
ritzle
Posté le 27-07-2005 à 20:33:09  profilanswer
 

micfont999 a écrit :

Soit généralement des bot en C comme le font les modo sur ce site :)


qu'est ce que tu veux dire ?

n°1162195
esox_ch
Posté le 27-07-2005 à 20:44:18  profilanswer
 

Que plusieurs modo (et non modo) ont des robot qui parcourrent le forum ...


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°1162211
pmusa
&#9619;&#9619;&#9619;&#9619;&#9619;&#9619;&#9619;
Posté le 27-07-2005 à 20:56:57  profilanswer
 

ok je vais téléchargé ça... en même temps que FF d'ailleursalors. :/ chui pas sur mon pc (HS)
 
en attendant, grosse connerier qui m'empêche de progresser:
 
Bad Request
Your browser sent a request that this server could not understand.
client sent HTTP/1.1 request without hostname (see RFC2616 section 14.23): /mon_chemin/absolument_correct_pourtant/la_page.php
 
 
pmusa needs you.  :D  
http://stoptheaclu.org/images/I-Want-You.jpg
 
 

n°1162217
ritzle
Posté le 27-07-2005 à 21:06:03  profilanswer
 

esox_ch a écrit :

Que plusieurs modo (et non modo) ont des robot qui parcourrent le forum ...


et c'est pour faire quoi ces robots ?

n°1162223
pmusa
&#9619;&#9619;&#9619;&#9619;&#9619;&#9619;&#9619;
Posté le 27-07-2005 à 21:18:11  profilanswer
 

pour éviter qu'on dérive du sujet et qu'on m'aide à tourver une soluce.  :hello:  
 
supeyyr le plug-in. [:dawa]
 
j'envoi rien apparemment... 'comprend plus rien.  [:antp]

n°1162296
esox_ch
Posté le 27-07-2005 à 22:37:13  profilanswer
 

Regarde dans le RFC correspondant ... a mon avi tu as foiré ta requete de GET :p


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°1162317
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 27-07-2005 à 23:00:52  profilanswer
 

Ethereal bordel, Ethereal !!!
ce genre de bug est un truc qui se torche en 20 secondes chrono !!


---------------
J'ai un string dans l'array (Paris Hilton)
n°1162319
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 27-07-2005 à 23:01:45  profilanswer
 

pmusa >> tu prends mon plugin winamp dans ma signature, tu l'installes, et tu utilises Ethereal pour voir ce qu'il envoie. ça te fera un exemple d'utilisation


---------------
J'ai un string dans l'array (Paris Hilton)
n°1162364
micfont999
Simplement Moi
Posté le 27-07-2005 à 23:43:37  profilanswer
 

Harkonnen a écrit :

pmusa >> tu prends mon plugin winamp dans ma signature, tu l'installes, et tu utilises Ethereal pour voir ce qu'il envoie. ça te fera un exemple d'utilisation


 
Pas con l'histoire de ethereal, j'y aurais pas pensé, maintenant reste à savoir déchiffrer toutes ces petites données:)

n°1162401
esox_ch
Posté le 28-07-2005 à 00:07:56  profilanswer
 

Harkonnen a écrit :

Ethereal bordel, Ethereal !!!
ce genre de bug est un truc qui se torche en 20 secondes chrono !!


 
Genre je lui ai proposé il y a 5 posts  [:adodonicoco]


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°1162415
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 28-07-2005 à 00:35:33  profilanswer
 

esox_ch a écrit :

Genre je lui ai proposé il y a 5 posts  [:adodonicoco]


parce que tu crois que je lis tout ? :o

n°1162417
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 28-07-2005 à 00:37:03  profilanswer
 

micfont999 a écrit :

Pas con l'histoire de ethereal, j'y aurais pas pensé, maintenant reste à savoir déchiffrer toutes ces petites données:)


bah, y'a aucune difficulté :??:

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Précédente

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

  réalisation d'un bot: automatisation d'une requête

 

Sujets relatifs
Problème de requete sql..nécessité d'une requete récursive??[Résolu] simple requete en VBA :)
Pb de calcul avec une requête SQLrequete group by ?
[Access] Requête à partir d'une zone de texte (Résolu)problème récupération de donnée après une requete
[ resolu - sql help ] requete sql not inRequete de suppression en cascade
ACCESS requete SQLProbleme dans requete sql
Plus de sujets relatifs à : réalisation d'un bot: automatisation d'une requête


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