• Willkommen im Geoclub - dem größten deutschsprachigen Geocaching-Forum. Registriere dich kostenlos, um alle Inhalte zu sehen und neue Beiträge zu erstellen.

Frage an Programmierer

tofse

Geocacher
Hallo,

vielleicht kann mir jemand bei folgender Frage weiterhelfen:

Ich habe mir einen Parser in PHP programmiert, der mir alle Infos zu den Caches von geocaching.com zieht.
Allerdings ohne Login. Somit muss ich immer per Hand z.B. die Koordinaten nachtragen.
Obwohl ich schon alles mögliche versucht habe, komme ich nicht dahinter:
Wie kann ich den Login nachstellen und wie kann ich dann meinen Status (eingeloggt) weitergeben ?
Das Formular auf der Loginseite habe ich schon auseinandergenommen. Was hat es denn mit __VIEWSTATE auf sich. Der Parameter wird auch beim Formular übergeben...

Danke im voraus
Grüße
Christof
 
A

Anonymous

Guest
tofse schrieb:
Hallo,

vielleicht kann mir jemand bei folgender Frage weiterhelfen:

Ich habe mir einen Parser in PHP programmiert, der mir alle Infos zu den Caches von geocaching.com zieht.
Allerdings ohne Login. Somit muss ich immer per Hand z.B. die Koordinaten nachtragen.
Obwohl ich schon alles mögliche versucht habe, komme ich nicht dahinter:
Wie kann ich den Login nachstellen und wie kann ich dann meinen Status (eingeloggt) weitergeben ?
Das Formular auf der Loginseite habe ich schon auseinandergenommen. Was hat es denn mit __VIEWSTATE auf sich. Der Parameter wird auch beim Formular übergeben...

Danke im voraus
Grüße
Christof

keine Ahnung, aber soweit ich weiß ist gc.com etwas empfindlich mit Spidern, d.h. wunder dich nicht wenn du plötzlich gar nicht mehr auf den Server kommst...

MfG Jörg
 
OP
T

tofse

Geocacher
Da sehe ich erstmal kein Problem. Ist ja nicht so, dass ich massenweise Daten ziehe.
Ich gebe immer einen waypoint an, und dann erhalte ich hierzu die Infos

Vielleicht hat ja jemand eine Idee zu dem Loginproblem
Christof
 

bsterix

Geowizard
Mit Perl ist das kein problem (www::mechanize). Ob und wie es mit PHP geht weis ich leider nicht, aber ich denke da sollte es ähnliche Module geben.

(P.S.: Ich spidere nicht mit meinem programm)
 
OP
T

tofse

Geocacher
Hallo,
ich will eigentlich nur wissen, was man alles beim Login übergeben muss, und wie dann den Loginstatus weitergeben kann, wenn ich die Seite parse. Und wie gesagt, was bedeutet der Parameter __VIEWSTATE ?
Das Parsing etc. ist alles fertig, es geht nur ums Login, damit ich an alle Infos gelange.

Grüße
Christof
 

bsterix

Geowizard
tofse schrieb:
Hallo,
ich will eigentlich nur wissen, was man alles beim Login übergeben muss, und wie dann den Loginstatus weitergeben kann, wenn ich die Seite parse. Und wie gesagt, was bedeutet der Parameter __VIEWSTATE ?
Das Parsing etc. ist alles fertig, es geht nur ums Login, damit ich an alle Infos gelange.

Grüße
Christof
Warum willst du das unbedingt "von Hand" machen? Wollte ich zuerst auch, war dann aber so kompliziert, dass ich dankbar fürs mechanize-modul war.
 
OP
T

tofse

Geocacher
Naja, dein Tipp beziegt sich ja auf Perl, und ich habs nunmal mit PHP realisiert :)
Trotzdem Danke
 

bsterix

Geowizard
Das Mechanize scheints tatsächlich nicht für PHP zu geben :evil:
Schade, dann kann ich leider doch nicht weiterhelfen.
 

MiK

Geoguru
Ich kenne zumindest eine Stelle, wo die Antwort steht: Tief im Cachewolf-Code.
Da ich im Moment aber keine Lust habe, es herauszusuchen, bleibt Dir die Möglichkeit selbst nachzuschauen:
http://developer.berlios.de/svn/?group_id=2211

Edit: src/CacheWolf/spiderGC.java
 

Monarch

Geonewbie
tofse schrieb:
Wie kann ich den Login nachstellen und wie kann ich dann meinen Status (eingeloggt) weitergeben ?

Logins funktionieren in der Regel ganz einfach: Du übermittelst Login-Daten per POST-Methode an eine bestimmte URL und bekommst als Reaktion vom Server einen Session-Cookie den du ab jetzt bei jedem weiteren Request immer mit senden musst.

In PHP gibt es das Curl-Modul, das dir oben genannte Einzelheiten abnimmt. Du konfigurierst nur ein Verzeichnis, das die SessionCookie-Daten aufnehmen soll, sowie den Requestheader für die Postdaten und lässt libcurl eine URL aufrufen. Damit habe ich bereits etliche Spider, z.B. für Google Analytics, realisiert.
 
OP
T

tofse

Geocacher
Hallo,
danke für die vielen Antworten. Ich habs hinbekommen, mit fsockopen unter PHP.
VIEWSTATE habe ich gar nicht benötigt, sondern nur die session und userid, die setze ich als Cookies

Grüße
Christof
 
OP
T

tofse

Geocacher
Hallo,

ich habe mal eine Datei angehängt.
Anhang anzeigen GCHB9P.zip
Da der Upload hier keine html Dateiendung erlaubt, musst du die Datei noch umbenennen, in Name.html

Mir ging es primär darum, ein druckersparendes Format zu erzeugen. Zusätzlich erstelle ich noch eine zweite HTML Datei, die ich auf den PDA laden kann, aber da ich gerne viel rumschmiere, gehöre ich zu den Druckeranhängern :)
Die Bilder ziehe ich auch noch runter, deshalb siehst du die in der angehängten Datei nicht

Grüße
Christof
 

Ruhrcacher

Geowizard
hmm, ein sehr aufgeräumtes Beispiel :wink: Wenn bloß alles Listings so ordentlich wären.

Du schriebst, dass es kein Spider ist, sondern dass der Nutzer den WP vorgibt.
Besteht auch die Möglichkeit mehrere WPs einzugeben und eine Index-Seite zu bekommen?
Ich meine damit eine tabellarische Übersicht aller geparster WPs und deren Eckdaten (WP, Name, Difficulty,..), deren Einträge auf die erstellen HTML-Seiten verlinkt sind.
So hätte man auf dem PDA eine bessere Navigationsmöglichkeit.
 

mattwien

Geocacher
Hi,

auch wenn Dein Problem schon gelöst ist, es gibt eine gute Möglichkeit - ohne stundenlanges Analysieren von Quellcodes - zu sehen, welche Daten übertragen werden und welche Cookies gesetzt werden:
Man verwendet einen Sniffer (oder alternativ Developer-Tools für IE oder Firefox - müsste auch gehen) die zeigen einen an welche daten per Post oder Get übertragen werden und welche Cookies wie gesetzt sind. Eine Software mit der das sehr gut geht ist z.B. Ethereal.

Nur so als tipp falls Du nochmal so ein Problem haben solltest.

Gruß
MattWien
 

JB2002

Geocacher
@tofse:
könntest du die aktuelle version denn mal hier hochladen?
des würde mich nämlich auch interessieren :D

Gruß
JB2002
 
Oben