Реализовать web-proxy на .NET
Имеется следущая задача: необходимо реализовать веб-прокси на .NET.
Что это означает:
Прокси должна слушать заданный порт и принимать входящие запросы от клиентов. На каждый запрос клиента инициируется соответствующий запрос на удаленный сайт. Если content-type ответа равен text/html, необходимо изменять все локальные аттрибуты html тегов на локальные, например frame src="http://domain.com/" изменяется на src="http://myproxy.com/?http:%3A%3Adomain.com%3A" итд.
Требования:
1. Прокси должна использовать HttpListener, а не IIS.
2. Это должно быть консольное приложение
3. Для получения удаленного контента должен использоваться HttpWebRequest/HttpWebResponse
4. Максимально возможное количество HTTP-заголовков должны копироваться из исходного запроса
5. Парсинг ответа HttpWebResponse (для замены src,href и так далее) должен проводится "на лету". То есть читаем ответ, тут же его разбираем SAX-парсером и пишем в измененном виде в outputstream, а НЕ читаем ответ в переменную и потом ее разбираем.
6. Должны поддерживаться как GET, так и POST запросы. Куки и другие заголовки клиента передаются как есть.
Писать нужно на .NET, поскольку затем программа будет интегрироваться с другим софтом.