Formulaire Web

Discutez d'informatique ici !
lapras
Membre Transcendant
Messages: 3664
Enregistré le: 01 Jan 2007, 14:00

Formulaire Web

par lapras » 21 Aoû 2007, 13:04

:happy2: Salut,

j'aimerais bien pouvoir, grâce à un programme en C, remplir un formulaire automatiquement, par exemple sur google pouvoir entrer "aaaaa" dans la barre de recherche, et de récupérer le code source HTML renvoyé apres cette action.
j'ai bien sur pensé à libcurl, j'arrive à récupérer le code source, mais je ne sais vraiment pas quelles fonctions utiliser pour envoyer des données dans un formulaire...

Meme en utilisant les socket je vois pas vraiment...


merci d'avance de votre aide !


:ptdr:



anima
Membre Transcendant
Messages: 3762
Enregistré le: 15 Sep 2006, 13:00

par anima » 21 Aoû 2007, 15:08

lapras a écrit::happy2: Salut,

j'aimerais bien pouvoir, grâce à un programme en C, remplir un formulaire automatiquement, par exemple sur google pouvoir entrer "aaaaa" dans la barre de recherche, et de récupérer le code source HTML renvoyé apres cette action.
j'ai bien sur pensé à libcurl, j'arrive à récupérer le code source, mais je ne sais vraiment pas quelles fonctions utiliser pour envoyer des données dans un formulaire...

Meme en utilisant les socket je vois pas vraiment...


merci d'avance de votre aide !


:ptdr:

A vrai dire, si ton formulaire est "trivial", tu peux utiliser lynx pour le faire. Ca, c'est si tu veux utiliser la console linux.

Sinon, pour firefox, il y a un outil encore mieux (!): un plugin appele GreaseMonkey. De la, tu te fais un autre plugin en JavaScript, qui te completera tes formulaires automatiquement (j'en ai code un pour mon ecole pour pouvoir automatiquement s'identifier sur le reseau TOR local)

Joker62
Membre Transcendant
Messages: 5028
Enregistré le: 24 Déc 2006, 21:29

par Joker62 » 21 Aoû 2007, 15:15

ça va être très vite réglé !!! :)

Les edit des pages web ( les formulaires quoi ) n'existent pas en tant qu'objet windows ! Donc en gros, on a pas eu besoin de faire un CreateWindow pour qu'il apparaît !!!
Il n'a aucune instance, aucun handle, donc, il n'existe pas du point de vue informatique !
Impossible donc à partir d'un programme en C de pouvoir écrire à l'intérieur.

Après, peut être à coup de FindWindow récupérer la fenêtre de l'explorateur, de quelques simulation de la touche Tab, et ensuite simuler les touches clavier ! mais ça serait un exploit que ce soit compatible.

Donc voilà not possible :)

lapras
Membre Transcendant
Messages: 3664
Enregistré le: 01 Jan 2007, 14:00

par lapras » 21 Aoû 2007, 15:15

j'ai pas linux, mais en fait dca ne correspond pas à ce que je veux faire, ce n'est pas un simple "connection automatique", c'estr un autre projet en C et jai absolument besoin de récupérer le code source apres que le programme ai rentré lui même les infos dans la/les input du formulaire HTML.

EDIT :
Joker, je sais que c'est possible car je l'ai déja fait en php avec libcurl et les socket, j'entrais les données via la méthode POST.

anima
Membre Transcendant
Messages: 3762
Enregistré le: 15 Sep 2006, 13:00

par anima » 21 Aoû 2007, 15:20

Joker62 a écrit:ça va être très vite réglé !!! :)

Les edit des pages web ( les formulaires quoi ) n'existent pas en tant qu'objet windows ! Donc en gros, on a pas eu besoin de faire un CreateWindow pour qu'il apparaît !!!
Il n'a aucune instance, aucun handle, donc, il n'existe pas du point de vue informatique !
Impossible donc à partir d'un programme en C de pouvoir écrire à l'intérieur.

Après, peut être à coup de FindWindow récupérer la fenêtre de l'explorateur, de quelques simulation de la touche Tab, et ensuite simuler les touches clavier ! mais ça serait un exploit que ce soit compatible.

Donc voilà not possible :)

Pas d'accord. Je ressortirai les sources du programme que j'avais fait pour Image-dream, qui remplissait automatiquement un navigateur "cache" :ptdr:

lapras
Membre Transcendant
Messages: 3664
Enregistré le: 01 Jan 2007, 14:00

par lapras » 21 Aoû 2007, 16:26

:we: J'ai trouvé une page qui "explique" comment faire avec libCurl en C, mais je suis pâs fort en english :cry:

