Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Général Conception Web
Général Conception Web Forum d'entraide sur les choix technologiques. Avant de poster : Cours Dév. Web, FAQs Dév. Web, Sources Dév. Web
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 28/03/2005, 17h42   #1
Nyx
Invité de passage
 
Inscription : février 2003
Messages : 24
Détails du profil
Informations forums :
Inscription : février 2003
Messages : 24
Points : 3
Points : 3
Par défaut Protocole HTTP: methode POST

Bonjour,
Dans le but de m’identifier sur un site sans utiliser mon navigateur web, je dois utiliser le protocole HTTP pour obtenir la source d’une page accessible qu’après identification via un formulaire HTML.

Quelle est la syntaxe de ce type de requête HTTP ?
Comment spécifier le nom et la valeur des variables à envoyer ?
Nyx est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/03/2005, 19h28   #2
Membre émérite
 
Avatar de Celelibi
 
Inscription : janvier 2004
Messages : 990
Détails du profil
Informations forums :
Inscription : janvier 2004
Messages : 990
Points : 822
Points : 822
Tu aurais sûement trouvé dans la rfc du protocole HTTP.
Mais bon je te le donne quand même :

Code :
1
2
3
4
5
POST /rep/page.php HTTP/1.1
Host: truc.machin.tld
Content-length: 23

&var=valeur&var2=valeur
Le début ressemble à une requête GET, sauf qu'il faut rajouter l'en-tête Content-length (facultatif pour HTTP1.0 il me semble), et dans la 2eme partie pour transmettre des variables la syntaxe est assez simple (voir l'exemple).
Il me semble qu'on peut même mettre chaque variable sur une nouvelle ligne du style :
Code :
1
2
&var1=valeur
&var2=valeur
Ceci dit la rfc (ou un sniffage de réseau ) devrait répondre à toute tes question.
__________________
Les vaches ne peuvent PAS voler, quoi qu'elles aient pu vous raconter.
Celelibi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/03/2005, 20h29   #3
Nyx
Invité de passage
 
Inscription : février 2003
Messages : 24
Détails du profil
Informations forums :
Inscription : février 2003
Messages : 24
Points : 3
Points : 3
Je crois que ça vient du site en question (mauvais host ?) puisque même avec un simple GET il n'y a aucune réponse contrairement à google ou d'autres.
Il s'agit de www.diplomatie-online.net/accueil.php

J'ai mis comme host: www.diplomatie-online.net ; mais comment puis-je vérifier cette information ?
Nyx est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/03/2005, 09h56   #4
Membre habitué
 
Avatar de ken_le_videur
 
Inscription : juillet 2002
Messages : 129
Détails du profil
Informations forums :
Inscription : juillet 2002
Messages : 129
Points : 130
Points : 130
Envoyer un message via ICQ à ken_le_videur
Ca marche bien j'ai vérifié:
Code :
1
2
GET /accueil.php HTTP/1.1
Host: www.diplomatie-online.net
ken_le_videur est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/03/2005, 18h22   #5
Nyx
Invité de passage
 
Inscription : février 2003
Messages : 24
Détails du profil
Informations forums :
Inscription : février 2003
Messages : 24
Points : 3
Points : 3
Chez moi, ta requête marche pour google par exemple, mais pas pour diplomatie-online.

du python:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
import socket
sock=socket.socket()
sock.connect(('www.diplomatie-online.net',80))

msg = '''GET /accueil.php HTTP/1.1

Host:  www.diplomatie-online.net

'''
sock.send(msg)
print sock.recv(9999)
Nyx est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/03/2005, 20h12   #6
Membre émérite
 
Avatar de Celelibi
 
Inscription : janvier 2004
Messages : 990
Détails du profil
Informations forums :
Inscription : janvier 2004
Messages : 990
Points : 822
Points : 822
Il ne faut qu'un seul et unique retour à la ligne entre ta méthode GET et l'en-tête Host.

Deux retours à la ligne (donc un saut de ligne) signifie la fin de l'entête de la requête et le début du corps de la requête (si il y a lieu d'en avoir un).

Code :
1
2
3
4
msg = '''GET /accueil.php HTTP/1.1
Host:  www.diplomatie-online.net

'''
ça devrait mieux marcher
__________________
Les vaches ne peuvent PAS voler, quoi qu'elles aient pu vous raconter.
Celelibi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/03/2005, 20h32   #7
Nyx
Invité de passage
 
