NewbieContest

Programmation => Langages compilés => Discussion démarrée par: eduine le 11 Juillet 2013 à 10:27:28



Titre: [python] connection avec validation de formulaires javascripts
Posté par: eduine le 11 Juillet 2013 à 10:27:28
Bonjour bonjour!

Alors voilà, j'ai un petit projet à mener a bien au boulot, il faut que je me connecte au petit serveur embarqué du fax afin de mettre en place une petite journalisation des fax envoyés.

Je veux faire ça en python, j'ai déjà quelques lignes de codes pour m'orienter vers la page d'accueil, et là (misère), la validation du formulaire se fait via JavaScript... J'ai pas mal fouillé sur le net, j'ai vu quelques trucs inintéressants, mais rien qui ne vaille le détour.

Donc j'ai installé LiveHTTPHeaders, et j'ai sniffé les requêtes http, et j'ai donc :

Code:
#request# POST http://la_page_de_mon_fax/login
POST /login uri=%2Frps%2F&user_type_generic=&deptid=mon_login&password=mon_password

Seulement, je ne fais que très peu de développement web (si l'on peut appeler ça ainsi), et donc je n'ai strictement aucune idée de comment retranscrire ce genre de requêtes en python. Pour l'instant mon code ressemble à ça :
Code:
import urllib2

url = "http://la_page_de_mon_fax/rts/"

## declaration des mes identifiants
login = "mon_login"
password = "mon_password"


request = urllib2.Request(url)
response = urllib2.urlopen(request).read()

#affichage de la page web récupérée (juste pour vérif)
print response



Donc voilà si quelqu'un sait comment recréer une requête POST, et pourrais m'expliquer à quoi correspond ce 'uri=..." je lui en serais reconnaissant! :)

Je continue bien entendu à chercher de mon côté! ;)

Ciao!


Titre: Re : [python] connection avec validation de formulaires javascripts
Posté par: Asteriksme le 11 Juillet 2013 à 11:47:42
Salut,
j'ai jamais vraiment utilisé python mais j'ai trouvé ça sur le ouaib (ici: http://www.voidspace.org.uk/python/articles/urllib2_francais.shtml)

Code: (python)
import urllib
import urllib2

the_url = 'http://www.someserver.com/cgi-bin/register.cgi'
values = {'name' : 'Michael Foord',
          'location' : 'Northampton',
          'language' : 'Python' }

data = urllib.urlencode(values)
req = urllib2.Request(the_url, data)
handle = urllib2.urlopen(req)
the_page = handle.read()

À mon avis t'as plus qu'à remplacer "name" par "uri" (avec la valeur associée), etc pour les autres variables, ça devrait marcher je pense.
Au besoin, tu peux aussi rajouter des headers:

Code: (python)
[...]
headers = { 'User-Agent' : user_agent, 'Cookies' : cookies }
req = urllib2.Request(the_url, data, headers)
[...]

En ce qui concerne l'URI, c'est l'Uniform Resource Identifier, tu peux trouver plein d'infos sur wikipedia (https://fr.wikipedia.org/wiki/Uniform_Resource_Identifier), mais en l'occurence il est juste utilisé comme une variable post, puis traité après par la page login mais ça on sait pas comment.


Titre: Re : [python] connection avec validation de formulaires javascripts
Posté par: eduine le 11 Juillet 2013 à 12:35:45
Yep, je suis tombé dessus aussi, j'ai fait quelques tests ce matin, mais ca marche pas comme je veux... Enfin bref, je pousse un peu plus mes recherches, je vais jeter un œil sur le wiki uri, et je vais voir ce que je peux faire..

Sinon pour mes vérifs, est ce que tu sais si ya moyen que je voie les requêtes qu'engendre mon script facilement (pour vérifier que la requête POST s'effectue comme il faut) ou est ce que je vais devoir choper un soft fait pour (genre WireShark) ?


EDIT : Je viens de m’apercevoir qu'il y a une redirection après la validation du formulaire, j'me penche sur la question.


Titre: Re : [python] connection avec validation de formulaires javascripts
Posté par: r3fffal le 11 Juillet 2013 à 13:26:49
regarde la librairie requests pour python, elle est vraiment simple d'utilisation et plutôt bien documenter