Visual Basic Forum

Visual Basic Forum
für VB6 und VB.NET Programmierer
 
RegistrierenRegistrieren  LoginLogin

Neues Thema eröffnen   Neue Antwort erstellen    Visual Basic Forum Foren-Übersicht -> [VB6] Fragen - Antworten
Autor
Nachricht
LooneyToons
Poster
Poster

Anmeldedatum: 01.05.2008
Beiträge: 125

Schneller Login über Winsock
Verfasst am: 30.06.2008, 14:00

-Login über Winsock-
So in diesem tutorial , welches auch mein erstes ist , zeige ich euch , wie man einen account testet, ob er valid oder invalid ist , über winsock.
Als Beispiel nehme ich Youtube




Was ihr braucht:
-Winsock Control
-Live HTTP Headers
https://addons.mozilla.org/de/firefox/addon/3829

Start:
Zuerst , erstellt ihr ein neues Projekt , mit Standart-Exe.
Anschliessend fügt ihr die komponente Microsoft Winsock COntrol hinzu


Ihr zieht diese auf die Form.

Dannach geht ihr auf www.youtube.com und geht auf die Sign up (
http://youtube.com/signup?next=/ ) page.
Dann startet ihr das Addon Live Http Headers und markiert mitschneiden.
Anschliessend loggt ihr euch ein und erhaltet so eure postdaten welches ab dem roten block beginnt und bis zum absatz geht


so , ja ganz richtig , das was ich unterstrichen hab ist username + password =) dort werden sie gesendet =P

Das grün markierte ist schon die antwort von Youtube wenn wir ein richtiges Password eingegeben haben.

-Das Coden-
Ich schreibe gerne meine Funktionen in ein Modul , damit es übersichtlicher wird .Ihr müsst bloss darauf achten , dass wenn ihr es ins Modul schreibt , die Funktion als Public zu Deklarieren.

Visual Basic: [code]
Public Function Login(Username As String, Password As String, WSock As Winsock)

End Function[/code]
Das ist meine LoginFunktion
nun muss ich das packet zusammenbasteln .
Dies muss dem anderem Packet gleichen welches ich aus Http Headers bekommen habe
hier ist das packet aus HTTP Headers
POST /signup?next=/ HTTP/1.1
Host: youtube.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9) Gecko/2008052906 Firefox/3.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: http://youtube.com/signup?next=/
Cookie: use_hitbox=72c46ff6cbcdb7c5585c36411b6b334edAEAAAAw; VISITOR_INFO1_LIVE=4EHIAmf6fmo; PREF=cr=US&ul=en; GEO=76b10c499c21cce9909d902d4af9c5a2cxIAAABERSxycCx0cmllciwsLCwsLTE=; LOCALE_PREFERENCE=86d1d09eefe6b79b4068000ce05518a4dAUAAABlbl9VUw==; TOO_YOUNG_COOKIE=3f6bc583bfba75fc8e4f8dd70454c60adAEAAAAx
Content-Type: application/x-www-form-urlencoded
Content-Length: 155
current_form=loginForm&next=%2F&username=jimmys1234567&password=jack1eee&action_login=Log+In&session_token=RRRVBAH0JWJ6JeJmdMUKnK_NPX18MTIxNDkxNzE5OA%3D%3D
nun baue ich Zeile für zeile das packet zusammen
dafür deklariere ich einen String mit dem namen Packet
und einen Long mit dem Namen PacketLenght , weil das für Content-Lenght wichtig ist =)

Visual Basic: [code]
Public Function Login(Username As String, Password As String, WSock As Winsock)

Dim Packet As String: Dim PacketLenght As Long

PacketLenght = 134 + Len(Username) + Len(Password)

