Page 1 sur 1

internet : se connecter avec un mot de passe

Publié : dim. 24/août/2008 18:03
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

Publié : dim. 31/août/2008 23:04
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 ?

Publié : dim. 31/août/2008 23:20
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à.

Publié : lun. 01/sept./2008 15:47
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 !!

Publié : lun. 01/sept./2008 17:08
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

Publié : lun. 01/sept./2008 21:05
par Droopy
Pourquoi ne pas fournir le login / pwd dans l'url

http://LOGIN:PASSWORD@URL

Publié : mar. 02/sept./2008 8:06
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..

Publié : mar. 02/sept./2008 8:47
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 !