Erstellung eines Proxy

  • Themenstarter Themenstarter TR_Watto
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
T

TR_Watto

Gast
Hallo,

es geht darum einen Proxy in Java zu erstellen der aus einer Webseite die Bilder herausfiltert. Der Browser soll so konfiguriert werden das der Proxy verwendet wird.

Mein Problem ist nun das ich die Aufgabenstellung garnicht so richtig verstehe. Hab zwar schon realtiv viel Erfahrung mit Java, was Netzwerkprogrammierung angeht hab ich allerdings noch garnichts gemacht. Es wäre super wenn ich mir sagen könntet was genau mit dieser Aufgabenstellung gemeint ist, welchen Sinn sie hat und wenn möglich auch wie die Lösung ungefähr aussehen könnte.

vorab schonmal vielen Dank

Gruss Watto
 
Hi,

so ungefähr müsste dein Proxy arbeiten:

0. lausche auf ein festgelegten Port
1. warte auf Anfragen vom Browser
2. nehme HTTP-Request vom Browser entgegen
3. falls der Request ein Bild anfordert (Dateiendung .gif oder .jpg oder .png) schicke als Antwort einen Fehler oder ein Dummy-Bild an den Browser zurück (zurück zu 1.)
4. ermittle das Ziel aus der angeforderten URL
5. kontaktiere den eigentlichen Web-Server und schicke ihm die URL
6. nehme die Daten vom Web-Server in Empfang
7. schicke die empfangenen Daten an den Web-Browser
8. und zurück zu 1.

Gruß
Mag1c
 
warum das denn?

ein Proxy muss einfach den Request zB vom Browser weiterleiten, ie antwort abwarten und zurück zum Browser schicken

warum sollte man denn die Bilder aufhalten
das ergibt doch keinen Sinn
das würde das ganz ja nichtmal leichter machen, sondern schwerer, da die Bilder dann ne extra behandlung brauchen
 
oh sorry nicht richtig gelesen
dann wärs aber einfacher das nicht nach der Dateiendung
sondern nach dem Typ den der Server mitschickt zu machen
also zB
image/gif
image/jpg usw.

dann brauchste nur die mit image vorne wegmachen
und hast gleich alle Bilder weg
 
Hallo,

könnt ihr mir irgend eine Quelle nennen wo der Kram im Detail erklärt ist. Am besten wäre natürlich Quellcode.
 
es geht darum einen Proxy in Java zu erstellen der aus einer Webseite die Bilder herausfiltert.
du solltest mal genau schauen was die Aufgabenstellung ist

Variante A:
ein Proxy unterdrückt einfach ALLE Anfragen nach Bildern, der ganze restliche Traffic wird einfach durchgereicht
(relativ - aber nur relativ - einfach)
im browser dann kleine rote kreuze, plus langes warten usw.

Variante B:
=Variante A UND:
der Proxy fängt html Dateien ab und entfert alle img Tags aus den Webseiten bevor er sie an den Aufrufer durchgibt??


aber am besten einfach mal mit der Netzwerkprogrammierung anfangen, die Aufgabe ist nicht ohne gute Vorkenntnisse zu lösen

http://www.galileocomputing.de/open...sel16_006.htm#Rxx747java16006040006391F036100
 
hi das sind doch Hausaufgaben im Webtech?
oder?

hab das gleiche Problemm
Also du must ein Url Objekt bilden und da draus UrlConnection.
URLConnection hat eine Methode die heist getContentType();
mit ihr kannst prüfen was angefordert wurde und wennn das image/gif sind dann kannst du reagrieren.
 
genau das meinte ich ja
das Problem an der ganzen Sache ist nur das von bleiglanz
die Ladezeit wird sehr verzögert und alles voller roter kreuze
man kann natürlich stattdessen einfach ein Fakebild nehmen
immer wenn der ContentType ein Image ist nachgucken wie groß es ist
und ein Fakebild mit gleicher größe mitgeben

das sollte aufjedenfall leichter sein als die img Tags rauszufiltern
vorrallem da Bilder ja auch so übertragen werden können
 
Hallo könnt ihr mir varraten warum die Bilder so nicht angezeigt werden?


Code:
import java.net.*;
import java.io.*;


public class SocketServer
{	
	public static void main(String [] ags)
	{
		try 
		{
			// Server Socket für Port 80 wird erzeugt
			ServerSocket serverSocket = new ServerSocket(80);		
			
			for(;;) 
			{
			 	System.out.println("Warte auf Verbindung auf Port 80");
			 	Socket clientSocket = serverSocket.accept();		
			 	System.out.println("Verbindung hergestellt");
			 		 	
			 	 	
			 	URL myURL = new URL("...");
				URLConnection uc = myURL.openConnection();
				uc.connect();
					
				// Ausgabe der Schlüssel mit entsprechendem Header Feld
				int n = 1;
				String key;
				while ((key = uc.getHeaderFieldKey(n)) != null)
				{
					String value = uc.getHeaderField(n);
					System.out.println(key + ": " + value); 
					n++;
				}
	
				
				String line;
				BufferedReader in = new BufferedReader(new InputStreamReader(uc.getInputStream()));
				OutputStreamWriter out = new OutputStreamWriter(clientSocket.getOutputStream());	
				
				while ((line = in.readLine()) != null)
				{
					out.write(line);
				}
				
				out.flush();				
				out.close();				
			 	clientSocket.close();  		
			 }
		}
		catch (IOException e)
		{
			System.err.println(e);
		}
	}
}
 
du musst Buffered Streams nehmen
die sind für sowas am besten geeignet
also BufferedInputStream und BufferedOutputStream

das mit dem Reader kannst du dir wie ein Texterkennungsprogramm vorstellen
wenn du dem nen Bild zeigst kann das Prog nix damit anfangen
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben