Von Winhttp zu Browser

08/09/2013 22:41 c0w#1
Hey,

ich habe mich letzter zeit vermehrt mit winhttp beschäftigt, ist ja auch ansich nicht kompliziert. Nun zu meiner Frage, ich möchte in winhttp eine session aufbauen mich einloggen und dann irgendwann das ganze wieder im browser darstellen und weitermachen können. Also mit gültiger Session, ohne mich mit Browser nochmal neu einloggen zu müssen. habe aber nicht wirklich ne antwort auf meine frage gefunden bisher. ich gehe mal davon aus,dass ich dafür mit cookies arbeite und dem browser den gültigen sessioncookie mitgeben müsste oder?

PS die html selbst darstellen geht schon. man sieht auch alles aus eingelogter sicht, nur man ist nicht eingeloggt. also habe einfach die html aus der winhttp session in nen browser geschrieben.
danke schon mal für eure zeit
08/09/2013 23:02 alpines#2
Eine Möglichkeit wäre, den Source per WinHttp zu bekommen und dann in ein IE Object zu schreiben. Ob man das angeklickte abfragen kann weiß ich nicht.

Wenn du es schaffst die Eingaben im Browser abzufangen, dann kannst du das so lösen.
08/09/2013 23:25 c0w#3
naja wie gesagt die reine seite im ie oder einem anderen browser darzustellen ist kein problem, nur eingeloggt ist man dann nciht, sprich wenn du eine verlinkung benutzen willst, fragt er nach login
08/10/2013 00:36 alpines#4
Wenn du die Html die du von WinHttp bekommst, dann bist du doch praktisch eingeloggt.
Das IE Objekt dient ja nur als GUI der die Daten abfängt, wie z.B. Klick auf einen Link welcher dann in WinHttp umgewandelt wird.
08/10/2013 01:10 YatoDev#5
session id falls die sowas haben oder cookies die kannst du in den firefox rein tuen musst mal googlen ^^
08/10/2013 07:01 c0w#6
session id wäre im erweiterten header beim login sichtbar oder? bzw cookies dann ja auch
08/19/2013 00:06 c0w#7
so ich muss das thema leider nochmal ausgraben, da ich trotz intensiver suche einfach nicht finde was sich suche. hab mir jetz wirklich wochen und tage mit google suche um die ohren geschlagen aber kriegs nicht ma annähernd hin...
zum verständnis(korregiert mich wenn was falsch ist): wenn ich zb mit live http headers was mitsniffe ist der obere abschnit mit GET/POST ja das was mein browser dem Server sendet. der untere also alles ab HTTP/1.1 200 OK zb ist was ich vom server für anweisungen erhalte, also beim login zb aus set-cookie mit ner session id zb.
wenn ich mich jetz eingeloggt zb hier im forum bewege sendet mein browser immer wieder die info der cookies mit der session id zb mit um dem server zu sagen "hey ich bin noch immer eingeloggt und in dieser session aktiv, musst mich nicht nach logindaten fragen". ich hoffe mal wenigstens soweit passts =)

also nehmen wir epvp als bsp, da kriegst beim login paar cookies und wenn du dann rumsurfst wird zb sowas gessendet
Code:
Cookie: epvp_backend=s6; (paar google analytics cookies, ich denk ma unwichtig) IDstack=(epvpuserid+??); bulletinboardstuff;[B]bbsessionhash=(der hash den du beim loginsetzt); bblanguageid=(ich denke sprach id, 2 also zb deutsch); bblastvisit=(mir nicht ganz erklärliche zahl, wird aber wohl der letzte besuch sein =)); bblastactivity=(?!); bbuserid=(epvpuserid); bbpassword=(bin mir recht sicher das is das pw das iwie geshasht wird, da immer gleich)[/B]
und so wie ich das sehe müssen all diese infos in einen browser übergeben werden, damit der server weiß das ist die session die ich über winhttp bekommen habe.
nun die eher kleinere frage ist wie krieg ich diese gesammte cookiezeile von winhttp ausgelesen? _winhttpsimplerequest($fgetheaders) returned mir ja nur den unteren teil, also die antwort des servers, da könnte ichs aber im endeffekt auch mit regexp auslesen. viel wichtiger ist wie öffne ich zb ie oder ff so, dass diese cookiezeile mit drin ist und daran verzweifle ich komplett :O
08/19/2013 08:21 BlackHybrid#8
Soweit es mir bekannt ist gibt es keine out of the box Lösung für das IE Objekt. Vielleicht bekommt man es mit einem anderem Browserobjekt irgendwie besser hin.
08/20/2013 18:47 Anonymous-3729#9
Auf codebot . de habe ich ein Tutorial dazu geschrieben ;)...
Aber als Beispiel nur Session übergeben zwischen FireFox und WinHttp und WinHttp und FireFox. Wobei zweiteres an sich einfach ist und hauptsächlich mit nem Beispiellink gezeigt wird :P. Und nen Link, wie man das beim IE macht.

