[Question/Request]{WinHttp} - Login

02/16/2012 16:48 Lumi#1
Habe mir früher ein Login Script für Elitepvpers gemacht, aber login ging ja nicht und deswegen wollte ich nun fragen, wie ich den Login machen kann.
Natürlich habe ich das auch mit Live Http Headers gemacht.
Habe auch schon viele Login Scripts bei anderen Homepages gemacht, aber nur bei Elitepvpers geht das nicht. s:

Und noch eine Frage....
Warum kommt bei mir hier ein Error ? :D

Code:
$aReturn = StringRegExp($sHTML, '<span class="gold">(\d+?)', 3)
GUICtrlSetData($List1, "elite*Gold: " & $aReturn[0])
Wollte das er das e*Gold danach ausliest. ^^
Oder muss statt (\d+?) was anderes rein ? :D

Mein Ganzer script. ;3

02/16/2012 18:17 Croco™#2
Zur ersten Frage:
Warum geht es nicht ?
Kommen Fehler oder passiert einfach nichts ?

Zur zweiten:
Was führ Fehler kommen, denn an den zwei Zeilen ist nichts Falsch !?
02/16/2012 18:34 Lumi#3
Brauche noch Hilfe für Login und elite*Gold ausleser. :D
02/16/2012 19:00 Croco™#4
Zu 1:
Das ist eig. ganz einfach und zwar kommt ja nach dem erfolgreichen LogIn eine Seite wo in etwas das steht "Sie wurden erfolgreich eingeloggt" diesen Text müsste man dann halt im Quelltext auslesen und wenn er nicht vorhanden ist sondern die Webseite mit dem Error kommt wurdest du halt nicht erfolgreich eingeloggt.

Zu 2:
Die Befehle sind richtig es muss also an der Quelle liegen.
Schick mir mal bitte das Script
02/16/2012 19:59 omer36#5
Quote:
Originally Posted by Lumi' View Post
Wer mein Script haben will, soll sich dann melden. o:
Oder noch besser:

Wenn du von uns Hilfe erwartest, poste dein Script!

Klaut schon keiner!
02/16/2012 20:24 Lumi#6
Hab es rein editiert. ^^
Hoffe auf hilfreiche Antworten.
02/16/2012 20:50 isaias#7
wenn du probleme mit dem login hast kann ich dir weiterhelfen. ich habe nähmlich ein eigenes loginsystem gemacht und es funzt super. hab auch noch viele andere sachen noch gemacht ,wie z.b spambots,programmspambot(spamt einen mit programmen zu(öffnet sie)),ein script mit den man laufwerk öffnen kann,programmöffner(mit buttons zum öffnen),aimbot (pixelsearchbot) und metin2 angelbot. wenn ich das posten soll alles ,sagt mir bescheid (wie mann z.b auch spoiler macht ,weil ich nirgens geguckt hab wie man spoiler macht). mein loginsystem geht auf jeden fall so:

