Reputation: 2070
I need something that can intercept HTTP requests, extract their information (content, destination,...), perform various analysing tasks, and finally determine if the request should be dropped or not. Legal requests must than be forwarded to the application.
Basically, same functionalities as an IDS. But mind, I am NOT looking for a packet sniffer/filter. I want something that operates on the HTTP level.
It should be implementable on linux and run on the same system as the application(s) to which the requests are headed.
As a bonus, https could be supported (unencrypted viewing of the request content)
Upvotes: 10
Views: 25648
Reputation: 16416
Try mitmproxy.
mitmproxy is an SSL-capable man-in-the-middle proxy for HTTP. It provides a console interface that allows traffic flows to be inspected and edited on the fly.
mitmdump is the command-line version of mitmproxy, with the same functionality but without the user interface. Think tcpdump for HTTP.
I setup an example Jekyll Bootstrap app which is listening on port 4000 on my localhost. To intercept it's traffic I'd do the following:
% mitmproxy --mode reverse:http://localhost:4000 -p 4001
Then connect to my mitmproxy on port 4001 from my web browser (http://localhost:4001
), resulting in this in mitmproxy:
You can then select any of the GET
results to see the header info associated to that GET
:
Upvotes: 16
Reputation: 114
Why not Apache HTTP Client http://hc.apache.org/httpclient-legacy/tutorial.html This simple lib is useful.
Upvotes: 0
Reputation: 2070
I ended up using LittleProxy because it is java, fast and lightweight. It is a originally forward proxy, so I had to adjust it for reverse proxy functionality by forwarding every request to the local host. I did this simply by editing the HttpRequestHandler. I hardcoded the host and port address.
hostAndPort = "localhost:80";
Upvotes: 0
Reputation: 61148
I use Wire Shark for this, if you provide all the server certs it wil even decypt HTTPS.
Upvotes: 2
Reputation: 1
You should learn more about ICAP, then make an ICAP server of your HTTP filtering application.
Upvotes: 0
Reputation: 2675
You should be able to use squid proxy for that (https://en.wikipedia.org/wiki/Squid_(software))
Upvotes: 1