Auf jeden Fall n gutes Tutorial, wie man Sessions übergeben kann :P!


LG
Aca
08/20/2013 20:00 c0w#10
hab ich gesehen aber hat mich iwie auch ned groß weiter gebracht -.-
08/20/2013 20:44 Anonymous-3729#11
Wo ist denn das Problem :)? Kleines Test-Script wäre hilfreich, wo du hängst.
08/20/2013 23:07 c0w#12
also ich bin mir nicht sicher ob er die cookies nicht richtig setzt, oder woran es sonst liegen kann. es ist nur so, es werden beim login mehrere cookies gesetzt. ich habe probiert das ganze so zu lösen:
Code:
$aCookies = StringRegExp($html[0], 'Set-Cookie: (.+)', 3)

$oIE = _IECreate('about:blank')
for $i= 0 to 5
_IESetCookies($oIE, '$loginurl', $aCookies[$i])
Next
_IENavigate($oIE, '$url')


Func _IESetCookies(ByRef $oIE, $sDomain, $sCookies)
MsgBox(0,"setze cookie", $aCookies[$i]);cookies sichtbar machen
    $oIE.document.cookie = $oIE.document.cookie  & $aCookies[$i] & '; domain=' & $sDomain

EndFunc
wenn ich das richtig verstehe zeigt mir ja document.cookie vom vorhergehenden object die cookies an, falls das richtig ist wird mir wohl kein einziger cookie gesetzt, da is dann nur nur google zeug und language id und sowas drin, keiner meiner gesetzten cookies kommt da vor
08/21/2013 11:50 Shadow992#13
Quote:
Originally Posted by c0w View Post
also ich bin mir nicht sicher ob er die cookies nicht richtig setzt, oder woran es sonst liegen kann. es ist nur so, es werden beim login mehrere cookies gesetzt. ich habe probiert das ganze so zu lösen:
Code:
$aCookies = StringRegExp($html[0], 'Set-Cookie: (.+)', 3)

$oIE = _IECreate('about:blank')
for $i= 0 to 5
_IESetCookies($oIE, '$loginurl', $aCookies[$i])
Next
_IENavigate($oIE, '$url')


Func _IESetCookies(ByRef $oIE, $sDomain, $sCookies)
MsgBox(0,"setze cookie", $aCookies[$i]);cookies sichtbar machen
    $oIE.document.cookie = $oIE.document.cookie  & $aCookies[$i] & '; domain=' & $sDomain

EndFunc
wenn ich das richtig verstehe zeigt mir ja document.cookie vom vorhergehenden object die cookies an, falls das richtig ist wird mir wohl kein einziger cookie gesetzt, da is dann nur nur google zeug und language id und sowas drin, keiner meiner gesetzten cookies kommt da vor
Du brauchst alle Cookies, die du seit dem LogIn bekommen hast und nicht erst die neu gesetzten, sonst verpasst du ja völlig den Sinn von Cookies.
Also das ganze am Besten in einem Array speichern und am sinnvollsten wäre es so:

PHP Code:
$array[0][0]="Cookie-Name"
$array[0][1]="Cookie-Value"
$array[0][2]="Domain" 
Und mit Domain ist nicht die LogIn-URL gemeint sondern wirklich nur die Domain, sprich "www.irgendwas.de".
08/21/2013 19:57 c0w#14
Quote:
Originally Posted by Shadow992 View Post
Du brauchst alle Cookies, die du seit dem LogIn bekommen hast und nicht erst die neu gesetzten, sonst verpasst du ja völlig den Sinn von Cookies.
Also das ganze am Besten in einem Array speichern und am sinnvollsten wäre es so:

PHP Code:
$array[0][0]="Cookie-Name"
$array[0][1]="Cookie-Value"
$array[0][2]="Domain" 
Und mit Domain ist nicht die LogIn-URL gemeint sondern wirklich nur die Domain, sprich "www.irgendwas.de".
ja das mit loginurl war nur ein verzweifelter versuch :D. habt ihr evtl nen befehl parat an dem ich sehen kann welche cookies der ie von ner seite hat? :O damit ich überprüfen kann ob die auch gesetzt werden. und um ne session direkt nach login zu übergeben brauch ich doch nur die oder? weil die einzigen cookies die ich krieg sind einmal die beim seitenaufruf und dann einmal die die beim loginvorgang gesetzt werden.
08/21/2013 20:26 Shadow992#15
Quote:
Originally Posted by c0w View Post
ja das mit loginurl war nur ein verzweifelter versuch :D. habt ihr evtl nen befehl parat an dem ich sehen kann welche cookies der ie von ner seite hat? :O damit ich überprüfen kann ob die auch gesetzt werden. und um ne session direkt nach login zu übergeben brauch ich doch nur die oder? weil die einzigen cookies die ich krieg sind einmal die beim seitenaufruf und dann einmal die die beim loginvorgang gesetzt werden.
Der Befehl tuts doch:
PHP Code:
$oIE.document.cookie