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

Langage Java Discussion :

Proxy http Java


Sujet :

Langage Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 14
    Par défaut Proxy http Java
    Bonjour,
    Alors pour comprendre comment ça fonctionne j'essaye de développer un petit serveur proxy qui serait l'intermédiaire entre mon navigateur et internet. Le but étant de faire pointer mon navigateur vers mon petit programme et que celui-ci redirige le trafique vers l'extérieur tout en sniffant ce qui passe et en me retournant des logs.
    Donc j'ai fait quelques recherches et j'ai trouvé des exemples de code intéressant et je suis arrivé à créer deux petites classes qui fonctionnent sauf que j'ai un soucis de paramétrage car c'est pas hyper claire pour moi.

    Voici le code :

    La classe Proxy

    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
    public class Proxy {
     
    	  public static final int PORT = 12345;
     
    	  public static void main(String args[]) throws IOException {
    	        ServerSocket s = new ServerSocket(PORT);
    	        System.out.println("Started " + s);
     
    	        try {
    	                while ( true ) {
    	                        Socket socket = s.accept();
    	                        try {
    	                                System.out.println( "connection acceptee " +
    	                                                    socket);
    	                                new OneServeur(socket);
    	                        } catch ( IOException e ) {
    	                                socket.close();
    	                        }
    	                }
    	        } finally {
    	                s.close();
    	        }
    	  }
    	}
    La classe Oneserver

    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
    53
    54
    55
    56
    57
    58
    59
    60
    class OneServeur extends Thread{
      private Socket socket, socketToWeb;
      private BufferedReader fromBrowser;
      private PrintWriter toBrowser;
      private PrintWriter toWeb;
      private BufferedReader fromWeb;
    
      public OneServeur(Socket s) throws IOException {
            socket = s;
            fromBrowser = new BufferedReader(
                                new InputStreamReader (
                                  socket.getInputStream()));
            toBrowser = new PrintWriter( new BufferedWriter (
                                          new OutputStreamWriter (
                                          socket.getOutputStream())),true);
            start();
      }
    
      public void run() {
        try {
            String str, targetHost="", httpHeader="";
            while(true) {
                 str = fromBrowser.readLine();
                 httpHeader += str + "\n";
                 if ( str.startsWith("Host: " ) ) targetHost = str.substring(6);
                 if ( str.length() == 0 ) break;
            }
            //socketToWeb = new Socket(InetAddress.getByName(targetHost),80);
            socketToWeb = new Socket(
                                InetAddress.getByName("monproxy"),monport);
            System.out.println(socketToWeb);
            fromWeb = new BufferedReader(
                          new InputStreamReader (
                              socketToWeb.getInputStream()));
            toWeb = new PrintWriter( new BufferedWriter (
                                      new OutputStreamWriter (
                                        socketToWeb.getOutputStream())),true);
            System.out.println("-> -> -> -> -> -> ->  \n" + httpHeader);
            toWeb.println(httpHeader);
    
    
            boolean echoing = true;
    
            while ( true ) {
                 str = fromWeb.readLine();
                 if ( str == null ) break;
                 if ( str.length() == 0 ) echoing = false;
                 if( echoing ) System.out.println(str);
                 toBrowser.println(str);
            }
            System.out.println("\nclosing ...");
        } catch ( IOException e) {
        } finally {
            try {
                    socket.close();
            } catch ( IOException e ) {}
        }
      }
    }
    Donc en gros je lance le main et je configure par exemple Firefox pour qu'il se connect sur le serveur proxy localhost avec le port 12345.
    Et mon soucis c'est qu'il faut que je paramètre cette ligne de code :

    InetAddress.getByName("monproxy"),monport);


    Et tout marche bien si j'utilise une IP/PORT d'un proxy publique que je peux trouver sur internet. Mais moi ce n'est pas ça qui m'intéresse, je voudrais que mon serveur intermédiaire forward directement via mon IP à moi sans passer par un autre intermédiaire. Comme je ne sais pas si je suis clair actuellement ce qui marche c'est ça :

    Firefox<-->mon programme <--> proxy publique <--> site web

    Et ce que je voudrais :

    Firefox<-->mon programme <--> site web


    Je suis derrière une freebox en mode routeur avec plusieurs machines derrière et je voudrais savoir comment faire pour que ça marche ?

    Merci

    n'hésitez pas à me demander plus de précisions si je ne suis pas clair

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 14
    Par défaut
    Bonjour,

    je reviens vers vous car je tourne un peu en rond sur ce petit programme.

    Personne n'a eu d'idée alors ?

    Suis-je dans la bonne partie du forum au fait ?

    Merci

Discussions similaires

  1. Réponses: 0
    Dernier message: 01/04/2010, 14h54
  2. connexion TCP en java qui transiterait par un proxy HTTPS
    Par nouknouk dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 09/04/2008, 15h56
  3. Passer un proxy HTTP - Tunelling
    Par Celelibi dans le forum Réseau
    Réponses: 17
    Dernier message: 05/10/2006, 23h53
  4. Réponses: 3
    Dernier message: 18/04/2006, 22h49

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