Proxy funktioniert nicht so wie gewünscht!

Diskutiere Proxy funktioniert nicht so wie gewünscht! im Netzwerkprogrammierung Bereich.
Dann07

Dann07

Guten Tag/Abend!
Mein Problem ist folgendes:
Ich habe versucht ein Proxy zu programmieren.
Das Prinzip ist mir klar.
Nur weiß ich nicht wie ich das in meinem Programm schreiben soll.
Den hauptteil habe ich ja schon.

Hier der Code (Bitte auch die Kommentare im Code durchlesen!):
Java:
import java.io.*;
import java.net.*;

public class Main {

    public static void main(String[] args) {
        try {
            int proxyPort = 8080;
            String host = "http://www.google.com";
            ServerSocket ss = new ServerSocket(proxyPort);
            
            while(true) {
                Socket s = ss.accept();
                URLConnection hostConnection = new URL(host).openConnection();
                
                hostConnection.setDoInput(true);
                hostConnection.setDoOutput(true);
                hostConnection.connect();
                
                //Hier weiß ich nicht was ich hier tun soll.
                //Ich kann die Anfragen an den Host weiterleiten.
                //Ich kann nur nicht die Anfragen vom Host an den Client entgegen nehmen.
                //Folgendes Beispiel zum entgegennehmen der Anfragen vom Client:
                
                DataInputStream clientDis = new DataInputStream(s.getInputStream());
                DataOutputStream hostDos = new DataOutputStream(hostConnection.getOutputStream());
                String line = "";
                
                while((line = clientDis.readLine()) != null) {
                    hostDos.writeUTF(line);
                }
                
                //Das nächste Beispiel soll die Anfragen vom Host entgegennehmen.
                
                DataOutputStream clientDos = new DataOutputStream(s.getOutputStream());
                DataInputStream hostDis = new DataInputStream(hostConnection.getInputStream());
                String line = "";
                
                while((line = hostDis.readLine()) != null) {
                    clientDos.writeUTF(line);
                }
                
                //Dies funktioniert aber nicht da ich ein 405 Error kriege.
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    
}
Bei allen anderen Versuchen kriege ich ein Fehler/Error in meinem Browser.

Vielen Dank im Voraus!
 
X

Xyz1

Mit host ist die Zieladresse gemeint, in diesem Fall google.de. Mit statisch ist gemeint, dass sich diese Zieladresse gar nicht ändert... Eigentlich müsste die Anfrage ja so schauen:
Host: www.java-forum.org
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:69.0) Gecko/20100101 Firefox/69.0
Accept: text/css,*/*;q=0.1
Accept-Language: de,en-US;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
 
Dann07

Dann07

Mit host ist die Zieladresse gemeint, in diesem Fall google.de. Mit statisch ist gemeint, dass sich diese Zieladresse gar nicht ändert... Eigentlich müsste die Anfrage ja so schauen:
Host: www.java-forum.org
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:69.0) Gecko/20100101 Firefox/69.0
Accept: text/css,*/*;q=0.1
Accept-Language: de,en-US;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Achso. Danke!
Das gleiche kommt bei mir auch raus aber das löst leider noch nicht mein eigentliches Problem. :confused:
Wenn ich versuche mich zu verbinden dann lädt mein Browser entweder ewig lange oder er bricht sofort mit einem Fehler ab.
 
X

Xyz1

Vielleicht kann @VfL_Freak mir da weiterhelfen, aber ein Proxy gibt doch eigentlich nur 1:1 die Anfrage weiter - oder?
 
mrBrown

mrBrown

In jedem Fall dürfte der HOST-Header falsch sein - der Browser wird den (korrigiert mich) auf localhost setze, der Google-Server wird mit localhost aber nicht viel anfangen können. Der Proxy wird das mit dem passenden Host ersetzen müssen.
 
mrBrown

mrBrown

Moment - gibt es eine Exception mit Stacktace und allem drum und dran oder gibt es einen HTTP 405-Error?
 
Dann07

Dann07

java.io.IOException: Server returned HTTP response code: 405 for URL: http://www.google.com
at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
at Main.main(Main.java:21)
 
mrBrown

mrBrown

Ahh...du darfst natürlich keine HttpConnection zum Host aufmachen, sondern auch einfach nur ein Socket. Du willst ja die Anfragen des Browsers einfach nur durchreichen, und nicht eine eigene davon völlig unabhängige Verbindung aufbauen.
 
Dann07

Dann07

Ich habe es jetzt mal mit einem Socket probiert es gibt jetzt auch keine Exception aber mein Browser lädt ewigkeiten und ich kriege auch von dem Host keine Antwort.
 
Dann07

Dann07

Browser:
CONNECT www.google.com:443 HTTP/1.1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:69.0) Gecko/20100101 Firefox/69.0
Proxy-Connection: keep-alive
Connection: keep-alive
Host: www.google.com:443

Vom Server kommt nichts das ist das Problem.
 
Thema: 

Proxy funktioniert nicht so wie gewünscht!

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben