[..] Proxy sur _InetGetSource ou WinHTTP

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Slym
Niveau 1
Niveau 1
Messages : 8
Enregistré le : mer. 07 juil. 2010 22:31
Status : Hors ligne

[..] Proxy sur _InetGetSource ou WinHTTP

#1

Message par Slym »

Bonjour,

Vous ne me connaissez pas mais vous connaissez peut-être déjà mon logiciel que je développe fièrement, entièrement en AutoIT : LinuxLive USB Creator

Je poste sur ce forum en espérant trouver quelques réponses à mes nombreuses questions car même si je code beaucoup en AutoIT je ne suis qu'un amateur.

Ces derniers temps je cherche à voir comment je pourrais rendre LiLi USB Creator complétement compatible avec l'usage d'un proxy. En effet, 90% du logiciel marche déjà avec un proxy mais je ne sais pas comment faire pour les 10 derniers pourcent.

Ces 10 derniers pourcent correspondent en fait à l'utilisation de _InetGetSource et de WinHTTP.au3.

[*]InetgetSource permet à LiLi de vérifier s'il existe une mise à jour (en récupérant le résultat d'un script php)

[*]WinHTTP permet quand à lui d'envoyer des rapports de plantages en méthode POST (trop gros pour un GET) à une page PHP.

Le but étant de pouvoir utiliser les mêmes modes de proxy que ceux fournis dans AutoIT à savoir : pas de proxy, même proxy que IE ou proxy rentré manuellement.

Si vous avez des exemples ou des idées je suis preneur.

Je suis aussi intéressé par des gens compétents qui souhaiteraient rejoindre le projet.

LiLi USB Creator est un projet open-source et les sources sont fournies/compilables facilement dans chaque version.

Bonne journée à tous,

Thibaut
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: Proxy sur _InetGetSource ou WinHTTP

#2

Message par Tlem »

Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
timmalos
Niveau 11
Niveau 11
Messages : 1970
Enregistré le : dim. 18 mai 2008 15:16
Status : Hors ligne

Re: Proxy sur _InetGetSource ou WinHTTP

#3

Message par timmalos »

Salut à toi:

Pour essayer de te repondre, tu connais bien sur

Code : Tout sélectionner

HttpSetProxy ( mode [, "proxy:port" [, "username" [, "password"]]] )
 
_INetGetSource() est a proscrire, utilise plutot InetRead, qui devrait gerer le proxy

Concernant le Post, je ne connais pas WinHTTP, j'utilise par contre le code suivant, que tu peux tester et qui résoudra peut etre ton problème:

Code : Tout sélectionner

Func _ask_servor_id($login, $PassWord)
    Local $deepmemo_host = "malossane.fr"
    Local $add_path = "/membres-connexion.html" ; ICI tu mets ton php, malgré le .html c'est bien une page php qui est appelée (redirection)
    Local $data = "nom_utilisateur=" & ($login) & "&mot_de_passe=" & ($PassWord) & "&connexion_auto=on&submit=Connectez-moi+!&uniqid=formulaire_connexion"
    Local $socket = _HTTPConnect($deepmemo_host)
    HttpSetUserAgent("autoit")
    _HTTPPost($deepmemo_host, $add_path, $socket, $data)
    $response = _HTTPRead($socket, 0)
    Return $response
EndFunc   ;==>_ask_servor_id
Les fonctions _HTTPConnect, _HTTPPost, et _HTTPRead sont disponibles ici : http://malossane.fr/usb-online-sources.html

Y'a même une fonction plus complexe _HTTPPost_files pour envoyer par POST un fichier complet de log ou autre.
Si le proxy défini par HttpSetProxy n'est pas utilisé, il faudra le rajouter dans notre requete POST, mais la je retourne au travail je regarderai ce soir, faut aller dans les definitions du HTTP 1.1 voir comment ca marche.
Slym
Niveau 1
Niveau 1
Messages : 8
Enregistré le : mer. 07 juil. 2010 22:31
Status : Hors ligne

Re: [..] Proxy sur _InetGetSource ou WinHTTP

#4

Message par Slym »

Merci beaucoup pour les réponses.

Je peux effectivement utiliser InetGet et ensuite lire le fichier temporaires pour avoir la réponse. Je sais pas pourquoi mais je pensais qu'InetGet n'était pas capable de récupérer un page Web mais seulement un vrai fichier :mrgreen:

Tes fonctions HTTP m'ont l'air vraiment bien (et plus facile à utiliser que celles que j'utilisent moi !). Par contre je ne suis pas sûr d'avoir compris. Pour se connecter, elles utilisent les mêmes paramètres que ceux du logiciel (ceux mis avec HTTPSetProxy) ou pas ?

Pas mal la Malossane USB Suite au passage !

Tlem > héhé, chui une star du web :lol:
Avatar du membre
timmalos
Niveau 11
Niveau 11
Messages : 1970
Enregistré le : dim. 18 mai 2008 15:16
Status : Hors ligne

Re: [..] Proxy sur _InetGetSource ou WinHTTP

#5

Message par timmalos »

Je comprends pas j'avais fait une tres longue réponse hier soir je croyais avoir poster la réponse hier soir mais apparemment c'est pas passé, donc je disais concernant WinHttp (mais je vais le faire plus concis, ca m'a saoulé), avec tes fonctions ca doit passer en rajoutant
$oHTTP.SetRequestHeader("Proxy-Connection", "Keep-Alive")

Code : Tout sélectionner

$oHTTP = ObjCreate("WinHttp.WinHttpRequest.5.1")
$oHTTP.Open("POST", 'http://votre_site.fr')
$oHTTP.SetRequestHeader("Referer", "http://malossane.fr")
$oHTTP.SetRequestHeader("Proxy-Connection", "Keep-alive")
$oHTTP.SetRequestHeader("Accept-Language", "fr")
 
Je pense que ca devrait suffire.

Avec mes fonctions, il faut rajouter la ligne suivante dans la fonction _HTTPPost et _HTTPGet et _HTTPPostFiles (si tu a s besoin des 3):

Code : Tout sélectionner

$command &= "Proxy-Connection: ""Keep-Alive"&@CRLF
 
Normalement, ce bout devrait suffire à utiliser le Proxy défini par défaut.
J'ai utilisé un analyseur de traffic, et quand je coche "Utiliser Proxy dans IE", c'est cette ligne la qui est rajoutée dans le header des requetes HTTP 1.1, donc je présume que ca marchera , mais je n'ai pas tester n'ayant pas de proxy à disposition cette semaine.


Concernant InetGet, vous pouvez comme je l'ai ecris, si vous utilisez la dernière version Autoit (ce que je vous conseille), utiliser InetRead qui fait exactement la même chose que votre ancienne fonction,(Donne directement la source sans passer par un fichier temporaire) sauf qu'elle est inclue dans Autoit3.exe et gère de base de Proxy mis avec la fonction HTTPSetProxy. Et oui Inetget s'utilise sur n'importe quoi :p
Slym
Niveau 1
Niveau 1
Messages : 8
Enregistré le : mer. 07 juil. 2010 22:31
Status : Hors ligne

Re: [..] Proxy sur _InetGetSource ou WinHTTP

#6

Message par Slym »

C 'est cool j'apprends pleins de choses !

Je n'avais jamais fait gaffe que InetRead renvoyait le résultat, comme c'était du charabia en plus ...

Pour les autres fonctions il va falloir que je creuse un peu plus la question car mon logiciel implémente les 3 modes de HttpSetProxy or il y a un mode où l'utilisateur rentre le proxy manuellement. Il y a donc forcément d'autres paramètres à passer.
Répondre