littleproxy 是用netty实现的一个 http代理服务器,代码如下
以下会打印访问的所有url。littleproxy可以修改代理的请求头,内容,参数,
也可以修改服务器返回来的请求头和内容,非常方便。
项目地址 https://github.com/adamfisk/LittleProxy
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.http.HttpObject;
import io.netty.handler.codec.http.HttpRequest;
import io.netty.handler.codec.http.HttpResponse;
import org.littleshoot.proxy.HttpFilters;
import org.littleshoot.proxy.HttpFiltersAdapter;
import org.littleshoot.proxy.HttpFiltersSourceAdapter;
import org.littleshoot.proxy.HttpProxyServer;
import org.littleshoot.proxy.impl.DefaultHttpProxyServer;
public class LittleProxy {
public static void main(String[] args)throws Exception {
HttpProxyServer server =
DefaultHttpProxyServer.bootstrap()
.withPort(9911)
.withFiltersSource(new HttpFiltersSourceAdapter() {
public HttpFilters filterRequest(HttpRequest originalRequest, ChannelHandlerContext ctx) {
return new HttpFiltersAdapter(originalRequest) {
@Override
public HttpResponse requestPre(HttpObject httpObject) {
String uri = originalRequest.getUri();
System.out.println("uri:"+uri);
return null;
}
@Override
public HttpResponse requestPost(HttpObject httpObject) {
// TODO: implement your filtering here
return null;
}
@Override
public HttpObject responsePre(HttpObject httpObject) {
// TODO: implement your filtering here
return httpObject;
}
@Override
public HttpObject responsePost(HttpObject httpObject) {
// TODO: implement your filtering here
return httpObject;
}
};
}
})
.start();
}
}