axeljaeger
03-01-2004, 20:21
Ich muss ein Mini-Programm schreiben, das eine Datei von einem Server per HTTP holen soll. Das Problem: Zwischen Programm und Server steht ein Proxyserver. Lokal läuft das Skript schön, auch bekomme ich in meinem Skript die Fehlermeldung vom Proxy, wenn der Proxy offline ist. (Ist eine HTML-Seite). Wenn ich aber ins Netz gehe und versuche die Datei zu laden, bekomme ich bei der Anforderung vom Proxy nur ein leeres HTTP 200 OK. Bei jeder beliebigen Datei. Es sieht für mich danach aus, als müsste man noch ein bißchen mehr machen, als nur den Proxy als Server bei meinem Socket anzugeben. Hat irgendjemand eine Anleitung, wie man einen HTTP-Proxy um eine Datei bittet? Hier mal der Code, den ich bisher verwende:
#!/usr/bin/env python
import socket
HOST = '192.168.0.1' # ProxyIP
PORT = 6588 # Proxyport
b = "-----------------------------305242850528394"
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))
s.send("POST http://bfc.tuxipuxi.de/upload.php HTTP/1.1\n")
s.send("Host: bfc.tuxipuxi.de\n")
s.send("User-Agent: HTTP upload tunnel client\n")
s.send("Accept: text/html\n")
s.send("Accept-Charset: iso-8859-1,*,utf-8\n")
s.send("Content-type: multipart/form-data; boundary="+b+"\n")
d = "--" + b + "\nContent-Disposition: form-data; name=\"q\"\n\nx3x\n"
s.send( "Content-Length: " + str(len(d)) + "\n\n")
s.send(d)
s.send(b + "--\n")
o = s.recv(10000)
s.close()
print o
Es wird auf der Konsole die komplette Antwort vom Server ausgegeben. Das Skript soll ein POST-Request abschicken, und zwar mit den Daten x3x als gesendete Datei. Lokal geht das wie gesagt. Vielen Dank für jede Hilfe.
(upload.php gibt es natürlich nicht auf dem Server, oder jedenfalls nicht mehr, sonst könnte mir ja jeder den Server mit diesem schönen Skript zumüllen)
#!/usr/bin/env python
import socket
HOST = '192.168.0.1' # ProxyIP
PORT = 6588 # Proxyport
b = "-----------------------------305242850528394"
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))
s.send("POST http://bfc.tuxipuxi.de/upload.php HTTP/1.1\n")
s.send("Host: bfc.tuxipuxi.de\n")
s.send("User-Agent: HTTP upload tunnel client\n")
s.send("Accept: text/html\n")
s.send("Accept-Charset: iso-8859-1,*,utf-8\n")
s.send("Content-type: multipart/form-data; boundary="+b+"\n")
d = "--" + b + "\nContent-Disposition: form-data; name=\"q\"\n\nx3x\n"
s.send( "Content-Length: " + str(len(d)) + "\n\n")
s.send(d)
s.send(b + "--\n")
o = s.recv(10000)
s.close()
print o
Es wird auf der Konsole die komplette Antwort vom Server ausgegeben. Das Skript soll ein POST-Request abschicken, und zwar mit den Daten x3x als gesendete Datei. Lokal geht das wie gesagt. Vielen Dank für jede Hilfe.
(upload.php gibt es natürlich nicht auf dem Server, oder jedenfalls nicht mehr, sonst könnte mir ja jeder den Server mit diesem schönen Skript zumüllen)