zachary1337 Posted August 6, 2014 Report Posted August 6, 2014 (edited) Se poate sa faci un login form si la logare sa te loghezi cu un cont de pe un forum? deci daca nu ai cont pe un anumit forum nu te poti loga in programPS : lucrez doar vb Edited August 6, 2014 by zachary1337 Quote
Ganav Posted August 6, 2014 Report Posted August 6, 2014 (edited) Da, poti. Trebuie sa stii doar ce mesaje afiseaza forumul atunci cand o logare s-a efectuat cu succes sau cand aceasta a esuat. Cu alte cuvinte cauti un string in pagina returnata de server-ul web: la o logare gresita(invalid user/pass) server-ul returneaza o pagina cu textul "Invalid username/password". Daca logarea se efectueaza cu succes atunci string-ul acesta nu este returnat in raspuns, deci combinatia user/pass este valida.Poti folosi urmatorul cod(acesta este pentru un request fara parametrii POST/GET):Imports SystemImports System.NetImports System.IOModule Module1 Sub Main() Dim sURL As String sURL = "http://www.forum.com" Dim wrGETURL As WebRequest wrGETURL = WebRequest.Create(sURL) Dim myProxy As New WebProxy("myproxy", 80) myProxy.BypassProxyOnLocal = True 'wrGETURL.Proxy = myProxy wrGETURL.Proxy = WebProxy.GetDefaultProxy() Dim objStream As Stream objStream = wrGETURL.GetResponse.GetResponseStream() Dim objReader As New StreamReader(objStream) Dim linie As String = "" Dim i As Integer = 0 Do While Not linie Is Nothing i += 1 linie = objReader.ReadLine If Not linie Is Nothing Then ' Verificam daca logarea s-a efectuat cu succes sau nu If linie.Contains("Invalid username/password") then Console.WriteLine("Logare invalida") End If End If Loop Console.ReadLine() End SubEnd Module Edited August 6, 2014 by Ganav Quote
askwrite Posted August 6, 2014 Report Posted August 6, 2014 Poti face cu un webbrowser, setat pe hide, cum a spus si ganav, iei idul de la inputuri (user/parola/buton submit), denumesti inputurile tale din vb user/parola si faci asa (in eventul de la buton click):webbrowser1.navigate("http://site.com")webbrowser1.document.all("iduser").setattribute("value", user)webbrowser1.document.all("idparola").setattribute("value", parola)webbrowser1.document.all("idparola").invokemember("click")if webbrowser1.documenttext.contains("mesaj pe care ti-l arata cand te-ai logat") Thenform2.show() // pui aici ce vrei sa faca daca e logatelsemsgbox("eroare") // pui aici ce vrei sa faca daca nu s-a logatend ifSi asta e tot.Eventual sa mai pui un delay inainte sa faca checkul dupa acel text. Quote
zachary1337 Posted August 6, 2014 Author Report Posted August 6, 2014 Poti face cu un webbrowser, setat pe hide, cum a spus si ganav, iei idul de la inputuri (user/parola/buton submit), denumesti inputurile tale din vb user/parola si faci asa (in eventul de la buton click):Si asta e tot.Eventual sa mai pui un delay inainte sa faca checkul dupa acel text.asta am incercat si eu cu getlemenetby id :WebBrowser1.Document.GetElementById(".... ").SetAttribute("value", TextBox1.Text)dar cum va sti programul daca are cont sau nu sa apara form2? daca intelegi ce vreau sa zic Quote
askwrite Posted August 6, 2014 Report Posted August 6, 2014 Tocmai am explicat mai sus, webbrowser1.navigate("http://site.com")webbrowser1.document.all("iduser").setattribute("v alue", user)webbrowser1.document.all("idparola").setattribute( "value", parola)webbrowser1.document.all("idparola").invokemember( "click")if webbrowser1.documenttext.contains("mesaj pe care ti-l arata cand te-ai logat") Thenform2.show() // pui aici ce vrei sa faca daca e logatelsemsgbox("eroare") // pui aici ce vrei sa faca daca nu s-a logatend if Quote
zachary1337 Posted August 6, 2014 Author Report Posted August 6, 2014 Object reference not set to an instance of an object. :@ ce are? Private Sub NsButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NsButton1.Click WebBrowser1.Navigate("http://royal.3xforum.ro/login.php") WebBrowser1.Document.All("req_username").SetAttribute("value", TextBox1.Text) WebBrowser1.Document.All("req_password").SetAttribute("value", TextBox2.Text) WebBrowser1.Document.All("submit").InvokeMember("click") If WebBrowser1.DocumentText.Contains("Logat cu succes !") Then Form2.Show() Else MsgBox("Parola / ID , incorect") End If End Sub Quote
daNNy.bv Posted August 6, 2014 Report Posted August 6, 2014 if instr(webbrowser1.document.body.innerhtml.tostring,"succes")form2.visible=trueelsemessagebox.show("Mata-i grasa")end ifincearca asa Quote
zachary1337 Posted August 6, 2014 Author Report Posted August 6, 2014 (edited) incearca asaam reusit cu ask cu urmatorul codWebBrowser1.Navigate("http://royal.3xforum.ro/login.php")WebBrowser1.Document.All("req_username").SetAttrib ute("value", TextBox1.Text)WebBrowser1.Document.All("req_password").SetAttrib ute("value", TextBox2.Text)WebBrowser1.Document.All("login").InvokeMember("c lick")doar ca nu se intampla nimic cand apas "click" nu face request la pagina Edited August 6, 2014 by zachary1337 Quote
askwrite Posted August 6, 2014 Report Posted August 6, 2014 Nu se intampla nimic deoarece el are vreo n cuvinte "login" in sursa, si nu stie pe care sa-l interpreteze.Nu mai stiu cum e in vb, gen cum e in php $string[1] Quote
zachary1337 Posted August 6, 2014 Author Report Posted August 6, 2014 am gasit codu asta pa gugalWebBrowser1.Document.Forms.GetElementsByName("Search").Item(0).InvokeMember("submit") Quote
askwrite Posted August 6, 2014 Report Posted August 6, 2014 inloc de WebBrowser1.Document.All("login").InvokeMember("click")incearca asaWebBrowser1.Document.Forms.GetElementsByName("login").Item(8).InvokeMember("click") Quote
zachary1337 Posted August 6, 2014 Author Report Posted August 6, 2014 inloc de incearca asaSystem.ArgumentOutOfRangeException was unhandledValue of '8' is not valid for 'index'. 'index' should be between 0 and -1.Parameter name: index Quote
Byte-ul Posted August 6, 2014 Report Posted August 6, 2014 Foloseste webrequests. Daca e vbulletin, VB.NET - vBulletin Login Module - Pastebin.com Quote
zachary1337 Posted August 6, 2014 Author Report Posted August 6, 2014 (edited) Foloseste webrequests. Daca e vbulletin, VB.NET - vBulletin Login Module - Pastebin.comedit : am rezolvat , noroc cu vbforums Edited August 6, 2014 by zachary1337 Quote
askwrite Posted August 6, 2014 Report Posted August 6, 2014 Foloseste 3xforum, nu are access la nimic, nu ofera 3xforum.(respectiv http://www.royal.3xforum.ro/), poate sa-l faca cum ai zis si tu cu webrequests, trebuie doar sa intercepteze geturile & posturile. Quote
zachary1337 Posted August 6, 2014 Author Report Posted August 6, 2014 Foloseste 3xforum, nu are access la nimic, nu ofera 3xforum.(respectiv http://www.royal.3xforum.ro/), poate sa-l faca cum ai zis si tu cu webrequests, trebuie doar sa intercepteze geturile & posturile.am reusit , se logheaza WebBrowser1.Document.All("req_username").SetAttribute("value", TextBox1.Text) WebBrowser1.Document.All("req_password").SetAttribute("value", TextBox2.Text) WebBrowser1.Document.Forms("login").All("login").InvokeMember("click") MsgBox("Logat cu succes !") Form2.Show()dar aici apare alta problema , ca orice id si pass bag imi apare form2 Quote
Byte-ul Posted August 6, 2014 Report Posted August 6, 2014 am reusit WebBrowser1.Document.All("req_username").SetAttribute("value", TextBox1.Text) WebBrowser1.Document.All("req_password").SetAttribute("value", TextBox2.Text) WebBrowser1.Document.Forms("login").All("login").InvokeMember("click") MsgBox("Logat cu succes !") Form2.Show()dar aici apare alta problema , ca orice id si pass bag imi apare form2pai normal vezi si tu un text care apare pe site doar cand esti logat, verifica daca exista textu in webbrowser si daca exista, atunci pui form2.show Quote
zachary1337 Posted August 6, 2014 Author Report Posted August 6, 2014 pai normal vezi si tu un text care apare pe site doar cand esti logat, verifica daca exista textu in webbrowser si daca exista, atunci pui form2.showasta imi apare cand ma loghez , cum fac mai exact ? Quote
Byte-ul Posted August 6, 2014 Report Posted August 6, 2014 ceva de genu:if browser.DocumentText.contains("Logare reusita") thenform2.show()elsemsgbox("logni esuat") Quote
zachary1337 Posted August 6, 2014 Author Report Posted August 6, 2014 imi arata doar msgbox si se logheaza dar nu imi mai arata form2 Quote
askwrite Posted August 6, 2014 Report Posted August 6, 2014 Incearca sa faci cum ti-am dat prima oara:webbrowser1.document.all("req_username").setattribute("value", user)webbrowser1.document.all("req_password").setattribute( "value", parola)webbrowser1.document.all("login").invokemember( "click")if webbrowser1.documenttext.contains("Logare reusita") Thenform2.show() // pui aici ce vrei sa faca daca e logatelsemsgbox("eroare") // pui aici ce vrei sa faca daca nu s-a logatend if doar ca webbrowser1.document.all("login").invokemember("click")devine in webbrowser1.document.forms("login").all("login").invokemember("click")deci codul final va fi asa:webbrowser1.document.all("req_username").setattribute("value", user)webbrowser1.document.all("req_password").setattribute( "value", parola)webbrowser1.document.forms("login").all("login").invokemember("click")if webbrowser1.documenttext.contains("Logare reusita") Thenform2.show() // pui aici ce vrei sa faca daca e logatelsemsgbox("eroare") // pui aici ce vrei sa faca daca nu s-a logatend if Quote
zachary1337 Posted August 6, 2014 Author Report Posted August 6, 2014 Incearca sa faci cum ti-am dat prima oara:doar ca devine in deci codul final va fi asa:nu vrea nici cum sa imi arate form2 mortu se logheaza si imi apare msgbox atat WebBrowser1.Document.All("req_username").SetAttribute("value", TextBox1.Text) WebBrowser1.Document.All("req_password").SetAttribute("value", TextBox2.Text) WebBrowser1.Document.Forms("login").All("login").InvokeMember("click") If WebBrowser1.DocumentText.Contains("Logare reusita.") Then Form2.Show() Else MsgBox("eroare") End If Quote
askwrite Posted August 6, 2014 Report Posted August 6, 2014 webbrowser1.document.all("req_username").setattribute("value", user)webbrowser1.document.all("req_password").setattribute( "value", parola)webbrowser1.document.forms("login").all("login").i nvokemember("click")system.threading.thread.sleep(2000) // inseamna 2 secunde, o sa astepte 5 secunde inainte sa faca checkul.if webbrowser1.documenttext.contains("Logare reusita") Thenform2.show() // pui aici ce vrei sa faca daca e logatelsemsgbox("eroare") // pui aici ce vrei sa faca daca nu s-a logatend if asa o sa-ti mearga sigur. (daca nu, mai umbla la sleep, incearca sa maresti timpul, vezi in cat timp dupa ce ai dat login, iti arata logare reusita si pui acolo. Quote
Byte-ul Posted August 6, 2014 Report Posted August 6, 2014 nu vrea nici cum sa imi arate form2 mortu se logheaza si imi apare msgbox atat WebBrowser1.Document.All("req_username").SetAttribute("value", TextBox1.Text) WebBrowser1.Document.All("req_password").SetAttribute("value", TextBox2.Text) WebBrowser1.Document.Forms("login").All("login").InvokeMember("click") If WebBrowser1.DocumentText.Contains("Logare reusita.") Then Form2.Show() Else MsgBox("eroare") End IfUita-te in sursa si vezi cum e "Logare reusita" ala scris. Poate nu e chiar asa. Quote
zachary1337 Posted August 6, 2014 Author Report Posted August 6, 2014 (edited) Uita-te in sursa si vezi cum e "Logare reusita" ala scris. Poate nu e chiar asa.am reusit , ma ajutat ask acum "finalu" ) sa nu mai fac alt topic problema e ca dupa ce reuseste sa se logheze ramane automat logat pe site si cand intru dinou in program nu mai ma pot loga ca e deja logat ma gandeam daca se poate un auto logout rapid dupa ce se logheaza ca nu vreau sa apelez la clear cookies sa le sterg la oameni din firefox ce au ei pe acol...edit : uitati si codu If WebBrowser1.DocumentText.Contains("Logout") Then WebBrowser1.Document.Forms("Logout").All("Logout").InvokeMember("click") WebBrowser1.Navigate("http://royal.3xforum.ro/login.php") End If Delay(1) Application.DoEvents() WebBrowser1.Document.All("req_username").SetAttribute("value", TextBox1.Text) WebBrowser1.Document.All("req_password").SetAttribute("value", TextBox2.Text) WebBrowser1.Document.Forms("login").All("login").InvokeMember("click") Delay(1) If WebBrowser1.DocumentText.Contains("Logare reusita.") Then Form2.Show() Me.Hide() Else MsgBox("Parola / ID , Invalid") End If Edited August 6, 2014 by zachary1337 Quote