I’m trying to create a simple web filtering app in python. The way I want to do this is to monitor traffic on ports tcp 80/443 (http) and if there is traffic, I want to check something before I let it go through. If it fails the check, I would like for the user to be redirected to a page of my choosing.
So my question is, when the user visits http://www.google.com in the browser, is there a way that I can intercept that request, and is there a way I can redirect them to another page by my choosing?
You need to write a web proxy, and set your web clients proxy server to http://localhost:8000/ (or whatever the proxy is listening on).
Your web client will then send HTTP like this:
GET http://www.google.com
to your proxy which it must then rewrite as:
GET /
and send on to http://www.google.com, getting the response and then sending it back on the original socket to the client. Note that explanation is massively simplified.
Anyway, its all standard stuff and I suspect Python web proxies exist already for you to hack on.
Edit: http://proxies.xhaus.com/python/