Java Proxy

S

Stefan_86

Hallo, folgendes Beispiel habe ich aus einem Buch entnommen. Es handelt sich dabei um einen Proxy Server, in Java geschrieben:

Code:
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;

public class ProxyServer {
	
	public static void main (String[] args) throws IOException {
		
		try {
			String host="www.eurotours.at";
			int remoteport=80;
			int localport=8012;
			
			System.out.println("Starting proxy for "+host+":"+remoteport+" on port"+localport);
			
			runServer(host,remoteport,localport);
		}
		catch (Exception e) {
			System.err.println(e);
			System.err.println("Usage: java SimpleProxyServer " +"<host> <remoteport> <localport>");
		}
			
			
		}

	public static void runServer(String host, int remoteport, int localport) throws IOException {
		ServerSocket ss = new ServerSocket(localport);
		
		final byte[] request = new byte[1024];
		byte[] reply = new byte[4096];
		
		while(true) {
			Socket client = null, server = null;
			try {
				client = ss.accept();
				
				final InputStream from_client = client.getInputStream();
				
				final OutputStream to_client= client.getOutputStream();
				
				
				try { server = new Socket(host, remoteport); }
				
				catch (IOException e) {
					PrintWriter out = new PrintWriter(new OutputStreamWriter(to_client));
					out.println("Proxy server cannot connect to " + host + ":" +
							remoteport + ":\n" + e);
					out.flush();
					client.close();
					continue;
					}
				
				// Get server streams.
				final InputStream from_server = server.getInputStream();
				
				final OutputStream to_server = server.getOutputStream();
				
				
				Thread t = new Thread() {
					public void run() {
						int bytes_read;
						try {
							while((bytes_read = from_client.read(request)) != -1) {
								
								to_server.write(request, 0, bytes_read);
								
								to_server.flush(); 
								
								}
							}
						catch (IOException e) {}
						
						try {to_server.close();} catch (IOException e) {}
						}
						};

						// Start the client-to-server request thread running
						t.start();
						
						int bytes_read;
						try {
							while((bytes_read = from_server.read(reply)) != -1) {
								to_client.write(reply, 0, bytes_read);
						
								to_client.flush();
							}
						}
						catch(IOException e) {}
						
						// The server closed its connection to us, so close our
						// connection to our client. This will make the other thread exit.
						to_client.close();
						}
						catch (IOException e) { System.err.println(e); }
						// Close the sockets no matter what happens each time through the loop.
						finally {
							try {
								if (server != null) server.close();
								if (client != null) client.close();
							}
							catch(IOException e) {}
				
						}
			
		
			}
	
	}
	
	}
Ich habe das ganze auchmal ausprobiert und es funktioniert auch soweit.
Jetzt aber mein Problem: Ich möchte aus dem HTML-Code einer Webseite, die Bilder filtern, also löschen. Dazu müsste ich ja irgendwie die Zeilen, die mit <img beginnen im code suchen und dann löschen irgendwie.
Oder anders gefragt: Ich müsste ja dann den Outputstream to_client irgendwie abfangen und "filtern"?
 

Neue Beiträge

Zurück