Packet = "POST /signup?next=/ HTTP/1.1" & vbCrLf
Packet = Packet + "Host: " & WSock.RemoteHost & vbCrLf
Packet = Packet + "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9) Gecko/2008052906 Firefox/3.0" & vbCrLf
Packet = Packet + "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" & vbCrLf
Packet = Packet + "Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3" & vbCrLf
Packet = Packet + "Accept-Encoding: gzip,deflate" & vbCrLf
Packet = Packet + "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7" & vbCrLf
Packet = Packet + "Keep-Alive: 300" & vbCrLf
Packet = Packet + "Connection: keep-alive" & vbCrLf
Packet = Packet + "Referer: http://youtube.com/signup?next=/" & vbCrLf
Packet = Packet + "Cookie: use_hitbox=72c46ff6cbcdb7c5585c36411b6b334edAEAAAAw; VISITOR_INFO1_LIVE=XmRtoPPqBEo; PREF=cr=US&ul=en; GEO=76b10c499c21cce9909d902d4af9c5a2cxIAAABERSxycCx0cmllciwsLCwsLTE=; LOCALE_PREFERENCE=86d1d09eefe6b79b4068000ce05518a4dAUAAABlbl9VUw==" & vbCrLf
Packet = Packet + "Content-Type: application/x-www-form-urlencoded" & vbCrLf
Packet = Packet + "Content-Length: " & PacketLenght & vbCrLf & vbCrLf
Packet = Packet + "current_form=loginForm&next=%2F&username=" & Username & "&password=" & Password & "&action_login=Log+In&session_token=Zqvo4lRXPDdQye2LiNJeoPmSODN8MTIxNDg1ODg1MQ%3D%3D"

WSock.SendData Packet

End Function[/code]

Wichtig:
-Ihr dürft niemals die vbNewline/vbcrlf vergessen und beim letzen packetabschnitt zweimal vbNewline/vbCrlf , auch wenn es nur wie ein Tabsprung aussieht ^^
-Die packetLenght besteht aus der Länge von dem Letzten kleinen abschnitt
"current_form=loginForm&next=%2F&username=&password=&action_login=Log+In&session_token=Zqvo4lRXPDdQye2LiNJeoPmSODN8MTIxNDg1ODg1MQ%3D%3D"
und der TextLänge des Usernamen und Passwort.
-ganz unten wird das packet einfach gesendet.
-ausserdem haben wir die richtigen usernames und passwords durch die variable ersetzt
"current_form=loginForm&next=%2F&username=" & Username & "&password=" & Password & "&action_login=Log+In&session_token=Zqvo4lRXPDdQye2LiNJeoPmSODN8MTIxNDg1ODg1MQ%3D%3D"
So , die Funktion zum Login ist nun fertig , nun kommen wir zum leichteren Teil ^^

erstmal im FormUnload Winsock.CLose hinzufügen , man weiss ja nie =)
Visual Basic: [code]
Private Sub Form_Unload(Cancel As Integer)
Winsock.Close
End
End Sub[/code]

nun erstellt ihr 2 Textfelder mit den namen txt_user ,und txt_pass
und einen Commandbutton mit dem namen cmd_login

Visual Basic: [code]
Private Sub cmd_login_Click()
Winsock.Close 'man weiss ja nie
Winsock.Connect "www.youtube.com", "80" 'dieser Connected zum youtube server
End Sub[/code]
Hier connected der Winsock zum youtubeServer

Visual Basic: [code]
Private Sub Winsock_Connect()
Login txt_user.Text, txt_pass.Text, Winsock
End Sub[/code]
Im event Connect wird die Funktion aufgerufen die wir im Modul gebastelt hatten =)

Visual Basic: [code]
Private Sub Winsock_DataArrival(ByVal bytesTotal As Long)

Dim Response As String * 22 'maximal 22 zeichen

Winsock.GetData Response

If Response <> vbNullString then
If Response = "HTTP/1.1 303 See Other" Then
MsgBox "This account is correct!", vbInformation, "CORRECT"
Exit Sub 'nur weil er manchmal auch else aktiviert ^^ ka warum
Else
MsgBox "This account is incorrect!", vbCritical, "INCORRECT"
End If
End If
Winsock.Close

End Sub[/code]

-So , und hier im DataArrival deklariere ich einen String namens Response der nur 22 zeichen lang werden kann
-Im winsock.GetData wird die antwort von Youtube in die Variable Response gespeichert
-Eine normale IfAbfrage ob der account richtig ist
-Winsock Close kennen wir ja schon =)

