Python/Twisted, фильтрующий http-прокси
На самом деле это продолжение уже отдной из моих тем, которая находится вот тут: http://www.linux.org.ru/view-message.jsp?msgid=4180540
Вкратце: я хотел проксировать и фильтровать http (подменять контент и заголовки, и только потом отдавать клиенту/серверу). Сначала пытался сделать icap-сервер для squid, но ничего не получилось (точней понял, что затраченное на это время совсем бесполезно).
Сейчас я пытаюсь написать обработчик на python, используя twisted. Изучив http.py и proxy.py, подготовил небольшую заготовку:
from twisted.web import proxy, http
from twisted.internet import reactor
from twisted.python import log
class ProxyClientFactory(proxy.ProxyClientFactory):
pass
class ProxyRequest(proxy.Request):
protocols = {'http': ProxyClientFactory}
class Proxy(proxy.Proxy):
requestFactory = ProxyRequest
class ProxyFactory(http.HTTPFactory):
protocol = Proxy
Запускаю вот так:
#!/usr/bin/python
import sys
import filter
from twisted.python import log
from twisted.internet import reactor
log.startLogging(sys.stdout)
reactor.listenTCP(8080, filter.ProxyFactory())
reactor.run()
И мне кажется, что наследуя парочку классов, я ничего не изменил в логике работы сервера. Но оно не работает. Я долблю 8080 порт браузером, телнетом (GET / HTTP/1.0\r\nHost: linux.org.ru\r\n\r\n), а оно не отвечает. И в логах ничего интересного не пишет. Я в тупике. Вот логи:
$ ./proxy.py
/usr/lib64/python2.6/site-packages/twisted/internet/_sslverify.py:4: DeprecationWarning: the md5 module is deprecated; use hashlib instead
import itertools, md5
/usr/lib64/python2.6/site-packages/twisted/web/microdom.py:157: SyntaxWarning: assertion is always true, perhaps remove parentheses?
assert (oldChild.parentNode is self,
2009-11-05 22:21:55+0700 [-] Log opened.
2009-11-05 22:21:55+0700 [-] filter.ProxyFactory starting on 8080
2009-11-05 22:21:55+0700 [-] Starting factory <filter.ProxyFactory instance at 0x7d4560>
Причем если не наследовать ничего из twisted, то все прекрасно работает. Признаюсь, я новичок в python, а тем более в twisted, вдруг что-то упустил из виду? Спасибо за внимание. Надежда только на вашу помощь.