http post

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
mr nobody
User
Beiträge: 7
Registriert: Dienstag 18. Juli 2006, 00:54

Hallo!

Ich hab ein kleines Problem:

Ich versuche mittels Python auf Ogame.de ( :o ) einzuloggen um den aktuellen punktestand zu erfahren....

Und jetzt zu meinem Problem:
Ich bekomm immer diese Fehlermeldung:
Traceback (most recent call last):
File "ogame.py", line 24, in ?
conn.request("POST", aktion, post)
File "/usr/lib/python2.4/httplib.py", line 804, in request
self._send_request(method, url, body, headers)
File "/usr/lib/python2.4/httplib.py", line 827, in _send_request
self.endheaders()
File "/usr/lib/python2.4/httplib.py", line 798, in endheaders
self._send_output()
File "/usr/lib/python2.4/httplib.py", line 679, in _send_output
self.send(msg)
File "/usr/lib/python2.4/httplib.py", line 646, in send
self.connect()
File "/usr/lib/python2.4/httplib.py", line 614, in connect
socket.SOCK_STREAM):
socket.gaierror: (-2, 'Name or service not known')
Hier mein script:

Code: Alles auswählen

#!/usr/bin/env python
import httplib, urllib

username='benutzername'
password='passwort'
universum='55'
aktion="http://ogame465.de/game/reg/login2.php"
print 'Connecting...'
#Hole Timestamp
webseite=urllib.urlopen('http://ogame.de/portal/?lang=de&frameset=1')
webseite=webseite.read()
timestamp_pos=webseite.find('timestamp" value=')
timestamp_pos_end=timestamp_pos+29
timestamp=webseite[timestamp_pos:timestamp_pos_end]
timestamp=timestamp[18:28]
timestamp=timestamp.strip()

print 'Timestamp:',timestamp

post = urllib.urlencode({"timestamp": timestamp,"v":"2","Uni":"ogame465.de","login":username,"pass":password})


conn = httplib.HTTPConnection("http://ogame.de:80")
conn.request("POST", aktion, post)
response = conn.getresponse()
data = response.read()
conn.close()
print data
Das Script ist noch nicht ganz fertig, aber bis jetzt solte es eigentlich funktionieren....

Woran könnte des liegen? :cry:
Vielen Danke im Voraus!
helmut
User
Beiträge: 57
Registriert: Mittwoch 2. November 2005, 07:45
Wohnort: Dormagen

Hallo,
ich habe zwar noch nicht mit socket gearbeitet, aber ich denke das Module 'socket' muss auch erst importiert werden.

Gruss, Helmut
mr nobody
User
Beiträge: 7
Registriert: Dienstag 18. Juli 2006, 00:54

Hallo Helmut!
Danke für deine Antwort.

Habs gerade ausprobiert und es kommt noch immer die gleiche fehlermeldung...

Edit:
Kann das vl. daran liegen, dass auf der Seite Frames sind?

Schönen Tag noch

mr nobody
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Nein, mit socket importieren hat das nichts zu tun, das macht die HTTPLib schon selbst.

Aber warum sendest du POST-Daten mit der httplib, wenn urllib.urlopen das auch kann und dabei einfacher zu benutzen ist?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
mr nobody
User
Beiträge: 7
Registriert: Dienstag 18. Juli 2006, 00:54

Aber warum sendest du POST-Daten mit der httplib, wenn urllib.urlopen das auch kann und dabei einfacher zu benutzen ist?
:oops: naja...... bin halt noch anfänger.....
Inzwischen hab ichs hinbekommen, hier das neue script:

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import httplib, urllib,os

username='benutzername'
password='passwort'

url='http://ogame.de/portal/?lang=de&frameset=1'
url_main='http://ogame465.de/game/overview.php?session='

webseite=urllib.urlopen(url)
webseite=webseite.read()
timestamp_pos=webseite.find('timestamp" value=')
timestamp_pos_end=timestamp_pos+29
timestamp=webseite[timestamp_pos:timestamp_pos_end]
timestamp=timestamp[18:28]
timestamp=timestamp.strip()

url=str('http://ogame465.de/game/reg/login2.php?timestamp=')+str(timestamp)+str('&v=2&Uni=ogame465.de&login=')+str(username)+str('&pass=')+str(password)+str('&x=10&y=11&=Login')
t = urllib.urlopen(url)
t = t.read()
session_pos=t.find('session=')+8
session_pos_end=session_pos+12
session=t[session_pos:session_pos_end]
session=session.strip()

php_url='http://ogame465.de/game/index.php?session='+str(session)
php_id=urllib.urlopen(php_url)
php_id=php_id.read()
phps_pos=php_id.find('PHPSESSID=')+10
phps_pos_end=phps_pos+32
phps=php_id[phps_pos:phps_pos_end]
phps=phps.strip()

print(str('http://www.ogame465.de/game/overview.php?session=')+str(session)+str('&w=0&PHPSESSID=')+str(phps))
Es meldet sich automatisch im universum 55 an und gibt die url der übersichtsseite aus, diese könnte man unter linux/unix mit wget $(python name.py) herunterladen und dann parsen....

Hat jemand vorschläge wie ich es Verbessern könnte?

Schönen Tag noch
mr nobody
User
Beiträge: 7
Registriert: Dienstag 18. Juli 2006, 00:54

Jetzt hab ich no ein Problem:

Ich habe eine Variabel (ressourcen) in dieser steht
5.728
7.443
11.672
25/874
und da alles ist nur EINE Variable, aber nun möchte ich jeder zeile eine variable zuweisen... gibt es irgendeinen Befehl dafür?

Schönen Tag noch

mr nobody
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

mr nobody hat geschrieben:und da alles ist nur EINE Variable, aber nun möchte ich jeder zeile eine variable zuweisen... gibt es irgendeinen Befehl dafür?

Code: Alles auswählen

In [2]: s = """5.728
   ...: 7.443
   ...: 11.672
   ...: 25/874"""
In [3]: one, two, three, four = s.splitlines()
Und damit hast du jede Zeile in einer eigenen Variable.

An dieser stelle hätte man aber vermutlich besser einfach eine Liste benutzt, d.h. eine Variable bei der man auf die einzelnen Zeilen mittels Index zugreift.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
mr nobody
User
Beiträge: 7
Registriert: Dienstag 18. Juli 2006, 00:54

DANKE, DANKE, DANKE!!!!!!!!

Jetzt klappts! :D
Antworten