Eu estou tentando fazer um SERVIDOR proxy em Java, mas por nenhum motivo mesmo. Quero fazer na verdade um tipo de AdBlock pro IE e pro Chrome e outros browsers que ainda não tem AdBlock.
Eu já fiz o proxy, mas o que acontece é que muitos sites não funcionam.
As imagens ficam todas corrompidas. Acentos não aparecem.
Outros sites nem funcionam, ou demoram vários minutos para carregar.
Há algum jeito de fazer funcionar corretamente?
E como é um proxy rodando na minha própria máquina, quero que fique rápido, há alguma dica pra não ficar lento?
[code]import java.net.;
import java.io.;
import java.util.;
import org.apache.commons.io.;
public class FibDraw {
public static void main(String[] args) throws Exception {
ServerSocket s = new ServerSocket(123);
while (true) {
Socket ac = s.accept();
System.out.println("Recebendo requerimento browser com proxy...");
BufferedReader rrad = new BufferedReader(new InputStreamReader(ac.getInputStream()));
OutputStreamWriter rsnd = new OutputStreamWriter(ac.getOutputStream());
StringBuilder prxreq2 = new StringBuilder();
String temp;
String host = "";
while (!(temp = rrad.readLine()).equals("")) {
if (temp.indexOf("Accept-Encoding") == -1) prxreq2.append(temp); prxreq2.append("\r\n");
if (temp.indexOf("Host:") > -1) host = temp.split(": ")[1];
}
prxreq2.append("\r\n");
String prxreq = new String(prxreq2);
System.out.println(prxreq);
System.out.println("Re-enviando para o servidor...");
Socket cl = new Socket(host,80);
OutputStreamWriter d = new OutputStreamWriter(cl.getOutputStream());
d.write(prxreq);
d.flush();
System.out.println("Esperando resposta do servidor...");
String resp = IOUtils.toString(cl.getInputStream());
System.out.println(resp);
d.close();
cl.close();
System.out.println("Enviando resposta do servidor para o browser...");
rsnd.write(resp);
rsnd.flush();
rsnd.close();
ac.close();
}
}
}[/code]
Eu creio que é alguma coisa haver com o BufferedReader, mas o problema é que se eu faço “!= null” não dá certo. tem que ser linha.equals(""), como vou fazer isso?
E além disso ignorem que a classe se chama FibDraw, porque eu estava fazendo uns testes lá.