500 Internal Server Error mit Python POST-Request

F

Furtano

Gast
Hi,

ich habe in Python ein kleines Programm geschrieben was einen POST-Request sendet an eine Seite.
Leider bekomme ich immer einen 500 Internal Server Error zurück.

Der POST-Request in Python ist aber der selbe wie der POST Request in Firefox.

Wisst ihr woran das liegen könnte?
 
Also rein theoretisch.
Praktisch habe ich nicht in die IP Pakete reingeschaut was genau da codiert ist.
Wie könnte ich das machen?
 
Manche REST-Services benutzen auch Session Cookies, und dergleichen. Da solltest du auch drauf achten, wenn ein Login/Authentifizierung nötig ist.

Und wenn du mit Seiten interagierst, die nicht als Webservice ausgelegt sind, gibt es in manchen Formularen auch versteckte Eingebefelder. Ich habe auch schon erlebt, dass der Referer überprüft wurde.

Benutzt du Python Requests? Kann ich nur empfehlen. Macht den Umgang mit Cookies und Sessions kinderleicht.
Code:
s = requests.session()

s.get('http://httpbin.org/cookies/set/sessioncookie/123456789')
r = s.get("http://httpbin.org/cookies")

print r.text
# '{"cookies": {"sessioncookie": "123456789"}}'
 
Wireshark erkennt meine Netzwerkkarte nicht.
Firebug ist wie gesagt 1:1 mit dem Request.

Quellcode ist nicht öffentlich.
 
Dann wirds schwer, dir zu helfen...

Jetzt mal im Ernst. Was sendet dein Phyton raus, im Allgemeinen hast du einfach kein gültiges HTTP geschrieben (Apache macht ein z.B. 500, wenn du nur \n statt \r\n geschrieben hast).

Leite deine Anfrage doch in eine Datei um, dann kannstes sehen, oder installier dir eine VM und da rein Wireshark (mit nem NAT).
 
@Hancock: schon klar, der 500er liegt ja nicht in seiner Verantwortung. :)
Geht nur darum, dass die Gegenseite vielleicht einen 500er wirft, wenn nicht alle Eingabeparamter so sind, wie erwartet.

@Furtano: wie gesagt: hast du auch an Cookies/Referer/UserAgent gedacht?
 
Zurück
Oben