Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[TuT] Logowanie na stronę www


Gość LastPhoenix450

Rekomendowane odpowiedzi

Opublikowano

Bez zbędnych wstępów udostępniam Wam ten skromny tutorial. Nie jest on w całości mój, jego połowa

była z jakiegoś angielskiego forum, ale ja to rozszerzyłem i spolszczyłem, nie mam linka - miałem to na dysku.

Pokazuje on proces logowanie na witrynie www, na przykładzie poczty gmail.

 

Co będziesz potrzebować:

1 button

1 webbrowser

2 textboxy

1 gmail

 

Krok 1.

Pierwszym krokiem jest otwarcie przeglądarki internetowej. Przejdź do strony na ,której będziesz się logować kiedy

będziesz robić swojego bota czy cokolwiek innego. W moim przypadku będzie to gmail.com. To jest link:

https://www.google.com/accounts/ServiceLogin

 

 

 

Krok 2.

Umieść ten kod pod button1

WebBrowser1.Navigate("https://www.google.com/accounts/ServiceLogin")

Powyższy kod powoduje przejście (w webbrowserze) do konkretnego adresu url, proste?

 

 

Krok 3.

Wróć do swojej przeglądarki internetowej. Kliknij prawym i 'zbadaj element' na login (email). Coś takiego:

<input type="text" name="Email" id="Email"

To powinno brzmieć jak 'type="text"' czyli jest to pole tekstowe gdzie wpisujesz login. Zatem skopiuj ID, w tym przypadku,

jest to 'Email'.

 

 

Krok 4.

Kliknij dwókrotnie na webbrowser1 i wpisz poniższy kod:

WebBrowser1.document.GetElementById("Email").SetAttribute("Value", TextBox1.Text)

Powoduje to wpisanie do pola tekstowego o id 'email' tekstu z textbox1.

 

 

Krok 5.

Powtórka kroku 3 i 4, ale musisz dodatkowo znaleźć ID pola z hasłem...

WebBrowser1.document.GetElementById("Email").SetAttribute("Value", TextBox1.Text)
WebBrowser1.document.GetElementById("Passwd").SetAttribute("Value", TextBox2.Text)

 

 

Krok 6.

Teraz wykonaj to co w kroku 3 i 4. Powinieneś mieć buttonID, zatem zbadaj element - guzik zaloguj i poszukaj 'type=sumbit' jest to typ buttona. Teraz jak już to znajdziesz (w tym przypadku id to 'signIn')

 

Krok 7.

Teraz kliknijmy w przycisk:

WebBrowser1.document.GetElementById("signIn").InvokeMember("click")

W celu zalogowania.

 

 

W rezultacie otrzymamy taki kod:

 

Button1:

WebBrowser1.Navigate("https://www.google.com/accounts/ServiceLogin")

Webbrowser1:

WebBrowser1.document.GetElementById("Email").SetAttribute("Value", TextBox1.Text)
WebBrowser1.document.GetElementById("Passwd").SetAttribute("Value", TextBox2.Text)
WebBrowser1.document.GetElementById("signIn").InvokeMember("click")

 

FAQ:

Q: Możesz to objaśnić szerzej?

A: Prościej sie nie da.

Q: Co jeśli mam multiple sumbit button? Jak moge wcisnąć ten guzik?

A: Prosto - popatrz na nazwę guzika i znajdź go. Przykładowo - mamy button "Zamów" wtedy powinieneś popatrzeć

w okolicach 'Zamów' w kodzie i skopiować ID. W dziale vb.net było to często poruszane więc możesz również poszukać jeśli to nie działa - get by tags albo get by value.

  • 2 tygodnie później...
Opublikowano

Próbuję zrobićwg poradnika, program do logowania na craftserve jednak coś jest nie tak z ostatnią linijką kodu wg.mnie polecenie "click" w cudzysłowie oznaczone jest jako tekst a nie jako akcja, ale zrobiłem wg poradnik i podczas akcji jest błąd i podkreślenie właśnie tej linijki

 

oto cały kod

 

