Seite 1 von 1

http post

Verfasst: Dienstag 25. Juli 2006, 09:10
von mr nobody
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!

Verfasst: Dienstag 25. Juli 2006, 09:28
von helmut
Hallo,
ich habe zwar noch nicht mit socket gearbeitet, aber ich denke das Module 'socket' muss auch erst importiert werden.

Gruss, Helmut

Verfasst: Dienstag 25. Juli 2006, 09:35
von mr nobody
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

Verfasst: Dienstag 25. Juli 2006, 14:30
von Leonidas
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?

Verfasst: Dienstag 25. Juli 2006, 15:41
von mr nobody
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

Verfasst: Dienstag 25. Juli 2006, 20:51
von mr nobody
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

Verfasst: Dienstag 25. Juli 2006, 20:59
von Leonidas
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.

Verfasst: Dienstag 25. Juli 2006, 21:03
von mr nobody
DANKE, DANKE, DANKE!!!!!!!!

Jetzt klappts! :D