我有一个任务用java编写代理服务器。我必须能够读取和修改http头并阻止提供的黑名单上的一些网站。用Java编写代理服务器 - 如何?
我用java的经验,但从来没有与HTTP,插座,连接端口等工作..
已经几天试用谷歌一些例子或教程,但我觉得要么是非常简单和唐没有全面的能力,或者非常复杂或不能工作。
你能帮我一些相关的例子,链接,教程等...?
我也注意到,我发现一个网页与开源代理服务器,但他们并没有真正的工作或非常复杂。
谢谢!
编辑:
您好,我发现一些代码,侦听来自浏览器来连接并开始一个新的线程为每个连接。
public class Main {
public static void main(String[] args) throws IOException {
ServerSocket serverSocket = null;
boolean listening = true;
int port = 10000; //default
try {
port = Integer.parseInt(args[0]);
} catch (Exception e) {
//ignore me
}
try {
serverSocket = new ServerSocket(port);
System.out.println("Started on: " + port);
} catch (IOException e) {
System.err.println("Could not listen on port: " + args[0]);
System.exit(-1);
}
while (listening) {
new ProxyThreadServer(serverSocket.accept()).start();
}
serverSocket.close();
}
}
的一部分,我真的很困惑与是如何转移的请求到服务器(URL),从它那里得到的响应并发送到浏览器的响应。
所以基本上我需要4个步骤:
Listen and get the request from a browser.
Forward the request to the web-server.
Get the response from the web server.
Send the response to the browser.
额外的功能正在与页眉和阻止某些联系。但是,开始时这4个步骤将会很好。
这是太开放和模糊的话题在这里。你有关于如何写一小部分的问题吗?您是否了解代理服务器的工作原理,例如_什么它?_ – 2011-04-23 20:33:01
嗨,经过一段时间之后。我确实了解代理如何工作。它基本上应该在浏览器和网站的中间。它必须作为双向渠道运作。基本的需求就是成为一个透明的隧道。额外的功能应该是能够编辑标题和过滤一些网站或IP。 – Gil 2011-04-23 21:28:59