(Leicht) Http POST request

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
Lunarstorm
User
Beiträge: 3
Registriert: Donnerstag 12. März 2009, 21:52

Donnerstag 12. März 2009, 22:14

Hallo,

weil Python mir relativ neu ist und ich es neben C++ lerne habe ich mich hier mal angemeldet.

Es geht um folgendes Problem:
Ich habe mit urlib2 ClientCookie und vielen anderen versucht ein C++ Programm von mir in Python nachzuprogrammieren, was sich auf einer Website über post/get-Befehle anmeldet und Formulare ausfüllt.

Mit den Get-Befehlen klappt es super, aber sobald ein Post Befehl dazukommt (im Parameter "Data" steht etwas) wird dieser zwar gesendet, aber die cookies fehlen auf einmal im request :oops:

Hier der Code:

Code: Alles auswählen

import urllib
import urllib2

values = {'user' : 'Lunarstorm',  'pass' : 'geheim'}
testdata = {'submit' : 'data'}

opener = urllib2.build_opener(urllib2.HTTPCookieProcessor())
urllib2.install_opener(opener)

# Login
request = urllib2.Request("http://localhost/index.php?action=login",urllib.urlencode(values))
response = urllib2.urlopen(request)

# Funktioniert wunderbar, cookies werden gesendet
response = urllib2.urlopen("http://localhost/query.php?menu=2BA")

# Funktioniert nicht, cookies werden nicht gesendet
request = urllib2.Request("http://localhost/submitdata.php",urllib.urlencode(testdata))
response = urllib2.urlopen(request)

# Funktioniert wieder, cookies werden gesendet
response = urllib2.urlopen("http://localhost/query.php?menu=2BA")
Wenn ich es mit ClientCookie mache kommt genau das gleiche Problem und es liegt auch nicht daran, dass es localhost ist, denn es funktioniert auch mit meinem webspace nicht.

Für Hilfe wäre ich unendlich Dankbar.

Gruß
Lunarstorm

PS: Dass es fehlt finde ich mit einem Packet Monitor herraus
Zuletzt geändert von Lunarstorm am Donnerstag 12. März 2009, 22:52, insgesamt 1-mal geändert.
nemomuk
User
Beiträge: 862
Registriert: Dienstag 6. November 2007, 21:49

Donnerstag 12. März 2009, 22:25

Schau dir mal mechanize oder auch Selenium an.
Lunarstorm
User
Beiträge: 3
Registriert: Donnerstag 12. März 2009, 21:52

Donnerstag 12. März 2009, 22:28

SchneiderWeisse hat geschrieben:Schau dir mal mechanize oder auch Selenium an.
Ich habe alle urllib2's mal mit 'mechanize' ersetzt, bekomme aber genau den gleichen Fehler. Das liegt wahrscheinlich daran, dass mechanize auf urllib2 basiert oder so :(

Edit: Hier der mechanize code:

Code: Alles auswählen

import urllib
import mechanize

values = {'user' : 'Lunarstorm',  'pass' : 'geheim'}
testdata = {'submit' : 'data'}

# Login
request = mechanize.Request("http://localhost/index.php?action=login",urllib.urlencode(values))
response = mechanize.urlopen(request)

# Funktioniert wunderbar, cookies werden gesendet
response = mechanize.urlopen("http://localhost/query.php?menu=2BA")

# Funktioniert nicht, cookies werden nicht gesendet
request = mechanize.Request("http://localhost/submitdata.php",urllib.urlencode(testdata))
response = mechanize.urlopen(request)

# Funktioniert wieder, cookies werden gesendet
response = mechanize.urlopen("http://localhost/query.php?menu=2BA")  
Wie gesagt, genau das gleiche Problem. Bei dem zweiten Post request werden keine cookies mitgesendet und der request wird deshalb vom server abgelehnt mit einem session id error.
Benutzeravatar
crackpod_
User
Beiträge: 40
Registriert: Mittwoch 3. Dezember 2008, 21:46

Donnerstag 12. März 2009, 23:04

Schau dir mal besser die Browser() Klasse im mechanize Modul an, damit solltest du weiterkommen.
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Freitag 13. März 2009, 10:06

Lunarstorm hat geschrieben:Ich habe alle urllib2's mal mit 'mechanize' ersetzt, bekomme aber genau den gleichen Fehler. Das liegt wahrscheinlich daran, dass mechanize auf urllib2 basiert oder so :(
Weil das auch was ganz anderes ist?! Ich kann ja auch nicht erwarten, dass wenn ich in ein Flugzeug einsteige dort ein Lenkrad ist, nur weil ein Flugzeug unter anderem auch Räder hat.

Du wirst wohl nicht drumrum kommen die Dokumentation zu lesen.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Lunarstorm
User
Beiträge: 3
Registriert: Donnerstag 12. März 2009, 21:52

Freitag 13. März 2009, 14:40

Hat sich alles gegessen. Danke euch allen mit mechanize funktioniert es wunderbar.
Antworten