2012-01-30 34 views
7

Tôi đang cố gắng in ra phần thân của một phản hồi HTTP bằng Python.Proxy bị xoắn Python - cách chặn các gói

Đây là mã của tôi sofar:

from twisted.web import proxy, http 
from twisted.internet import reactor 
from twisted.python import log 
import sys 

log.startLogging(sys.stdout) 

class ProxyFactory(http.HTTPFactory): 
    protocol=proxy.Proxy 

reactor.listenTCP(8080, ProxyFactory()) 
reactor.run() 

Khi tôi kết nối trình duyệt của tôi với localhost: 8080, tôi có thể thấy rằng tất cả các yêu cầu của tôi đang được đạo diễn thông qua proxy Python chạy cục bộ. Nhưng làm thế nào để tôi 1) in ra nội dung phản hồi và 2) chỉnh sửa nội dung phản hồi trước khi gửi lại cho trình duyệt?

Tôi hy vọng một người nào đó có thể chỉ cho tôi đúng hướng - xin lưu ý rằng tôi rất mới với Python!

Trả lời

9

Override phương pháp dataReceived của một giao thức (proxy.Proxy trong trường hợp của bạn) và xử lý các thay đổi dữ liệu trong phương pháp đó:

from twisted.web import proxy, http 
from twisted.internet import reactor 
from twisted.python import log 
import sys 

log.startLogging(sys.stdout) 

class MyProxy(proxy.Proxy): 
    def dataReceived(self, data): 

     # Modify the data here 
     print data 

     # perform the default functionality on modified data 
     return proxy.Proxy.dataReceived(self, data) 

class ProxyFactory(http.HTTPFactory): 
    protocol=MyProxy 

factory = ProxyFactory() 
reactor.listenTCP(8080, factory) 
reactor.run() 
+0

Hey, cảm ơn rất nhiều cho câu trả lời đó. Tôi có ngoại lệ - Tệp "proxy4.py", dòng 15, trong dataReceived \t trả lại siêu (MyProxy, self) .dataReceived (dữ liệu) \t ngoại lệ.TypeError: phải nhập, không phải classobj – Eamorr

+0

Đã sửa mã. Bạn có thể kiểm tra xem nó vẫn đang tăng TypeError ?. –

+0

Cảm ơn rất nhiều - bây giờ nó đang hoạt động ... – Eamorr