[Code] [Python]Bei Geocaching.com einloggen

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von MasterJulian, 8. November 2009 .

Schlagworte:
  1. 8. November 2009
    [Python]Bei Geocaching.com einloggen

    Ich versuche mich gerade bei
    Geocaching - The Official Global GPS Cache Hunt Site
    via Python einzuloggen. Das funktioniert über Cookies. Das Problem ist jedoch, dass ich bei der Login Form eine Art "Session ID" mitsenden muss. Diese Steht im Quelltext der Website und verändert sich natürlich. Ich baue also 2 Verbindungen auf. Die erste um den Session Cookie + SessionID für die Form auszulesen und die zweite um diese Daten zu senden. Jedoch bekomme ich immer noch (bei richtigen Login Daten) kein User Cookie und bin dementsprechend auch nicht eingeloggt. Mein Code sieht wie folgt aus:
    Code:
    #!/usr/bin/env python
    import urllib2
    import urllib
    
    user_agent = 'Opera 9.7 (Windows NT 5.2; U; en)'
    
    def getcontent(url,header=False,cookie=None,postdata=None):
     if cookie == None:
     header = {'User-Agent' : user_agent}
     else:
     header = {'User-Agent' : user_agent, 'Cookie ' : cookie}
     req = urllib2.Request(url,postdata,header)
     response = urllib2.urlopen(req)
     if header == False:
     return response.read()
     else:
     return (response.read(),response.info())
    
    def getcookie(user,passwd):
     content1 = getcontent('http://www.geocaching.com/login/default.aspx',True)
     cookie=content1[1]['set-cookie'].split(';')[0]
     pos1 = content1[0].find('id="__VIEWSTATE" value="')
     pos2 = content1[0][pos1+24:].find('"')
     VIEWSTATE = content1[0][pos1+24:pos1+24+pos2]
     args = urllib.urlencode({'__EVENTTARGET': '','__EVENTARGUMENT': '','__VIEWSTATE': VIEWSTATE,'ctl00$ContentBody$4myUsername': user, 'ctl00$ContentBody$myPassword': passwd, 'ctl00$ContentBody$cookie': 'on', 'ctl00$ContentBody$Button1': 'Login'})
     content2 = getcontent('http://www.geocaching.com/login/default.aspx',True,cookie,args)
     return content2
    Die Daten werden richtig gesendet (habs mit Wireshark getestet). Jemand ne Idee?

    //edit: Ich hab ein Open Source Tool gefunden (in Ruby geschrieben). Jedoch steige ich da auch nicht so 100% durch: auth.rb -
    geotoad -


    Geocaching.com Query Tool - Google Project Hosting
     
  2. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.