$inputusername = InputBox("Geben sie ihren benutzernamen ein","Benutzername:")
$inputpassword = InputBox("Geben sie ihr passwort ein","passwort:","","*")
If $inputusername = "yourusername" Or "someoneothersusername" And $inputPassword = "yourpassword" Or "someoneotherspassword" Then
MsgBox(0,"Erfolgreich eingeloggt","Sie haben sich erfolgreich eingeloggt!")
run("taskmgr.exe")
Else
MsgBox(0,"Login fehlgeschlagen!","Username oder Passwort sind falsch")
EndIf
02/16/2012 21:01 Lumi#8
Nicht Hilfreich. s:
Dein Login Script ist nur da, um sich Local ein Login zu machen.
D.h. du musst erst ein Username oder was auch immer in einem Script rein schreiben und und und ^^
Ich suche nähmlich ein Login Script für WinHttp. :P
02/16/2012 21:48 FichteFoll#9
Quote:
Originally Posted by isaias View Post
If $inputusername = "yourusername" Or "someoneothersusername" And $inputPassword = "yourpassword" Or "someoneotherspassword" Then [...]
Das finde ich viel fataler, denn es ergibt überhaupt keinen Sinn. Ich kann mit denken, was du damit meintest, aber richtig müsste es so aussehen:
PHP Code:
If ($inputusername "yourusername" And $inputPassword "yourpassword") Or ($inputusername "someoneothersusername" And $inputPassword "someoneotherspassword"Then [...] 
(Klammern optional, dienen zur Übersicht.)
Du solltest dir übrigens auch angewöhnen, solche Blog-Tags zu benutzen, weil der Code dadurch eingerückt bleibt und eine nichtproportionale Schriftart benutzt wird. (Diese Dinger sind in der Toolbar.)

Einen Spoiler machst du so:
02/16/2012 22:21 Lumi#10
Quote:
Originally Posted by FichteFoll View Post
Das finde ich viel fataler, denn es ergibt überhaupt keinen Sinn. Ich kann mit denken, was du damit meintest, aber richtig müsste es so aussehen:
PHP Code:
If ($inputusername "yourusername" And $inputPassword "yourpassword") Or ($inputusername "someoneothersusername" And $inputPassword "someoneotherspassword"Then [...] 
(Klammern optional, dienen zur Übersicht.)
Du solltest dir übrigens auch angewöhnen, solche Blog-Tags zu benutzen, weil der Code dadurch eingerückt bleibt und eine nichtproportionale Schriftart benutzt wird. (Diese Dinger sind in der Toolbar.)

Einen Spoiler machst du so:
Gehört das zum Thema ? ;)
Schätze nicht. ;3
Irgendwelche Antworten zu meinem Problem ? O:
02/16/2012 22:26 omer36#11
PHP Code:
#include <inet.au3>
$source _INetGetSource("http://www.elitepvpers.com/")
$downloads StringRegExp($source'<span class="gold">(\d+)'1)
MsgBox(0,"",$downloads[0]) 
allerdings klappt es nur, wenn du dich mit dem internet explorer und nicht mit zb firefox angemeldet hast.
02/16/2012 22:47 Lumi#12
Wie kommst du bitte schön jetzt auf INet ?!
Ich benutze WinHttp nicht Inet!
02/16/2012 22:47 YunoSubs#13
PHP Code:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <GUIListBox.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <WinHttp.au3>
#Region ### START Koda GUI section ### Form=
$Form1 GUICreate("Form1"252297192124)
$Label1 GUICtrlCreateLabel("Benutzername"887217)
$Label2 GUICtrlCreateLabel("Passwort"32324717)
$Input1 GUICtrlCreateInput(""96812121)
$Input2 GUICtrlCreateInput(""963212121)
$Button1 GUICtrlCreateButton("elite*Gold abfragen"5612013125)
$Button2 GUICtrlCreateButton("Login"80647525)
$List1 GUICtrlCreateList(""8152233136)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
    $nMsg 
GUIGetMsg()
    Switch 
$nMsg
        
Case $GUI_EVENT_CLOSE
            
Exit
        Case 
$Button2
            Login
()
        Case 
$Button1
            GoldAbfrage
()
    EndSwitch
WEnd

Func Login
()

$hSession _WinHttpOpen("Mozilla/5.0 (Windows NT 6.0; rv:10.0.1) Gecko/20100101 Firefox/10.0.1")
$hConnect _WinHttpConnect($hSession"www.elitepvpers.com")

$sHTML _WinHttpSimpleRequest($hConnect"GET""forum/" )
$sHTML _WinHttpSimpleRequest($hConnect"POST""forum/login.php?do=login""""vb_login_username=" GUICtrlRead($Input1) & "&vb_login_password=" GUICtrlRead($Input2) & "&cookieuser=1&s=&securitytoken=guest&do=login&vb_login_md5password=&vb_login_md5password_utf=")

EndFunc

Func GoldAbfrage
()

$hSession _WinHttpOpen("Mozilla/5.0 (Windows NT 6.0; rv:10.0.1) Gecko/20100101 Firefox/10.0.1")
$hConnect _WinHttpConnect($hSession"www.elitepvpers.com")

$sHTML _WinHttpSimpleRequest($hConnect"GET""forum/" )
$sHTML _WinHttpSimpleRequest($hConnect"POST""forum/login.php?do=login""""vb_login_username=" GUICtrlRead($Input1) & "&vb_login_password=" GUICtrlRead($Input2) & "&cookieuser=1&s=&securitytoken=guest&do=login&vb_login_md5password=&vb_login_md5password_utf=")
$sHTML _WinHttpSimpleRequest($hConnect"GET""forum/" )

$aReturn StringRegExp($sHTML'<span class="gold">([^<]+)'3)
GUICtrlSetData($List1"elite*Gold: " $aReturn[0])

EndFunc 
Bei deinem Script loggst du dich zwar ein doch du bekommst als Rückgabwert vom Befehl _WinHTTPSimpleRequest den Quellcode der Weiterleitung Seite daher musst du danach noch den Quellcode der Seite auslesen auf der dein Elitegold angezeigt wird.
02/16/2012 23:16 Lumi#14
Oha Danke. Es Funktioniert. :D
Wie tuhe ich jetzt, damit da angezeigt wird, dass der Login Erfolgreich war oder Fehlgeschlagen ?
02/17/2012 01:08 FichteFoll#15
Quote:
Originally Posted by Lumi' View Post
Gehört das zum Thema ? ;)
Schätze nicht. ;3
Irgendwelche Antworten zu meinem Problem ? O:
Er hat es in diesem Thema gepostet, also würde ich sagen, dass die (eine) Antwort korrekt ist.

----

Wollte gerade meine Antwort posten, dann sehe ich erst, dass schon eine zweite Seite gibt. Shawn Spencer hat in diesem Sinne schon einmal recht. Sein RegEx ist vermutlich auch effizienter als "(\d+)</span>", deswegen habe ich den gerade mal übernommen. Den Rest hatte ich zufällig schon fertig, weil mir ein gewisser Useroutput recht war - zum Testen.

PHP Code:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <GUIListBox.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <WinHttp.au3>
#region ### START Koda GUI section ### Form=
$Form1 GUICreate("Form1"252297192124)
$Label1 GUICtrlCreateLabel("Benutzername"887217)
$Label2 GUICtrlCreateLabel("Passwort"32324717)
$Input1 GUICtrlCreateInput(""96812121)
$Input2 GUICtrlCreateInput(""963212121)
$Button1 GUICtrlCreateButton("Login"80647525)
$Button2 GUICtrlCreateButton("elite*Gold abfragen"5612013125)
$Edit1 GUICtrlCreateEdit(""8152233136)
GUISetState(@SW_SHOW)
#endregion ### END Koda GUI section ###


While 1
    $nMsg 
GUIGetMsg()
    Switch 
$nMsg
        
Case $GUI_EVENT_CLOSE
            
Exit
        Case 
$Button1
            Login
()

        Case 
$Button2
            Login
(1)

    EndSwitch
WEnd


Func Login
($bGold False)
    
_ToogleButtons(0)

    
$hSession _WinHttpOpen("Mozilla/5.0 (Windows NT 6.0; rv:10.0.1) Gecko/20100101 Firefox/10.0.1")
    
$hConnect _WinHttpConnect($hSession"www.elitepvpers.com")

    
$sHTML _WinHttpSimpleRequest($hConnect"GET""forum/")
    
$sHTML _WinHttpSimpleRequest($hConnect"POST""forum/login.php?do=login""""vb_login_username=" GUICtrlRead($Input1) & "&vb_login_password=" GUICtrlRead($Input2) & "&cookieuser=1&s=&securitytoken=guest&do=login")

    ; 
Login fehlgeschlagen
    
If Not StringInStr($sHTML"<strong>Thank you for logging in, "Then
        _Output
("Login fehlgeschlagen")
        
_ToogleButtons(1)
        Return 
0
    
EndIf

    If 
Not $bGold Then
        _ToogleButtons
(1) ; Weiter nurwenn $bGold True
        _Output
("Login erfolgreich")
        Return 
1
    
EndIf

    ; 
Neue Seite laden (möglichst wenig Content)
    
$sHTML _WinHttpSimpleRequest($hConnect"GET""forum/faq.php")
    
$aReturn StringRegExp($sHTML'<span class="gold">([^<]+)'3)

    ; 
Buttons wieder aktivieren
    _ToogleButtons
(1)

    If 
Not IsArray($aReturnThen Return _Output("elite*Gold nicht gefunden")

    
_Output("elite*Gold von "&GUICtrlRead($Input1) &": " $aReturn[0])
    Return 
1

EndFunc   
;==>GoldAbfrage

Func _ToogleButtons
($bNewState = -1)
    
Local $fNewState $GUI_DISABLE
    
If $bNewState = -1 Then $bNewState BitAND(GUICtrlGetState($Button1), $GUI_DISABLE)
    If 
$bNewState Then
        $fNewState 
$GUI_ENABLE
    
EndIf

    
GUICtrlSetState($Button1$fNewState)
    
GUICtrlSetState($Button2$fNewState)
EndFunc

Func _Output
($str)
    Return 
GUICtrlSetData($Edit1$str & @CRLF"1")
EndFunc 
Übrigens hattest du die Buttons vertauscht.

Edit: Übrigens, wenn elitepvpers das Ergebnis des Einloggens im HTTP-Header anzeigt, ginge das alles vermutlich schneller, aber ich hatte gerade keine Lust, das zu überprüfen.