http://curl.haxx.se/lxr/source/docs/examples/postit2.c

Dommage, en plus je ne sais pas exactement quelle variable renvoie le code source, on peut m'aider ? (pour les balèzes en anglais ^^)

flo.com
Membre Relatif
Messages: 235
Enregistré le: 17 Aoû 2007, 21:09

par flo.com » 21 Aoû 2007, 17:45

Anima doit savoir : il a fait ces études en Angleterre ! Logiquement, il est fort !

lapras
Membre Transcendant
Messages: 3664
Enregistré le: 01 Jan 2007, 14:00

par lapras » 21 Aoû 2007, 17:59

bah oué tu crois quoi il est fort notre modérateur :zen: :zen: ^^

Flodelarab
Membre Légendaire
Messages: 6574
Enregistré le: 29 Juil 2006, 16:04

par Flodelarab » 21 Aoû 2007, 18:10


En tout cas ton lien donne du code pour faire de l'upload. Pas du download... désolé

lapras
Membre Transcendant
Messages: 3664
Enregistré le: 01 Jan 2007, 14:00

par lapras » 21 Aoû 2007, 18:17

Oué...
Je cherche, je cherche, mais pas moyen tout ce qu'il y'a sur le sujet sur le net c'est en php, et ca m'interesse pas car je l'ai déja fait en php !

Flodelarab
Membre Légendaire
Messages: 6574
Enregistré le: 29 Juil 2006, 16:04

par Flodelarab » 21 Aoû 2007, 18:27

Utiliser un langage Web pour faire du Web semble plus logique.

Pkoi le C ne me semble pas adéquat ?
Parler, envoyer des données, tout le monde peut le faire. Mais converser ... c autre chose.
Prends les satellites GPS. Je ris quand je vois des gens qui croient ue leur GPS "discutent avec le satellites" .... Le GPS parle et tout le monde ecoute, mais ya pas de discussion.

Pour ton site Web, c pareil.

Pour envoyer une requète HTTP, pas de problème, n'importe quel langage peut le faire. Mais pour recevoir, cela signifie que tu es pret, à l'écoute de ce que tu peux recevoir. Et la c'est une autre paire de manche. Il faudrait que tu sois capable en C++ d'écouter, trier, ce que tu reçois sur le réseau .... c pas pareil du tout.

En clair, toute la partie web était prise en charge par ton navigateur. Si tu le fait en C, tu devras le faire toi même... Bon courage. Tu ne reçois pas qu'une chose.

lapras
Membre Transcendant
Messages: 3664
Enregistré le: 01 Jan 2007, 14:00

par lapras » 21 Aoû 2007, 18:50

Je comprend ton explication.
Mais en fait le C est capable de recevoir du code source venant d'un site web : je l'ai fait.

Donc ca doit etre possible je pense.
En plus je ne suis pas un dieux en C donc je n'arriverai pas a faire tout ça de moi même (et puis même si je pouvais je préfere faire des maths :ptdr: ).

Flodelarab
Membre Légendaire
Messages: 6574
Enregistré le: 29 Juil 2006, 16:04

par Flodelarab » 21 Aoû 2007, 18:56

lapras a écrit:Mais en fait le C est capable de recevoir du code source venant d'un site web : je l'ai fait.

Donc en fait, ton seul problème serait d'identifier la page de réponse de ta requête.

Un filtre sur l'adresse IP de l'expediteur est il suffisant ?

lapras
Membre Transcendant
Messages: 3664
Enregistré le: 01 Jan 2007, 14:00

par lapras » 21 Aoû 2007, 19:02

Donc en fait, ton seul problème serait d'identifier la page de réponse de ta requête.

Oui et non, il faut aussi que je trouve la fonction qui envoie la requete pour envoyer les donner via le formulaire ! Je n'ai pour le moment que la fonction qui récupere le code HTML d'une page voulue.

Sais tu manier les sockets ?

Flodelarab
Membre Légendaire
Messages: 6574
Enregistré le: 29 Juil 2006, 16:04

par Flodelarab » 21 Aoû 2007, 19:04

lapras a écrit:Oui et non, il faut aussi que je trouve la fonction qui envoie la requete pour envoyer les donner via le formulaire ! Je n'ai pour le moment que la fonction qui récupere le code HTML d'une page voulue.

Sais tu manier les sockets ?

En général, j'en mets une par pied.

Dans ton lien, il y a le code pour envoyer la requete.

lapras
Membre Transcendant
Messages: 3664
Enregistré le: 01 Jan 2007, 14:00

par lapras » 21 Aoû 2007, 19:08