So das war mein erstes tutorial .
Ich weiss , es ist nicht die Renaissance des menschlichen Geistes , aber wenigstens etwas , ich habe mich benüht es verständlich zu machen =)

ich gebe euch den kompletten sourceCode in dem Anhang

ausserdem bitte ich um feedback und nicht zu streng.

Fragen sind erwünscht ^^

mfg
_________________

 
ZiG
Überflieger
Überflieger

Anmeldedatum: 16.04.2008
Beiträge: 421


Verfasst am: 30.06.2008, 16:08

Nettes tut und gut erklärt.
Damit sollte es endlich weniger Fragen übers einloggen mit dem webbrowser geben.
Und viele hat es ja abgeschreckt wenn man meinte dass das genauso übers winsock geht.

Also gut gemacht und weiter so Wink
 
LooneyToons
Poster
Poster

Anmeldedatum: 01.05.2008
Beiträge: 125


Verfasst am: 30.06.2008, 16:54

jo zig ,
aber es geht nicht immer , es geht nur wenn beim einloggen die Response bei Richtig oder Falsch unterschiedlich ist , zumindest denk ich das , ich hab mich auch erst gestern damit auseinander gesetzt ^^
 
Inmice
Tutorial Leser
Tutorial Leser

Anmeldedatum: 27.05.2008
Beiträge: 32


Verfasst am: 30.06.2008, 17:49

SChön geschrieben Smile
 
Psycho22
Newbie
Newbie

Anmeldedatum: 03.05.2008
Beiträge: 8


Verfasst am: 30.06.2008, 17:52

das ist wirklich gut erklärt N1
 
Marduk
Überflieger
Überflieger

Anmeldedatum: 16.04.2008
Beiträge: 374


Verfasst am: 30.06.2008, 18:01

Schönes Tutorial hast du da gemacht Smile
Und wirklich gut erklärt.

Was ich noch sagen wollte, bei den meisten Webanwendungen(logins) muss man gar nicht den ganzen Header mitschicken. Meistens reicht auch schon wenn man Content-Type, Content-Length, Host, Methode angibt.
Muss man halt bisschen probieren. :p
 
LooneyToons
Poster
Poster

Anmeldedatum: 01.05.2008
Beiträge: 125


Verfasst am: 30.06.2008, 18:15

danke =)
ja hab mich erst gestern damit auseinandergesetzt =P
danke für euren feedback =D
ich könnte das tutorial vllt noch anschaulicher gestalten , oder nicht so durcheinander ^^
 
alexanderjanjic
Newbie
Newbie

Anmeldedatum: 22.06.2008
Beiträge: 19


Verfasst am: 30.06.2008, 19:02

Gutes Tutorial aber ich wäre auch froh wenn es eins für .Net geben würde Smile
 
Analegrande
Tutorial Leser
Tutorial Leser

Anmeldedatum: 01.05.2008
Beiträge: 69


Verfasst am: 30.06.2008, 19:47

Das wünschte ich mir auch =)

Aber das Tutuprial ist gut geworden. Mal sehn ob ich das auch in .net umsetzen kann.
 
Marduk
Überflieger
Überflieger

Anmeldedatum: 16.04.2008
Beiträge: 374


Verfasst am: 30.06.2008, 21:41

Gibt doch schon ein Tutorial darüber ihr Blindschleichen -.-

Wenn ihr natürlich nachdenken müsst, schaltet ihr wieder auf Durchzug und lasst die anderen machen, is klar. Selber nachdenken und Hirn anstrengen, dann klappt das auch mit dem POST senden



oohh, jetzt hab ich´s ja verraten, ich Depp:eek:
 
Analegrande
Tutorial Leser
Tutorial Leser

Anmeldedatum: 01.05.2008
Beiträge: 69


Verfasst am: 01.07.2008, 01:52

