【问题标题】:Java Intercept HTTP RequestJava 拦截 HTTP 请求
【发布时间】:2014-02-17 20:08:10
【问题描述】:

最好的方法是什么?我尝试使用 ServerSocket 并更改我的代理设置端口以将所有流量发送到我的 Java 程序。好吧,它连接了,但我似乎无法使用 clientSocket.readLine() 读取请求。

我不想知道如何让我的代码工作,这就是为什么我不会发布代码。我想知道拦截 HTTP 请求以进行读取的最佳方法是什么。我猜我会采取一种方法来更改代理端口以将流量重定向到我的应用程序(就像 Burp Suite 和 WebScarab 这样的程序所做的那样)。

换句话说,有人可以给我一个示例或伪代码,说明 Burp Suite/WebScarab 如何仅通过更改代理端口来读取 HTTP 请求?

【问题讨论】:

  • 我觉得你可以试试 apache mina 来实现一个 http 代理
  • 这是一个简单的 Java 代理服务器的 Github 存储库:github.com/adamfisk/LittleProxy
  • 我不想要一个真正的代理,只是一种读取 HTTP 请求的方法,比如 Burp Suite 或 WebScarab。
  • 这就是我想要的。仅读取 HTTP 请求。还有迈克 B,这不是我要问的。
  • 不确定您使用的是什么库,但我正在尝试解决同样的问题并遇到了这个问题:jersey.java.net/documentation/latest/… Interceptors 听起来像您正在寻找的模式?

标签: java http proxy readline intercept


【解决方案1】:

试试这个..永远不要忘记配置您的浏览器。

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); 
     }

【讨论】:

    猜你喜欢
    • 2017-02-28
    • 1970-01-01
    • 1970-01-01
    • 2019-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-31
    • 2013-02-02
    相关资源
    最近更新 更多