Java拦截HTTP请求

3
什么是最好的方法呢?我尝试使用ServerSocket并将代理设置端口更改为将所有流量发送到我的Java程序。虽然连接成功,但我似乎无法通过clientSocket.readLine()读取请求。
我不想知道如何使我的代码工作,这就是为什么我不会发布代码的原因。我想知道拦截HTTP请求以进行读取的最佳方法是什么。 我猜我会采用一种方法,更改代理端口以将流量重定向到我的应用程序(就像Burp Suite和WebScarab等程序所做的那样)。
换句话说,有人能给我一个示例或伪代码,说明Burp Suite/WebScarab如何通过更改代理端口来读取HTTP请求吗?

我认为你可以尝试使用Apache Mina来实现HTTP代理。 - Leo
这是一个简单的Java代理服务器的Github存储库:https://github.com/adamfisk/LittleProxy - Mike B
我不需要一个真正的代理,只需要一种像Burp Suite或WebScarab那样读取HTTP请求的方法。 - MrLolEthan
这就是我想要的。只读取HTTP请求。而且Mike B,这不是我要问的。 - MrLolEthan
不确定您使用的是哪些库,但我正在尝试解决相同的问题,并发现了这个链接:https://jersey.java.net/documentation/latest/filters-and-interceptors.html#d0e9720拦截器听起来像是您正在寻找的模式? - Fred
1个回答

0

试试这个... 别忘了配置你的浏览器。

ServerSocket ss=new ServerSocket(8080);
   while(true){
   Socket s=ss.accept();
   BufferedReader sin=new BufferedReader(new InputStreamReader(s.getInputStream()));
   String l=sin.readLine();
   System.out.println(l);
   URL url = new URL("http://your_URL");
   URLConnection urlCon = url.openConnection();

   BufferedReader src=new BufferedReader(new InputStreamReader(urlCon.getInputStream()));
   String srst;
   while ((srst=src.readLine()) != null)
   System.out.println(srst); 
     }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接