Dein Tutorial habe ich auch schon gelesen jedoch fand ich es, für mich als .net Anfänger nicht so verständlich, sorry.^^
Aber helfen tun die beiden Tutorials hier alle male und ich werds schon hinkriegen Smile
 
sollniss
Überflieger
Überflieger

Anmeldedatum: 01.05.2008
Beiträge: 699


Verfasst am: 01.07.2008, 06:09

Alter.. was ihr alle mit .NET wollt, das hier ist Visual Basic Classic und hat mit VB.NET nur im geringsten was zu tun. In .NET gibts nichmal ne Winsock, da könnt ihr auch nix umschreiben oder so.
 
LooneyToons
Poster
Poster

Anmeldedatum: 01.05.2008
Beiträge: 125


Verfasst am: 01.07.2008, 11:25

(Marduk;4783)
Das klappt auch mit dem POST senden
oohh, jetzt hab ich´s ja verraten, ich Depp:eek:


bei VB.Net müsst ihr dann wie marduk sagte einfach das mim POST benutzten =P
 
igoe
Gast





Verfasst am: 02.07.2008, 23:33

Sehr nett gemacht Wink
 
^^kev####
Überflieger
Überflieger

Anmeldedatum: 01.05.2008
Beiträge: 476
Wohnort: Haan


Verfasst am: 03.07.2008, 15:37

(sollniss;4790)
Alter.. was ihr alle mit .NET wollt, das hier ist Visual Basic Classic und hat mit VB.NET nur im geringsten was zu tun. In .NET gibts nichmal ne Winsock, da könnt ihr auch nix umschreiben oder so.


lööl xD
WinSock ist ja auch veraltet und .NET benutzt fast keine alten sachen mehr.
Wozu gibts TCP Client / Server u. UDP Client / Server?
_________________
 
Evonix
Newbie
Newbie

Anmeldedatum: 19.07.2008
Beiträge: 3


Verfasst am: 08.09.2008, 15:40

Habe versucht das für Amazon zu ändern, aber es funktioniert irgendwie nicht.

Visual Basic: [code]Public Function Login(Username As String, Password As String, WSock As Winsock)

Dim Packet As String: Dim PacketLenght As Long

PacketLenght = 549 + Len(Username) + Len(Password)

Packet = "POST /gp/flex/sign-in/select.html HTTP/1.1" & vbCrLf
Packet = Packet + "Host: www.amazon.de" & vbCrLf
Packet = Packet + "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1" & vbCrLf
Packet = Packet + "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" & vbCrLf
Packet = Packet + "Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3" & vbCrLf
Packet = Packet + "Accept-Encoding: gzip,deflate" & vbCrLf
Packet = Packet + "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7" & vbCrLf
Packet = Packet + "Keep-Alive: 300" & vbCrLf
Packet = Packet + "Connection: keep-alive" & vbCrLf
Packet = Packet + "Referer: https://www.amazon.de/gp/sign-in.html?ie=UT...yourstore" & vbCrLf
Packet = Packet + "Cookie: session-id-time=1221429600l; session-id=302-7735937-7838444; ubid-acbde=302-7403452-2682059; session-token=cGyXapEej14fw3CjKAFS6/Hz+htIdfGVWxCejWncgKM8/01zqQ5SReApbAqYO0tI8K17mcFzyJtU1eOumaUUMIp0j1Nvnjv5saZc/CmfgM3tFIxk4k+QXYjSaNj8O92EOb9EIJ2Y1gCEPaAkCJMTzaD7fHQ6HdC96d+H7Ng78fsNyZcjL/sn/iWN2Gk8cLhdagUk/xEqpRHxTi8vePldFA==" & vbCrLf
Packet = Packet + "Content-Type: application/x-www-form-urlencoded" & vbCrLf
Packet = Packet + "Content-Length: " & PacketLenght & vbCrLf & vbCrLf
Packet = Packet + "__mk_de_DE=%C5M%C5Z%D5%D1&path=%2Fgp%2Fyourstore&useRedirectOnSuccess=1&query=signIn%3D1%26ref_%3Dpd_irl_gw&mode=&redirectProtocol=&pageAction=%2Fgp%2Fyourstore&disableCorpSignUp=&protocol=https&sessionId=302-7735937-7838444&referer=flex&email=" & Username & "&action=sign-in&password=" & Password & "&x=176&y=8&metadata1=Firefox+3.0.1+Windows&metadataf1=&metadata2=Mozilla+Default+Plug-in+Shockwave+Flash+90124Microsoft%AE+DRM+Windows+Media+Player+Plug-in+Dynamic+Link+Library+%7C%7C1280-1024-994-32-*-*-*&metadata3=timezone%3A+-1+execution+time%3A+1"

