使用Java过滤自编代理中的URL内容

使用Java过滤自编代理中的URL内容,java,url,proxy,filtering,Java,Url,Proxy,Filtering,我需要为我大学的作业编写一些代理服务器。它应该能够显示我们教授给出的一些简单网页的内容 此外,它应该过滤URL和URL内容,如果其中一个包含“我的坏数组”中的某个单词,则会阻止网页。 我的问题是,如何在Java中执行此过滤 代码: 您需要知道的一件事是,HTTP中的行终止符是\r\n,而不是\n。我使用\n制作了一个额外的lin,以直观地将我自己编写的消息与内容分开 import java.io.*; import java.net.ServerSocket; import java.net.S

我需要为我大学的作业编写一些代理服务器。它应该能够显示我们教授给出的一些简单网页的内容

此外,它应该过滤URL和URL内容,如果其中一个包含“我的坏数组”中的某个单词,则会阻止网页。 我的问题是,如何在Java中执行此过滤

代码:


您需要知道的一件事是,HTTP中的行终止符是\r\n,而不是\n。我使用\n制作了一个额外的lin,以直观地将我自己编写的消息与内容分开
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;

public class ProxyServer{
    //Crate the Port the user wants the proxy to be on

    static Scanner sc = new Scanner(System.in);
    public static final int portNumber = sc.nextInt();

    public static void main(String[] args) {
        ProxyServer proxyServer = new ProxyServer();

        proxyServer.start();

    }

    public void start() {
        System.out.println("Starting the SimpleProxyServer ...");
        try {
            String bad[]= new String[4];
            bad[0]= "Spongebob";
             bad[1]= "Britney Spears";
             bad[2]= "Norrköping";
             bad[3]= "Paris Hilton";

            ServerSocket serverSocket = new ServerSocket(ProxyServer.portNumber);
            System.out.println(serverSocket);
            byte[] buffer= new byte [1000000] ;

            while (true) {
                Socket clientSocket = serverSocket.accept();

                InputStream inputstream = clientSocket.getInputStream();

System.out.println(" DAS PASSIERT VOR DEM BROWSER REQUEST:");
                int n = inputstream.read(buffer);
                String browserRequest = new String(buffer,0,n);
                System.out.println("Das ist der Browserrequest: "+browserRequest);
                System.out.println("Das ist der Erste Abschnitt");

                int start = browserRequest.indexOf("Host: ") + 6;
                int end = browserRequest.indexOf('\n', start);
                String host = browserRequest.substring(start, end - 1);
                System.out.println("Connecting to host " + host);


                Socket hostSocket = new Socket(host, 80); //I can change the host over here
                OutputStream HostOutputStream = hostSocket.getOutputStream();

                PrintWriter writer= new PrintWriter (HostOutputStream);
                BufferedReader reader = new BufferedReader(new InputStreamReader(inputstream));
                String Input= null;
                while (((Input= reader.readLine())!= null)){
                    writer.write(Input);
                    writer.flush();
                    System.out.println("Empfangen vom Client: "+Input);
                }
//                for (int i=0; i<4;i++){
//                  if (inString.contains(bad[i])){
//                      System.out.println("Bye Idiot");
//                      break;
//                  }
//              }
                System.out.println("Forwarding request to server");
                HostOutputStream.write(buffer, 0, n);// but then the buffer that is fetched from the client remains same
                HostOutputStream.flush();


                InputStream HostInputstream = hostSocket.getInputStream();


                    OutputStream ClientGetOutput = clientSocket.getOutputStream();



                System.out.println("Forwarding request from server");

                do {
                    n = HostInputstream.read(buffer);
                    String inhalt= HostInputstream.toString();
                    System.out.println("das ist der inhalt vom HOST: "+ inhalt);
                    String vomHost = new String(buffer,0,n);
                    System.out.println("Vom Host\n\n"+vomHost);
//                    for(int i=0;i<n;i++){
//                    System.out.print(buffer[i]);
//                    }
                    System.out.println("Receiving " + n + " bytes");
                    if (n > 0) {

                        ClientGetOutput.write(buffer, 0, n);
                    }
                } while (HostInputstream.read(buffer)!= -1);//n>0

                ClientGetOutput.flush();
                hostSocket.close();
                clientSocket.close();
                System.out.println("End of communication");

            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}