internet : se connecter avec un mot de passe

Programmation d'applications complexes
Avatar de l’utilisateur
graph100
Messages : 1318
Inscription : sam. 21/mai/2005 17:50

internet : se connecter avec un mot de passe

Message par graph100 »

Bonjour

j'utilise beaucoup la procedure suivante qui permet de récupérer le code d'une page web :

Code : Tout sélectionner

ProcedureDLL.s Url2Text2(Url.s, OpenType.b,ProxyAndPort.s)
     ; 1 INTERNET_OPEN_TYPE_DIRECT Resolves all host names locally.
     ; 0 INTERNET_OPEN_TYPE_PRECONFIG Retrieves the proxy Or direct configuration from the registry.
     ; 4 INTERNET_OPEN_TYPE_PRECONFIG_WITH_NO_AUTOPROXY Retrieves the proxy Or direct configuration from the registry And prevents the use of a startup Microsoft JScript Or Internet Setup (INS) file.
     ; 3 INTERNET_OPEN_TYPE_PROXY Passes requests To the proxy unless a proxy bypass list is supplied And the name To be resolved bypasses the proxy. In this Case, the function uses INTERNET_OPEN_TYPE_DIRECT.
    
    
    
    isLoop.b=1
    INET_RELOAD.l = $80000000
    hInet.l=0
    hURL.l=0
    Bytes.l=0
    Buffer.s= Space (2048 )
    RES.s= ""
    
    
    hInet = InternetOpen_ ( "" , OpenType, ProxyAndPort, "" , 0)
    hURL = InternetOpenUrl_ (hInet, Url, #Null , 0, INET_RELOAD, 0)
    
     Repeat
         InternetReadFile_ (hURL,@Buffer, Len (Buffer), @Bytes)
         If Bytes = 0
            isLoop=0
         Else
            RES = RES + Left (Buffer, Bytes)
         EndIf
     Until isLoop=0
    
     InternetCloseHandle_ (hURL)
     InternetCloseHandle_ (hInet)
     ProcedureReturn RES
EndProcedure

mais le problème est que ca ne fonctionne pas si il est nécessaire de s'identifier sur le site avant d'accéder à la page.
Je voudrai donc savoir comment faire pour s'identifier sur le site avec le programme ou s'identifier en meme temps que le chargeant de la page ?

merci
Avatar de l’utilisateur
graph100
Messages : 1318
Inscription : sam. 21/mai/2005 17:50

Message par graph100 »

il n'y a vraiment personne qui peut m'aider ?
Firefox et internet explorer restent connecté sur les pages ! et si on utilise un internet gadget c'est pareil !! Alors si on ne peut pas se connecter directement, comment pourrait -on récuperer le code html de la page chargée par le gadget ?
Avatar de l’utilisateur
Ouaf-Ouaf
Messages : 212
Inscription : dim. 11/juil./2004 9:07

Message par Ouaf-Ouaf »

Lut,

Voiçi ce que j'utilise, qui m'as été communiqué par un type du forum English.

InitNetwork()

ConnectionID = OpenNetworkConnection("www.truc.com", 80)

If ConnectionID
com$="GET /page.php?variable=1 HTTP/1.1"+Chr(13)+Chr(10)
com$=com$+"Accept: */*"+Chr(13)+Chr(10)
com$=com$+"Accept: text/html"+Chr(13)+Chr(10)
com$=com$+"Host: purearea.net"+Chr(13)+Chr(10)
com$=com$+"User-Agent: "+Chr(13)+Chr(10)
com$=com$+Chr(13)+Chr(10)
Res = SendNetworkData(ConnectionID,@com$,Len(com$))

Repeat
Delay(10)
Result = NetworkClientEvent(ConnectionID)

Select Result

Case 2
Content$ = Space(14500)
ReceiveNetworkData(ConnectionID,@Content$,14500)
Ok = 1
MessageRequester("Done!","Your Data" + Chr(13) + Chr(10) + Content$,0)
CloseNetworkConnection(ConnectionID)
EndSelect

Until Ok = 1
EndIf
Dans l'etat, si le serveur reponds pas, ou qu'il n'existe pas, tu boucles à l'infini, donc fais gaffe à ça.
Tu peux tester si la page reponds dans un premier temps en faisant simplement une requete HEAD au lieu de GET au debut de la generation
de ta requete host$.

T'auras dans ce cas que l'en-tête de la page, qui te donne donc le code, eventuellement le fameux 404.
Si tu as le Head, ce serat plus pratique pour le supprimer du resultat content$ de la requete GET, par ce que le Head depend de la config du serveur.
Sinon tu pourrais aussi demarrer la lecture en recherchant la balise <Body>.

Si jamais tu en as besoin :

Description des requetes Http :
http://fr.wikipedia.org/wiki/Hypertext_ ... r_Protocol

Descritption des Head :
http://fr.wikipedia.org/wiki/Liste_des_codes_HTTP



Foilà.
Avatar de l’utilisateur
graph100
Messages : 1318
Inscription : sam. 21/mai/2005 17:50

Message par graph100 »

Merci beaucoup pour ta réponse éclairée et clair !
N'ayant internet courament que depuis 2 mois je ne m'étais pas penché sur les requetes http et les protocoles etc... donc je vais aller voir !!
Avatar de l’utilisateur
graph100
Messages : 1318
Inscription : sam. 21/mai/2005 17:50

Message par graph100 »

apres reflexion je me retrouve devant un probleme bizarre !
Content$ ne me retourne que le debut de la page !! le reste du code n'est pas envoyé.

Code : Tout sélectionner

#fin = Chr(13) + Chr(10)

Procedure.s Base64(text$)
  encode$ = Space(Len(text$) * 1.35)
  nb.l = Base64Encoder(@text$, Len(text$), @encode$, Len(encode$))
  ProcedureReturn encode$
EndProcedure

InitNetwork()

ConnectionID = OpenNetworkConnection("www.exemple.com", 80)

url$ = "http://www.truc.com/index.php"
user$ = "user"
pass$ = "pass"

If ConnectionID
  com$ = "GET ?variable=1 HTTP/1.1" + #fin
  com$ = com$ + "Authorization: Basic " + Base64(user$ + ":" + pass$) + #fin
  com$ = com$ + "Accept: */*" + #fin
  com$ = com$ + "Accept: text/html" + #fin
  com$ = com$ + "Referer: " + url$ + #fin
  com$ = com$ + "Host: exemple.com" + #fin
  com$ = com$ + "User-Agent: " + #fin
  com$ = com$ + #fin
  Res = SendNetworkData(ConnectionID, @com$, Len(com$))
  
  test = 100
  
  Repeat
    Delay(10)
    Result = NetworkClientEvent(ConnectionID)
    
    Select Result
      Case 2
        Content$ = Space(28000)
        
        Debug Len(Content$)
        
        ReceiveNetworkData(ConnectionID, @Content$, 28000)
        Ok = 1
        
        CloseNetworkConnection(ConnectionID)
    
    EndSelect
    
    test - 1
    
  Until Ok = 1 Or test < 0
EndIf

If OpenWindow(0, 0, 0, 800, 600, "test HTTP")
  If CreateGadgetList(WindowID(0))
    EditorGadget(0, 10, 10, 780, 580)
    
  EndIf
EndIf

SetGadgetText(0, Content$)

Repeat
  event = WaitWindowEvent()
  
Until event = #PB_Event_CloseWindow

End
Avatar de l’utilisateur
Droopy
Messages : 1151
Inscription : lun. 19/juil./2004 22:31

Message par Droopy »

Pourquoi ne pas fournir le login / pwd dans l'url

http://LOGIN:PASSWORD@URL
Avatar de l’utilisateur
Ouaf-Ouaf
Messages : 212
Inscription : dim. 11/juil./2004 9:07

Message par Ouaf-Ouaf »

Merci beaucoup pour ta réponse éclairée et clair !
Lol me dis pas ça tu vas me rendre tout chose !

Je capte pas le problème par contre dsl. Tu test sur quel genre de page ?

Droopy a surement raison pour ce qui est du Mdp/Url, j'avais déjà vus ça qq part en plous..
Avatar de l’utilisateur
graph100
Messages : 1318
Inscription : sam. 21/mai/2005 17:50

Message par graph100 »

Pour la méthode a Droopy, Je connaissait le principe mais oublié la forme et je ne sais pas si ca marche pour recuperer le code html d'une page !

le probleme que j'ai avec mon code est que la chaine de retour contient l'en tête, puis le debut du code html, puis ca coupe a un endroit et le reste c'est des espaces (Content$ = Space(28000)) !!

Je n'est pas la totalité du code juste un morceau.

Je viens juste de tester la méthode de Droopy, ça ne marche pas sur certain site.

J'ai donc contourner le probleme avec un code affreux ^^
qui utilise un webgadget() : il faut taper les identifiants et mots de passe dans les cases de la page puis ensuite je peut me promener dans le site avec mon programme et récuperer le code source de la page !
Répondre