WSock.SendData Packet

End Function[/code]

Visual Basic: [code]Private Sub cmd_login_Click()
Winsock.Close
Winsock.Connect "www.amazon.de", "80"
End Sub

Private Sub Form_Unload(Cancel As Integer)
Winsock.Close
End
End Sub
Private Sub Winsock_Connect()
Login txt_user.Text, txt_pass.Text, Winsock
End Sub
Private Sub Winsock_DataArrival(ByVal bytesTotal As Long)

Dim Response As String * 22

Winsock.GetData Response

If Response = "HTTP/1.1 303 See Other" Then
MsgBox "This account is correct!", vbInformation, "CORRECT"
Exit Sub
Else
MsgBox "This account is incorrect!", vbCritical, "INCORRECT"
End If
Winsock.Close

End Sub[/code]
 
alkali
Newbie
Newbie

Anmeldedatum: 21.09.2008
Beiträge: 2


Verfasst am: 21.09.2008, 02:43

geht bei mir iwie nicht - für rapidshare:(

Public Function Current(Login As String, Password As String, WSock As Winsock)

Dim Packet As String: Dim PacketLenght As Long

PacketLenght = 134 + Len(Login) + Len(Password)

Packet = "POST /cgi-bin/ HTTP/1.1" & vbCrLf
Packet = Packet + "Host: " & WSock.RemoteHost & vbCrLf
Packet = Packet + "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1" & vbCrLf
Packet = Packet + "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" & vbCrLf
Packet = Packet + "Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3" & vbCrLf
Packet = Packet + "Accept-Encoding: gzip,deflate" & vbCrLf
Packet = Packet + "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7" & vbCrLf
Packet = Packet + "Keep-Alive: 300" & vbCrLf
Packet = Packet + "Connection: keep-alive" & vbCrLf
Packet = Packet + "Referer: https://ssl.rapidshare.com/premiumzone.html" & vbCrLf
Packet = Packet + "Content-Type: application/x-www-form-urlencoded" & vbCrLf
Packet = Packet + "Content-Length: " & PacketLenght & vbCrLf & vbCrLf
Packet = Packet + "uselandingpage=1&login=" & Login & "&password=" & Password

WSock.SendData Packet

End Function

_________________


 
LooneyToons
Poster
Poster

Anmeldedatum: 01.05.2008
Beiträge: 125


Verfasst am: 21.09.2008, 13:27


da lies ma das durch=O

http://www.visual-basic-forum.de/viewtopic.php/winsock...oblem-1355.html
 
Neues Thema eröffnen   Neue Antwort erstellen    Visual Basic Forum Foren-Übersicht -> [VB6] Fragen - Antworten

Tags: visual basic, winsock, login

 
 Verwandte Themen   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Wie kann ich mich bei euch anmelden?? 796 20.05.2002, 00:28
Keine neuen Beiträge Eine kleine Frage an euch.. 906 30.09.2007, 08:57
Keine neuen Beiträge TopMost Funktion unter DirectX 921 27.07.2007, 10:48
Keine neuen Beiträge Wie Funktion nutzen ? 1100 29.06.2007, 20:59
Keine neuen Beiträge update funktion einbauen 1341 28.01.2007, 23:11
 

RSSQianmen - Zhengyangmen und die Qianmen StraÃ?e
AdSprüche
RSSGrillen V
dealrabbit Gutscheine Sprüche


[ Time: 0.6186s ][ Queries: 149 (0.0626s) ][ GZIP on - Debug on ]