Inscription : février 2003
Messages : 24
Détails du profil
Informations forums :
Inscription : février 2003
Messages : 24
Points : 3
Points : 3
pareil: aucune réponse de la part du serveur de diplomatie.
Nyx est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/03/2005, 22h22   #8
Modérateur
 
Avatar de mathieu
 
Inscription : juin 2003
Messages : 4 893
Détails du profil
Informations forums :
Inscription : juin 2003
Messages : 4 893
Points : 4 466
Points : 4 466
essaye avec un seul espace devant "Host:"
__________________
Modérateur PHP
mathieu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/03/2005, 23h11   #9
Nyx
Invité de passage
 
Inscription : février 2003
Messages : 24
Détails du profil
Informations forums :
Inscription : février 2003
Messages : 24
Points : 3
Points : 3
toujours rien.
Nyx est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/03/2005, 11h19   #10
Membre habitué
 
Avatar de ken_le_videur
 
Inscription : juillet 2002
Messages : 129
Détails du profil
Informations forums :
Inscription : juillet 2002
Messages : 129
Points : 130
Points : 130
Envoyer un message via ICQ à ken_le_videur
Y'a pas une ou 2 apostrophes en trop là ?
ken_le_videur est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/03/2005, 18h05   #11
Nyx
Invité de passage
 
Inscription : février 2003
Messages : 24
Détails du profil
Informations forums :
Inscription : février 2003
Messages : 24
Points : 3
Points : 3
c'est pour pouvoir mettre la string sur plusieurs lignes.
Nyx est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2005, 00h08   #12
Membre habitué
 
Avatar de ken_le_videur
 
Inscription : juillet 2002
Messages : 129
Détails du profil
Informations forums :
Inscription : juillet 2002
Messages : 129
Points : 130
Points : 130
Envoyer un message via ICQ à ken_le_videur
Bon, dernière solution tu prends ethereal tu sniffe ce qui passe sur ta carte rézo et tu compares le résultat entre ton appli et ton browser
ken_le_videur est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2005, 12h50   #13
Nyx
Invité de passage
 
Inscription : février 2003
Messages : 24
Détails du profil
Informations forums :
Inscription : février 2003
Messages : 24
Points : 3
Points : 3
La requête de Firefox ne fonctionne pas avec mon code.

Je vois deux possibilités:
- c'est un problème interne à python
- c'est un problème qui vient de ma connexion.

Pour trancher, il faut que j'essaye avec autre chose que Python. Que puis-je utiliser pour envoyer des requêtes HTTP ?
Nyx est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2005, 12h58   #14
Membre habitué
 
Avatar de ken_le_videur
 
Inscription : juillet 2002
Messages : 129
Détails du profil
Informations forums :
Inscription : juillet 2002
Messages : 129
Points : 130
Points : 130
Envoyer un message via ICQ à ken_le_videur
Essaye avec une appli telnet: tu tape directement ta requete et tu regarde ce qui se passe.
ken_le_videur est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2005, 19h27   #15
Nyx
Invité de passage
 
Inscription : février 2003
Messages : 24
Détails du profil
Informations forums :
Inscription : février 2003
Messages : 24
Points : 3
Points : 3
J'ai les mêmes pb avec une appli telnet qu'avec python.

Je résume,

J'arrive à me connecter aux serveurs qui me sont venus à l'esprit (cfsl, free, google) avec:
- firefox
- internet explorer
- appli telnet
- socket de python

Avec à chaque fois la même requête, j'arrive à me connecter à diplomatie-online uniquement avec:
- firefox
- internet explorer
Nyx est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/04/2005, 17h45   #16
Nyx
Invité de passage
 
Inscription : février 2003
Messages : 24
Détails du profil
Informations forums :
Inscription : février 2003
Messages : 24
Points : 3
Points : 3
Voilà un code qui marche :
Code :
1
2
3
4
5
6
7
8
9
10
11
http = httplib.HTTP('www.diplomatie-online.net',80)
http.putrequest('GET','/parties.php?view=1')
http.putheader('Host','www.diplomatie-online.net')
http.putheader('Accept','/text/html')
http.putheader('Accept','text/plain')
http.putheader('Cookie','****')
http.endheaders()


headers = http.getreply()
Nyx est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h19.


 
 
 
 
Partenaires

Hébergement Web