1

J'ai de petites questions sur le fonctionnement d'un proxy HTTP, vu que j'essaie d'en faire un.

Pour la petite histoire :
j'ai un site web qui demande une authentification non supportée par une application (qui sait utiliser un proxy), mais que je sais réaliser via une lib Python.
L'idée est donc de faire un proxy qui va s'authentifier à la place du client. Mon proxy va rejouer les requêtes auprès du serveur via Curl, mais en s'authentifiant correctement.

J'arrive sans problème à faire un GET ou un HEAD, mais ça foire lamentablement dès que le client veut faire un POST. Il ne veut absolument pas envoyer ses données (quand je fais un .read(), ça ne se termine pas. J'ai cru comprendre qu'il fallait lui dire HTTP/1.1 100 Continue pour qu'il soit moins timide, mais ça n'a pas l'air de l'aider…
def handle_one_request(self): self.raw_requestline = self.rfile.readline(65537) if len(self.raw_requestline) > 65536: self.requestline = '' self.request_version = '' self.command = '' self.send_error(414) return if not self.raw_requestline: self.close_connection = 1 return if not self.parse_request(): # An error code has been sent, just exit return print('%s %s' % (self.command, self.path)) self.pycurl_obj.setopt(pycurl.URL, self.path) self.pycurl_obj.setopt(pycurl.HEADER, 1) self.pycurl_obj.setopt(pycurl.HTTPHEADER, [x.strip() for x in self.headers.headers]) if self.command not in ('GET', 'HEAD'): self.wfile.write("HTTP/1.1 100 Continue\r\n") self.wfile.flush() print('lecture') data = self.rfile.read() print('fin lecture', data) self.pycurl_obj.setopt(pycurl.UPLOAD, 1) self.pycurl_obj.setopt(pycurl.NOBODY, 0) self.pycurl_obj.setopt(pycurl.READFUNCTION, self.read_data) self.pycurl_obj.setopt(pycurl.CUSTOMREQUEST, self.command) self.pycurl_obj.setopt(pycurl.WRITEFUNCTION, self.wfile.write) self.pycurl_obj.perform() self.wfile.flush() # actually send the response if not already done.

Une idée ?

Sinon, l'autre idée est de faire comme pour monocle, je monte un serveur web, mais ça oblige à modifier les pages web reçues (donc un peu moins fiable, même si vu mon besoin, ça ne devrait pas être trop grave).
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant