Winhttp login bot

10/10/2013 15:30 Kabal931#1
Hey, ich habe mit winhttp einen login bot erstellt.
Jedoch owher weiß ich ob es nun funktoniert ?
Kann ich irgendwie Checken, ob ich eingeloggt wurde ?
10/10/2013 15:41 alpines#2
Du lässt dir die HTML nach dem einloggen ausgeben, die kriegst du von _WinHttpSimpleRequest und FileWritest sie irgendwo hin und öffnest sie.
10/10/2013 15:44 Kabal931#3
Quote:
Originally Posted by alpines View Post
Du lässt dir die HTML nach dem einloggen ausgeben, die kriegst du von _WinHttpSimpleRequest und FileWritest sie irgendwo hin und öffnest sie.
Danke, habe es gemacht aber da steht dann nur 0 wenn ich es öffne..

Und bei Post steht mein Password nicht drinnen...
Es steht irgendwie ganz alleine dort bei live http headers:
csrfmiddlewaretoken=0eb614f3c69efbe50a72cb2a7db34f d6&username=name&password=password
10/10/2013 16:08 alpines#4
Ja, kein Wunder. Der Token ändert sich bei jedem Mal, den kriegst du auf der Homepage wo der Login ist in dem Formular oder in der Nähe davon.
Das kannst du auslesen mit
Code:
_StringBetween()
StringRegExp
StringInStr
und dann stellst du dir dein eigenes Paket zusammen was ungefähr so aussehen müsste:
Code:
_WinHttpSimpleRequest($hConnection, "POST", "login.php", "csrfmiddlewaretoken=" & $sToken & "&username=" & $sUsername & "&password=" & $sPassword)
10/10/2013 16:22 Kabal931#5
Quote:
Originally Posted by alpines View Post
Ja, kein Wunder. Der Token ändert sich bei jedem Mal, den kriegst du auf der Homepage wo der Login ist in dem Formular oder in der Nähe davon.
Das kannst du auslesen mit
Code:
_StringBetween()
StringRegExp
StringInStr
und dann stellst du dir dein eigenes Paket zusammen was ungefähr so aussehen müsste:
Code:
_WinHttpSimpleRequest($hConnection, "POST", "login.php", "csrfmiddlewaretoken=" & $sToken & "&username=" & $sUsername & "&password=" & $sPassword)
Also so auslesen ?
$Token = _StringBetween($html,"csrfmiddlewaretoken=","&user name=name&password=pw")
10/10/2013 16:28 alpines#6
Falsch, lad mal die HTML vor dem Einloggen hoch, ich zeig dir wie das geht, außerdem returned _StringBetween einen Array.
10/10/2013 17:27 CallSaul#7
Ich will dir jetzt keinen Code vor die Füße schmeißen, aber hier meine Lösung:
  1. Source (HTML? Datei) herunterladen
  2. Überprüfen ob Source ein Schlüsselwort, wie z.B. 'Willkommen' enthält
  3. In MsgBox True oder False zurückgeben lassen

Mit ein bisschen google hast du sogar C&P Code, wo du nurnoch die URL austauschen musst.
10/10/2013 18:53 Kabal931#8
Wenn ich die HTML öffne sthet da immer nur 0 drinnen...
10/10/2013 19:10 alpines#9
Dann ist der Request falsch, der muss in etwa so aussehen
Code:
#include <WinHttp.au3>

$hSession = _WinHttpOpen("myUserAgent1")
$hConnect = _WinHttpConnect("www.domain-name.de")

$sHTML = _WinHTTPSimpleRequest($hConnect, "GET", "/")

_WinHttpCloseHandle($hConnect)
_WinHttpCloseHandle($hSession)
Was extrem wichtig ist! Wenn die Seite die du ansteuerst mit HTTPS (SSL) funktioniert dann sieht das Script natürlich ganz anders aus, und so wie ich das sehen kann ist der Login von Instagram HTTPS.

Das wäre z.B. der Login für Facebook (ist permanent HTTPS). Den hab ich auf [Only registered and activated users can see links. Click Here To Register...]gefunden
Code:
#include <winhttp.au3>

Global $hSession = _WinhttpOpen("Mozilla/5.0 (Windows NT 6.1; WOW64; rv:2.0.1) Gecko/20100101 Firefox/4.0.1")
Global $hConnect = _WinhttpConnect($hSession, "www.facebook.com", $INTERNET_DEFAULT_HTTPS_PORT)

_FbLogin()

Func _FBLogin()
    Local $aDtsg, $aFormid, $apageId
    $email = '[Only registered and activated users can see links. Click Here To Register...]'
    $passwort = 'password'

    $email = StringReplace($email, '@', '%40')
    $sHTml = _WinHttpSimpleSSLRequest($hConnect, "GET", "")

    $sPost = "charset_test=%E2%82%AC%2C%C2%B4%2C%E2%82%AC%2C%C2%B4%2C%E6%B0%B4%2C%D0%94%2C%D0%84&locale=de_DE&email=" & $email & "&pass=" & $passwort & "&charset_test=%E2%82%AC%2C%C2%B4%2C%E2%82%AC%2C%C2%B4%2C%E6%B0%B4%2C%D0%94%2C%D0%84"
    $sHTml = _WinHttpSimpleSSLRequest($hConnect, "POST", "login.php?login_attempt=1", "https://www.facebook.com/", $sPost)

    _WinHttpCloseHandle($hConnect)
    $hConnect = _WinhttpConnect($hSession, "www.facebook.com")
    $sHTml = _WinHttpSimpleRequest($hConnect, "GET", "home.php")

    FileDelete("site.html")
    FileWrite("site.html", $sHTml)
    ShellExecute("site.html")
EndFunc
10/10/2013 20:10 Kabal931#10
Quote:
Originally Posted by alpines View Post
Dann ist der Request falsch, der muss in etwa so aussehen
Code:
#include <WinHttp.au3>

$hSession = _WinHttpOpen("myUserAgent1")
$hConnect = _WinHttpConnect("www.domain-name.de")

$sHTML = _WinHTTPSimpleRequest($hConnect, "GET", "/")

_WinHttpCloseHandle($hConnect)
_WinHttpCloseHandle($hSession)
Was extrem wichtig ist! Wenn die Seite die du ansteuerst mit HTTPS (SSL) funktioniert dann sieht das Script natürlich ganz anders aus, und so wie ich das sehen kann ist der Login von Instagram HTTPS.

Das wäre z.B. der Login für Facebook (ist permanent HTTPS). Den hab ich auf [Only registered and activated users can see links. Click Here To Register...]gefunden
Code:
#include <winhttp.au3>

Global $hSession = _WinhttpOpen("Mozilla/5.0 (Windows NT 6.1; WOW64; rv:2.0.1) Gecko/20100101 Firefox/4.0.1")
Global $hConnect = _WinhttpConnect($hSession, "www.facebook.com", $INTERNET_DEFAULT_HTTPS_PORT)

_FbLogin()

Func _FBLogin()
    Local $aDtsg, $aFormid, $apageId
    $email = '[Only registered and activated users can see links. Click Here To Register...]'
    $passwort = 'password'

    $email = StringReplace($email, '@', '%40')
    $sHTml = _WinHttpSimpleSSLRequest($hConnect, "GET", "")

    $sPost = "charset_test=%E2%82%AC%2C%C2%B4%2C%E2%82%AC%2C%C2%B4%2C%E6%B0%B4%2C%D0%94%2C%D0%84&locale=de_DE&email=" & $email & "&pass=" & $passwort & "&charset_test=%E2%82%AC%2C%C2%B4%2C%E2%82%AC%2C%C2%B4%2C%E6%B0%B4%2C%D0%94%2C%D0%84"
    $sHTml = _WinHttpSimpleSSLRequest($hConnect, "POST", "login.php?login_attempt=1", "https://www.facebook.com/", $sPost)

    _WinHttpCloseHandle($hConnect)
    $hConnect = _WinhttpConnect($hSession, "www.facebook.com")
    $sHTml = _WinHttpSimpleRequest($hConnect, "GET", "home.php")

    FileDelete("site.html")
    FileWrite("site.html", $sHTml)
    ShellExecute("site.html")
EndFunc
Danke, jetzt steht dort jedoch
Sorry, this page could not be found.
wenn ich die .html öffne
10/10/2013 22:16 CallSaul#11
Quote:
Originally Posted by Kabal931 View Post
Wenn ich die HTML öffne sthet da immer nur 0 drinnen...
Wird 0 als error Code zurückgegeben?

Versuch mal das sowas:

Code:
#include <Inet.au3>

$hSource = _INetGetSource('www.url.de')
MsgBox(1, 'Source', $hSource)
Sollte eigendlich klappen, kann aber sein das ich die Inet Funktion falsch verwendet habe, bin mit dem Handy da....
10/14/2013 00:17 c0w#12
ich würde vorschlagen bevor du dich mit loginbots beschäfftigst, schau mal ob die überhaupt mit winhttp zurecht kommst. wenn ich beim login probleme hatte hab ich einfach immer wie schon erklärt die html in ein file geschrieben per shellexecute angezeigt und mit ner msgbox das script gestoppt um zu sehen wo der fehler eigentlich liegt.