Public Class Form3
   Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    WebBrowser1.Navigate("https://craftserve.pl/login")
   End Sub
   Private Sub WebBrowser1_DocumentCompleted(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
    WebBrowser1.document.GetElementById("email").SetAttribute("Value", TextBox1.Text)
    WebBrowser1.document.GetElementById("password").SetAttribute("Value", TextBox2.Text)
    WebBrowser1.document.GetElementById("Zaloguj").InvokeMember("Click")
   End Sub
End Class

Opublikowano

Próbuję zrobićwg poradnika, program do logowania na craftserve jednak coś jest nie tak z ostatnią linijką kodu wg.mnie polecenie "click" w cudzysłowie oznaczone jest jako tekst a nie jako akcja, ale zrobiłem wg poradnik i podczas akcji jest błąd i podkreślenie właśnie tej linijki

 

oto cały kod

 

Public Class Form3
   Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
       WebBrowser1.Navigate("https://craftserve.pl/login")
   End Sub
   Private Sub WebBrowser1_DocumentCompleted(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
       WebBrowser1.document.GetElementById("email").SetAttribute("Value", TextBox1.Text)
       WebBrowser1.document.GetElementById("password").SetAttribute("Value", TextBox2.Text)
       WebBrowser1.document.GetElementById("Zaloguj").InvokeMember("Click")
   End Sub
End Class

Wielkość liter.

Opublikowano

Jeżeli chodzi o wielkość liter w "click" to akurat teraz zmieniłem, próbowałem i małe i duże.

A jeżeli chodzi o zaloguj itd, to są wg. mnie poprawne - to ich kody

<input class="text" id="email" name="email" type="text">
<input class="password" id="password" name="password" type="password">
<button style="opacity: 0;" id="Zaloguj" name="Zaloguj">Zaloguj</button>

 

edit:

 

tu screen błędu, tak sobie pomyślałem, że może to coś ze stroną ?

 

tutaj screeny błędów

http://scr.hu/0uhz/vdrgy
http://scr.hu/0uhz/idh0h

 

a tutaj kod który mi się automatycznie podkreśla i pojawia troubleshooter

 

http://scr.hu/0uhz/vusci

Opublikowano

Jeżeli chodzi o wielkość liter w "click" to akurat teraz zmieniłem, próbowałem i małe i duże.

A jeżeli chodzi o zaloguj itd, to są wg. mnie poprawne - to ich kody

<input class="text" id="email" name="email" type="text">
<input class="password" id="password" name="password" type="password">
<button style="opacity: 0;" id="Zaloguj" name="Zaloguj">Zaloguj</button>

 

edit:

 

tu screen błędu, tak sobie pomyślałem, że może to coś ze stroną ?

 

tutaj screeny błędów

http://scr.hu/0uhz/vdrgy
http://scr.hu/0uhz/idh0h

 

a tutaj kod który mi się automatycznie podkreśla i pojawia troubleshooter

 

http://scr.hu/0uhz/vusci

Do wyłączenia pokazywania błędów JS zmień parametr ScriptErrorsSuppressed webBrowsera na false.

Co do błędu, to nie ma obiektu o name "Zaloguj" na stronie.

  • 2 tygodnie później...
Opublikowano

thX Ziooom :D:)

Ale mam problem on nie zatrzymuję się tylko dalej się loguje i tak cały czas !! Pomocy !! :D :P

Pokaż kod.

Opublikowano

Public Class KO

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
 WebBrowser1.Navigate("www.darkorbit.com")
End Sub

Private Sub WebBrowser1_DocumentCompleted(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
 WebBrowser1.document.GetElementById("loginForm_default_input_username").SetAttribute("Value", TextBox1.Text)
 WebBrowser1.document.GetElementById("loginForm_default_input_password").SetAttribute("Value", TextBox2.Text)
 WebBrowser1.document.GetElementById("loginForm_default_loginButton").InvokeMember("click")
End Sub

Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged

End Sub

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

End Sub

Private Sub TextBox2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox2.TextChanged

End Sub

Private Sub ProgressBar1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

End Sub

Private Sub Label1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label1.Click

End Sub

Private Sub Label2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label2.Click

End Sub

Private Sub Label3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label3.Click

End Sub
End Class

 

Mam jeszcze takie małe pytanko czy jest możliwość żeby program klikał dany obrazek ?? :D:)

Opublikowano

Dałeś logowanie w zdarzeniu, które uruchamia się po załadowaniu strony - czyli w nieskończoność, bo ładuje się ciągle na nowo.

Opublikowano
Public Class KO

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        WebBrowser1.Navigate("www.darkorbit.com")
        System.Threading.Thread.Sleep(2000)
        WebBrowser1.document.GetElementById("loginForm_default_input_username").SetAttribute("Value", TextBox1.Text)
        WebBrowser1.document.GetElementById("loginForm_default_input_password").SetAttribute("Value", TextBox2.Text)
        WebBrowser1.document.GetElementById("loginForm_default_loginButton").InvokeMember("click")
End Sub

End Class

Opublikowano
using System;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.IO;
using System.Collections;

namespace WindowsFormsApplication1
{
   public partial class Form1 : Form
   {
       public Form1()
       {
           InitializeComponent();
       }
       ArrayList listaSmokow = new ArrayList();
       private void Form1_Load(object sender, EventArgs e)
       {
           string login = "login", haslo = "haslo", tokenF, token;
           getData(out tokenF, out token);
           string src = POST("http://smoki.nightwood.net/index.php?id=zaloguj", string.Format("token-form={3}&token={2}&xlogin={0}&xhaslo={1}", login, haslo, token, tokenF), null, cc);
           int i = 0;
           while (true)
           {
               i = src.IndexOf("szczegoly&smok=");
               if (i == -1)
                   break;
               src = src.Remove(0, i + 15);
               string id = src.Substring(0, src.IndexOf("\""));
               src = src.Remove(0, src.IndexOf(">") + 1);
               string imie = src.Substring(0, src.IndexOf("<"));
               listaSmokow.Add(new smok(id, imie));
           }
       }
       CookieContainer cc = new CookieContainer();
       void getData(out string tokenform, out string token)
       {
           string src = GET("http://smoki.nightwood.net/index.php?exit", cc);
           src = src.Remove(0, src.IndexOf("token-form") + 19);
           tokenform = src.Substring(0, src.IndexOf("\""));
           src = src.Remove(0, src.IndexOf("token") + 14);
           token = src.Substring(0, src.IndexOf("\""));
       }
       string GET(string url, CookieContainer cc = null)
       {
           HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
           if (cc != null)
               request.CookieContainer = cc;
           HttpWebResponse response = (HttpWebResponse)request.GetResponse();
           StreamReader reader = new StreamReader(response.GetResponseStream());
           string ks = reader.ReadToEnd();
           response.Close();
           reader.Close();
           return ks;
       }
       string POST(string url, string data, string refe = null, CookieContainer cc = null)
       {
           UTF8Encoding kodowanie = new UTF8Encoding();
           Byte[] byteData = kodowanie.GetBytes(data);
           HttpWebRequest postRequest = (HttpWebRequest)WebRequest.Create(url);
           postRequest.Method = "POST";
           postRequest.KeepAlive = true;
           if (cc != null)
               postRequest.CookieContainer = cc;
           postRequest.ContentType = "application/x-www-form-urlencoded";
           if (refe != null)
               postRequest.Referer = refe;
           postRequest.UserAgent = "Mozilla/5.0 (Windows NT 6.2; WOW64; rv:17.0) Gecko/17.0 Firefox/17.0";
           postRequest.ContentLength = byteData.Length;
           Stream postRequestStream = postRequest.GetRequestStream();
           postRequestStream.Write(byteData, 0, byteData.Length);
           postRequestStream.Close();
           HttpWebResponse postResponse;
           postResponse = (HttpWebResponse)postRequest.GetResponse();
           if (cc != null)
               cc.Add(postResponse.Cookies);
           StreamReader postRequestReader = new StreamReader(postResponse.GetResponseStream());
           string kodStrony = postRequestReader.ReadToEnd();
           postResponse.Close();
           postRequestReader.Close();
           return kodStrony;
       }
   }
}

//Klasa smok
using System;

namespace WindowsFormsApplication1
{
   class smok
   {
       public smok(string id, string im)
       {
           this.id = id;
           this.imie = im;
       }
       public string id { get; set; }
       public string imie { get; set; }
   }
}

  • 3 miesiące temu...
Opublikowano

No to tutaj chyba nic juz się nie da zrobić :D. Na pewno nie webbrowserem

 

@mISZCZU

 

Ty mu napisałeś to w webhttprequest jak on jeszcze nie zna webbrowsera, i co mu z tego, że mu to zrobiłeś jak dalszej pracy nie wykona, gdyż nie będzie wiedział co ma zrobić

Jedyny działający bot do Gladiatusa 2015!!!

https://www.facebook.com/Gbot.vertek

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...