Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Automatisation de remplissage de formulaires

4 réponses
Avatar
Jean Pierre MERX
Je réserve régulièrement des cours de tennis par Internet... et je me pose
la question suivante: comment réaliser un programme qui effectue ces
réservations pour moi sans que j'ai a m'en soucier.

Il faudrait:
- Lancer un programme à une heure fixée à l'avance.
- Que ce programme m'identifie au travers d'une page Web.
- Qu'il effectue la réservation du cours de tennis.
- Qu'il se déconnecte du site Web.

Mes premières questions concerne l'architecture générale d'une "telle
application". Il faudrait en gros faire tourner une application qui fasse
tourner IE (par exemple).

Tout éclairage sera le bienvenu!

4 réponses

Avatar
Bipède
Jean Pierre MERX wrote:
Je réserve régulièrement des cours de tennis par Internet... et je me pose
la question suivante: comment réaliser un programme qui effectue ces
réservations pour moi sans que j'ai a m'en soucier.

Il faudrait:
- Lancer un programme à une heure fixée à l'avance.
- Que ce programme m'identifie au travers d'une page Web.
- Qu'il effectue la réservation du cours de tennis.
- Qu'il se déconnecte du site Web.

Mes premières questions concerne l'architecture générale d'une "telle
application". Il faudrait en gros faire tourner une application qui fasse
tourner IE (par exemple).


Non absolument pas besoin de IE ou d'un quelconque navigateur.
L'application en question se connecte simplement au site en question sur
le port 80 avec une socket classique (un tube TCP) ou un mécanisme plus
évolué et envoie une requète HTTP en bonne et due forme avec l'ensemble
des variables que le formulaire défini. Cela peut être fait facilement
dans n'importe quel langage.

Pour comprendre de quoi il s'agit, on peut même le faire avec "telnet"
sous une fenetre MSDOS.

telnet www.reserver-tenis.com 80


puis en aveugle :

HTTP/1.1 GET /reservation/ma_reservation.php[tape entree]
Host: www.reserver-tenis.com[tape entree]
Connection: Close[tape entree]
[tape entree]

le serveur doit répondre en envoyant le code HTML de la page.

Tout éclairage sera le bienvenu!


Il faut sans doute un certain nombre de connaissances informatiques pour
le faire.

Avatar
Jean Pierre MERX
Merci pour cette réponse.

En fait, j'ai regardé d'un peu plus près le code HTML, il y a une phase
d'identification avec un formulaire Javascript comme on peut le voir dans le
code de la page html en question
(http://t22-srtm-0171717070.paris.fr/srtm/jsp/web/index.jsp), qui envoie
l'instruction Javascript suivante:
document.authentificationInfosForm.submit().

Comment peut-on savoir quelles sont les commandes HTTP qui sont communiquées
lorsque des instructions Javascript sont exécutées ? Y a-t-il un mouchard
HTTP facile à activer ?

J'ai examiné un peu l'interface de programmation WinHttp de MS Windows, qui
m'a l'air intéressante pour construire une petite application qui
effectuerait la tâche souhaitée (définition des paramètres de connection au
site de réservation, définition de l'heure de réservation souhaitée...).
Avatar
Bipède
Jean Pierre MERX wrote:
Merci pour cette réponse.

En fait, j'ai regardé d'un peu plus près le code HTML, il y a une phase
d'identification avec un formulaire Javascript comme on peut le voir dans le
code de la page html en question
(http://t22-srtm-0171717070.paris.fr/srtm/jsp/web/index.jsp), qui envoie
l'instruction Javascript suivante:
document.authentificationInfosForm.submit().

Comment peut-on savoir quelles sont les commandes HTTP qui sont communiquées
lorsque des instructions Javascript sont exécutées ? Y a-t-il un mouchard
HTTP facile à activer ?


La requète HTTP est une requète HTTP POST classique. Javascript ne fait
que solicité la fonction du navigateur qui soumet les formulaire HTML
via cette method POST. Le nom du formulaire étant
"authentificationInfosForm".

Une requète POST cela ressemble à ca :

<<
HTTP/1.1 POST /URI/de_la/page
Host: URL_du_serveur
Connection: Close

nom_du_champ1=valeur1&nom_du_champ2=valeur2&... etc




(note : c'est le codage standard, mais un autre codage plus complexe est
utilisé si on envoie en plus un fichier)

Mais hélas il y a un hic ! Comme on peut le voir dans le code :

<form name="authentificationInfosForm" method="post"
action="/srtm/authentificationConnexionLireSuite.action;jsessionid…B8D28C452D688FEE926B3C255E305C.tomcat2">

L'action fait référence à une page qui nécessite un identificateur de
session. Hors celui-ci varie d'une connexion à une autre. Cet
identificateur correspond de façon unique à un ensemble d'informations
temporaires stockées sur le serveur et associées à l'utilisateur.


J'ai examiné un peu l'interface de programmation WinHttp de MS Windows, qui
m'a l'air intéressante pour construire une petite application qui
effectuerait la tâche souhaitée (définition des paramètres de connection au
site de réservation, définition de l'heure de réservation souhaitée...).


Le problème c'est qu'avec cette id de session cela complique tout, il
faut pouvoir dans un premier temps récupérer un id de session valide qui
est vraisemblablement transmit dés la première connexion, soit sous
forme de cookie, soit dans l'URL des liens. Fournir les bons
identificateurs de connexion pour que la session soit celle de quelqu'un
d'authentifié et d'authorisé. Et enfin lors de la soumission des valeurs
envoyer le bon id de session soit dans l'URL soit sous forme de cookie.

(note : le cookie n'est qu'un champ de l'entête HTTP, rien de trés
difficile)

Ca commence à faire beaucoup !


Avatar
Francis Spiesser
Je réserve régulièrement des cours de tennis par Internet... et je me pose la
question suivante: comment réaliser un programme qui effectue ces
réservations pour moi sans que j'ai a m'en soucier.

Il faudrait:
- Lancer un programme à une heure fixée à l'avance.
- Que ce programme m'identifie au travers d'une page Web.
- Qu'il effectue la réservation du cours de tennis.
- Qu'il se déconnecte du site Web.

Mes premières questions concerne l'architecture générale d'une "telle
application". Il faudrait en gros faire tourner une application qui fasse
tourner IE (par exemple).

Tout éclairage sera le bienvenu!


http://www.kratronic.com/recorder/

--
______
Francis (enlever .NIPUBNISOUMIS)
"L'intelligence, c'est pas sorcier... Il suffit de penser à une
connerie et de dire l'inverse" Coluche