Seite 1 von 1

Loginprobleme, Post, mechanize

Verfasst: Dienstag 29. Mai 2012, 15:33
von fantasy
Moin ich versuche mich schon länger bei einer Webseite mit mechanize anzumelden um mein Verständnis von mechanize und der Webprogrammierung mit Python generell zu festigen.

Es handelt sich um folgende Seite:
http://www.die-staemme.de/

Wenn man sich registriert hat, kann man sich anmelden, indem man zuerst die logininformationen eingibt und später den gewünschten Server auswählt.

Dies funktioniert mit 2 Post-Anfragen, bei einem Account mit dem usernamen "dada", dem passwort "passwort" und dem Server 82 sieht das so aus (Live HTTP headers):

Code: Alles auswählen

http://www.die-staemme.de/index.php?action=login&server_list=1&show_server_selection=1

POST /index.php?action=login&server_list=1&show_server_selection=1 HTTP/1.1
Host: http://www.die-staemme.de
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:13.0) Gecko/20100101 Firefox/13.0
Accept: application/json, text/javascript, */*; q=0.01
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate
DNT: 1
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With: XMLHttpRequest
Referer: http://www.die-staemme.de/index.php
Content-Length: 60
Pragma: no-cache
Cache-Control: no-cache
user=dada&password=passwort&cookie=false&clear=true
HTTP/1.1 200 OK
X-Powered-By: PHP/5.3.3-7+squeeze8
Content-Encoding: gzip
Vary: Accept-Encoding
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Date: Tue, 29 May 2012 14:23:35 GMT
Server: lighttpd/1.4.28
----------------------------------------------------------
http://cdn.tribalwars.net/graphic/world.png

GET /graphic/world.png HTTP/1.1
Host: cdn.tribalwars.net
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:13.0) Gecko/20100101 Firefox/13.0
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate
DNT: 1
Connection: keep-alive
Referer: http://www.die-staemme.de/merged/index.css?1338296463

HTTP/1.1 200 OK
Date: Tue, 29 May 2012 14:23:35 GMT
Expires: Sat, 09 Jun 2012 14:18:16 GMT
Last-Modified: Thu, 26 Apr 2012 13:47:14 GMT
Cache-Control: max-age=1209600
Content-Type: image/png
Etag: "1139726570"
Accept-Ranges: bytes
Server: lighttpd/1.4.28
Content-Length: 1470
----------------------------------------------------------
http://www.die-staemme.de/index.php?action=login&server_de82

POST /index.php?action=login&server_de82 HTTP/1.1
Host: http://www.die-staemme.de
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:13.0) Gecko/20100101 Firefox/13.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate
DNT: 1
Connection: keep-alive
Referer: http://www.die-staemme.de/index.php
Content-Type: application/x-www-form-urlencoded
Content-Length: 68
user=dada&password=16c42d7284d1883741ac10460690935fbe1970a7
HTTP/1.1 302 Found
X-Powered-By: PHP/5.3.3-7+squeeze8
Location: http://de82.die-staemme.de/login.php?sid=35ecfa704933&secret=0&mobile_no_force=0
Content-Encoding: gzip
Vary: Accept-Encoding
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Date: Tue, 29 May 2012 14:23:37 GMT
Server: lighttpd/1.4.28
Ich habe mich versucht einzuloggen, scheiterte aber kläglich.

Meine Versuche gingen in etwa in diese Richtung:

Code: Alles auswählen

import mechanize
data1 = '''POST /index.php?action=login&server_list=1&show_server_selection=1 HTTP/1.1
Host: http://www.die-staemme.de
User-Agent: Mozilla/5.0
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Content-Length: 51

user=dada&password=passwort&cookie=false&clear=true'''

data2 = '''POST /index.php?action=login&server_de82 HTTP/1.1
Host: http://www.die-staemme.de
User-Agent: Mozilla/5.0
Content-Length: 59

user=dada&password=16c42d7284d1883741ac10460690935fbe1970a7'''


br = mechanize.Browser(factory=mechanize.RobustFactory())
br.set_handle_robots(False)
br.open('http://www.die-staemme.de')
br.open('http://www.die-staemme.de/index.php?action=login&server_de82', data1) #br.open("url", postrequest)
br.open('http://www.die-staemme.de/index.php?action=login&server_de82', data2)
So etwas in diese Richtung funktioniert aber offensichtlich nicht. Ist mein Ansatz generell falsch? Habe ich das POST protocol einfach nicht verstanden?
Ich bin noch ziemlich unerfahren mit Python und webprogrammierung im Allgemeinen, weiss irgendjemand von den erfahreneren Usern hier weiter?

Freue mich auf jede Hilfe.

Re: Loginprobleme, Post, mechanize

Verfasst: Dienstag 29. Mai 2012, 15:53
von Sr4l
Warum gehst du dein Problem so an wie du es tust?

Auch mit dem Python Lib urllib baust du dir keine Post Request per Text.


Hier ein Bsp. aus der mechanize Bibliothek:

Code: Alles auswählen

    browser = mechanize.Browser(factory=mechanize.RobustFactory())
    browser.set_handle_robots(False)

    browser.open("http://pypi.python.org/pypi")
    browser.follow_link(text="Package Index", nr=0)
    browser.select_form(name="searchform")
    browser.form["term"] = "mechanize"
    browser.submit()

Re: Loginprobleme, Post, mechanize

Verfasst: Dienstag 29. Mai 2012, 16:18
von fantasy
Danke habs jetzt geschafft :D

Re: Loginprobleme, Post, mechanize

Verfasst: Mittwoch 30. Mai 2012, 07:55
von Leonidas
Ich denke das was du machst verstößt gegen die AGB des Betreibers, genauer §10.1 und womöglich §10.3.

Re: Loginprobleme, Post, mechanize

Verfasst: Mittwoch 30. Mai 2012, 17:14
von fantasy
Danke für den Hinweis.
Das ganze dient nur Übungszwecken. Ich beachte die AGBs.