Justement, vu mon niveau en anglais, ca risque d'etre dur de comprendre, j'ai tenté de comprendre, j'ai essayé le code, mais je ne vois pas dans quelle variable on récupere le code source.
Meme si j'ai la fonction pour récupérer un code source, je ne peux trécupérer que le code d'une adresse que je connais.
Bon pour google, évidemment c'est simple il utilise le GET :
site.com?motclef=aaaa&truc=bidule
mais pour un site qui n'utilise que le post, je ne vois pas comment faire...

Flodelarab
Membre Légendaire
Messages: 6574
Enregistré le: 29 Juil 2006, 16:04

par Flodelarab » 21 Aoû 2007, 19:43

lapras a écrit:Justement, vu mon niveau en anglais, ca risque d'etre dur de comprendre, j'ai tenté de comprendre, j'ai essayé le code, mais je ne vois pas dans quelle variable on récupere le code source.
Meme si j'ai la fonction pour récupérer un code source, je ne peux trécupérer que le code d'une adresse que je connais.
Bon pour google, évidemment c'est simple il utilise le GET :
site.com?motclef=aaaa&truc=bidule
mais pour un site qui n'utilise que le post, je ne vois pas comment faire...

Ouvre tes yeux assez grands pour qu'un œil se jette ICI

C'est tout en français et expliquer in extenso.

Elle est pas belle la vie ?

anima
Membre Transcendant
Messages: 3762
Enregistré le: 15 Sep 2006, 13:00

par anima » 21 Aoû 2007, 20:06

As-tu besoin d'un affichage graphique du navigateur? Si non, tu peux sortir le parseur DOM (Xerces C++) pour "parser" (logique?) une page web; ensuite, il y a des méthodes pour trouver l'élement que tu veux (un foreach sur toutes les balises "form" ou "input" peut faire l'affaire). Enfin, tu valides: gagné.

Sinon, le TCL et le ruby gerent bien la chose, pour le peu qu'on soit sur linux... Car TCL est tres peu portable.


Pour ce qui est du "si on veut un navigateur", j'attends que ma mere allume le PC de backup et je pompe les sources de mes programmes dessus... Vive le truc de backup, a 18 ans, je n'ai meme pas acces a ce que j'installe :hum: heureusement, j'ai un paquet de PCs ici.

lapras
Membre Transcendant
Messages: 3664
Enregistré le: 01 Jan 2007, 14:00

par lapras » 21 Aoû 2007, 20:21

Non je n'ai pas besoin d'un affichage "navigateur", je fais le tout en console type MS-DOS^^
Trouver les form, les boutons, c'est pas dur, j'ai fait des parser auparavant quand je voulais immiter google (quel beau rêve), par contre apres envoyer les informations "dedans" puis valider, je sais pas comment faire...


Flodelarab > merci pour ton lien, mais s'agit il de cours en C ?

anima
Membre Transcendant
Messages: 3762
Enregistré le: 15 Sep 2006, 13:00

par anima » 21 Aoû 2007, 20:29

lapras a écrit:Non je n'ai pas besoin d'un affichage "navigateur", je fais le tout en console type MS-DOS^^
Trouver les form, les boutons, c'est pas dur, j'ai fait des parser auparavant quand je voulais immiter google (quel beau rêve), par contre apres envoyer les informations "dedans" puis valider, je sais pas comment faire...


Flodelarab > merci pour ton lien, mais s'agit il de cours en C ?

C'est de la documentation sur le protocole HTTP qu'il te manque. Tous les , et contenus dans une balise sont envoyés lors du "submit"; suivant que la requete soit GET ou POST, ca part différemment.

GET:
Soit 3 champs: Texte1, Texte2, Select1; tu valides ton formulaire, ca envoie a l'adresse dans la balise , exemple page.php, en ajoutant dans l'URL les parametres GET encodés en utf8 et séparés par des &.
Donc, dans mon exemple: page.php?Texte1=valeurdetexte1&Texte2=bla&Select1=Blabla
255 caracteres de parametres maxi.

POST:
C'est la que ca se "corse". La requete POST a la meme consistance, sauf que les trucs ne sont pas rajoutés dans l'URL, mais dans la requete HTTP elle-meme. Une requete POST typique pour mon exemple serait:
POST /page.php HTTP/1.1
Host: localhost
User-Agent: Mozilla/4.0
Content-Length: 45
Content-Type: application/x-www-form-urlencoded
Texte1=valeurdetexte1&Texte2=bla&Select1=Blabla

Les valeurs encodées en UTF8 (urlencode si tu preferes) auparavant, comme d'hab.

 

Retourner vers ϟ Informatique

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite