[zorp-hu] HTTP POST DATA elemzes (AnyPyProxy)
Viktor Tuska
v.tuska at con.hu
2007. Május. 23., Sze, 10:56:57 CEST
Udv,
a kovetkezo config-al probalkozom a HTTP forgalom POST tipusu
request_method-jainak adatat elemezni:
"
class myHttpProxy(HttpProxy):
def config(self):
HttpProxy.config(self)
self.request["POST"] = (HTTP_REQ_POLICY, self.isok)
def isok(self, method, url, version):
url = unquote(url)
if ( url.find("/xxx/index.php") > -1 ):
self.request_stack["POST"] = (HTTP_STK_DATA,
magicProxy )
class magicProxy(AbstractAnyPyProxy):
def config(self):
AbstractAnyPyProxy.config(self)
def proxyThread(self):
client = self.session.client_stream
server = self.session.server_stream
user = client.read(128)
#itt majd elkovetek valamit a "user"-el, ha mar
mukodik... ;)
server.write(user)
while user:
try:
user = client.read(128)
server.write(user)
except IOError, e:
log("http.info", 2, e.__str__());
break
"
Jonak tunik ez igy?
Hogyan tudnek a client_stream hosszanak megfelelo adatot kiolvasni
mashogyan? (Exception nelkul?)
Esetleg hogyan lehetne megadni, hogy csak a "Content-Length"-nek
megfelelo adatot olvassak a stream-bol? Probaltam kinyerni a kovetkezo
kodreszlet segitsegevel, de ugy tunik mintha a request_header
feldolgozasa a request_stack-e utan lenne...
"
self.request_header["Content-Length"] = (HTTP_HDR_POLICY, self.getlength)
def getlength(self, name, value):
self.LENGTH = self.current_header_value
return HTTP_HDR_ACCEPT
"
Kiprobaltam es olyan erdekesseget tapasztalok, hogy amikor elkuldom a
POST kerest, akkor a browser-em nem kap vissza valaszt, pedig log-olva a
stream-bol megjelenik a POST altal elkuldott adat... Lehet rosszul
emlekszem, de mintha lett volna olyan allapot, amikor ez mukodott volna,
de olyan sok variaciot kiprobaltam, hogy sajna mar nem tudom csak
kepzeltem-e, hogy mukodott... :(
Koszontem,
Viktor
További információk a(z) zorp-hu levelezőlistáról