IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement Discussion :

Programmation d'un proxy Web


Sujet :

Développement

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de sorry60
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    802
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 802
    Par défaut Programmation d'un proxy Web
    Bonjour,

    Je tente d'écrire un petit proxy web mais j'ai un problème...

    Exemple :
    je lance mon navigateur vers google : ok ça marche
    je rafraîchis : rien ne se passe
    je rerafraîchis ; ok ça marche
    je lance un autre site : rien ne se passe
    je reclique vers ce site : ok ça marche
    etc... il faut toujours que j'insiste en cliquant 2fois pour que ça passe.

    Donc il doit y avoir un problème dans mon code, mais je ne trouve pas où...

    Le voici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    #! /usr/bin/python
    
    import os, sys, socket, re
    num_port = 1712
    regexp_reqnav = re.compile(r".*(GET|POST) (http|https|ftp)://([\w\.\-_]+):?(\d*)(/.*) (HTTP/\d\.\d)(.*)", re.DOTALL)
    # creation de la socket de type serveur du proxy
    ma_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM, socket.IPPROTO_TCP)
    ma_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    ma_socket.bind(('',num_port))
    ma_socket.listen(socket.SOMAXCONN)
    while 1:
        (nll_conn,depuis) = ma_socket.accept()
        # reception et decomposition de la requete du navigateur
        data = nll_conn.recv(1024)
        print("NEW DATA :\n" +data)
        res = regexp_reqnav.search(data)
        if not res :
    	print("erreur regexp !")
    	sys.exit(1)
        type_req = res.group(1)
        serv_req = res.group(3)
        port_req = res.group(4) or 80
        rep_req = res.group(5)
        vers_req = res.group(6)
        opt_req = res.group(7)
        print("Requete recue :")
        print(type_req + " " + serv_req + ":" + str(port_req) + " " + rep_req + " " + vers_req + opt_req)
        pid = os.fork()
        if not pid :
    	# fils
    	# creation de la socket de type client du proxy
    	sock_req = socket.socket(socket.AF_INET, socket.SOCK_STREAM, socket.IPPROTO_TCP)
    	# connexion vers le serveur web
    	try: sock_req.connect((serv_req,port_req))
    	except Exception, msg:
                print("Connexion vers "+serv_req+" : FAILED ! "+str(msg))
            print("Connexion vers "+serv_req+" : OK !")
    	# envoi de la requete http
            req = type_req + " " + rep_req + " " + vers_req + opt_req + "\r\n\r\n"
    	print("Envoie de la requete :")
    	print(req)
    	sock_req.sendall(req)
    	# reception de la reponse http
    	while 1:
                rep = sock_req.recv(1024)
                if not rep: break
                nll_conn.sendall(rep)
            sock_req.close()
            sys.exit(0)
        else:
            # pere
            nll_conn.close()
    Merci pour votre aide
    Sorry

  2. #2
    Membre éclairé Avatar de sorry60
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    802
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 802
    Par défaut
    Merci pour le déplacement, j'espère plus de succès ici !

  3. #3
    Membre éclairé Avatar de sorry60
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    802
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 802
    Par défaut
    Bon j'ai (enfin !) fini par trouver !

    Ca venait de l'option Keep-Alive: 300

    Il faut mettre Connection: close à la place et ça marche bien.


    Bonne journée
    Sorry

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Adaptation d'un script proxy web (Glype)
    Par colin.sauvanet dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 29/05/2008, 16h24
  2. Mettre un programme java sur le web
    Par DjPefH dans le forum Applets
    Réponses: 4
    Dernier message: 21/05/2008, 12h24
  3. Réponses: 13
    Dernier message: 30/11/2006, 22h19
  4. installer et exécuter un programme via une page web
    Par xufux dans le forum Général Conception Web
    Réponses: 7
    Dernier message: 04/09/2006, 13h42
  5. Réponses: 2
    Dernier message: 12/07/2006, 09h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo