Textfeld auf einer Website ausfüllen

  • VB.NET

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von JuJu.

    Textfeld auf einer Website ausfüllen

    Hey Leute,

    habe folgendes Problem ich möchte einen Acc erstellen bot für meinbrutalo.de bauen, aber ich weiß nicht, wie ich in das vorhandene Textfeld intern etwas reinschreibe.

    Hier mal der Link : meinbrutalo.de

    Dort ist links ein Feld wo "HIER EINGEBEN" steht und mein bot soll intern dort einen Namen reinschreiben der durch zufall generiert wird.
    Nur wie soll das gehen?

    Grüße
    hmm, warum fangen nur alle Neulinge mit einem Bot an ?

    Du gehst folgendermassen vor:
    - Du liest Dir hier im Forum durch wie man mit einem WebBrowser Control die Seite ansteuert
    - Du weist einem HtmlElement per GetElementByTagName("input") das erste Input Element zu
    - Du füllst das Attribute value mit SetAttribute("value","meinText") mit Deinem Text

    Siehst Du, und schon hast Du die erste Klippe Deines Bots gemeistert ...

    Kangaroo schrieb:

    hmm, warum fangen nur alle Neulinge mit einem Bot an ?

    Du gehst folgendermassen vor:
    - Du liest Dir hier im Forum durch wie man mit einem WebBrowser Control die Seite ansteuert
    - Du weist einem HtmlElement per GetElementByTagName("input") das erste Input Element zu
    - Du füllst das Attribute value mit SetAttribute("value","meinText") mit Deinem Text

    Siehst Du, und schon hast Du die erste Klippe Deines Bots gemeistert ...

    Danke für die nette Antwort :)
    Kennst du eine gute Seite, wo man was über WebBrowser Control finden kann?
    Per SuFu finde ich hier nichts :o
    hmm, vielleicht solltest Du Dir abgewöhnen zu 1 Problem zwei gleiche Posts über das gleiche Thema zu eröffnen. Dein Problem kannst Du in zwei Teile zerlegen, das Ansteuern der Webseite und das Ausfüllen der "Textbox", genauer gesagt der HTML-Form.

    Navigieren zur Webseite:
    Dazu legst Du Dir zunächst einen WebBrowser an, entweder über den Designer indem Du das Control auf Deine Form ziehst, oder wenn Du das nur intern (unsichtbar) machen möchtest im Code selber:

    VB.NET-Quellcode

    1. Public Class Form1
    2. ' neuen webbrowser anlegen
    3. Private WithEvents wb As New WebBrowser

    Das Navigieren zu Deiner Webseite machst Du entweder schon beim Starten Deiner Anwendung (im Form.Load Event) oder nach betätigen eines Buttons. Wichtig ist dass Du wartest bis die Webseite vollständig geladen ist, das braucht immer etwas Zeit.

    VB.NET-Quellcode

    1. ' zur webseite navigieren
    2. wb.Navigate("www.meinbrutalo.de")
    3. ' laden des Dokuments abwarten
    4. While wb.ReadyState <> WebBrowserReadyState.Complete
    5. Application.DoEvents()
    6. End While

    Damit hast Du Dein erstes Problem gelöst und Du hast im Webbrowser.Document Deine Webseite als HtmlDocument geladen.

    Füllen der Textbox (Form Elements):
    Voraussetzung ist , dass Du Deine Webseite als HtmlDocument vorliegen hast. Schau Dir in Deinem Browser den Quelltext der Seite an, dann wirst Du sehen dass Deine "Textbox" dort als Form Element definiert ist:

    XML-Quellcode

    1. <form method="post" action="/go">
    2. Hast du dich schon registriert?
    3. <input type="text" name="name" value="" onkeydown="js.App.normalize(this);" onkeyup="js.App.normalize(this);"/>
    4. <input type="submit" value="Betreten!"/>
    5. </form>

    Das kannst Du nun in deinem Code so ausfüllen:

    VB.NET-Quellcode

    1. ' Form-Element suchen
    2. Dim frm As HtmlElement = wb.Document.Forms(0)
    3. ' input element holen
    4. Dim input As HtmlElement = frm.GetElementsByTagName("input").Item(0)
    5. ' text reinschreiben
    6. input.SetAttribute("value", "ki11or")
    7. ' Form abschicken
    8. frm.InvokeMember("submit")


    Kangaroo schrieb:

    hmm, vielleicht solltest Du Dir abgewöhnen zu 1 Problem zwei gleiche Posts über das gleiche Thema zu eröffnen. Dein Problem kannst Du in zwei Teile zerlegen, das Ansteuern der Webseite und das Ausfüllen der "Textbox", genauer gesagt der HTML-Form.

    Navigieren zur Webseite:
    Dazu legst Du Dir zunächst einen WebBrowser an, entweder über den Designer indem Du das Control auf Deine Form ziehst, oder wenn Du das nur intern (unsichtbar) machen möchtest im Code selber:

    VB.NET-Quellcode

    1. Public Class Form1
    2. ' neuen webbrowser anlegen
    3. Private WithEvents wb As New WebBrowser

    Das Navigieren zu Deiner Webseite machst Du entweder schon beim Starten Deiner Anwendung (im Form.Load Event) oder nach betätigen eines Buttons. Wichtig ist dass Du wartest bis die Webseite vollständig geladen ist, das braucht immer etwas Zeit.

    VB.NET-Quellcode

    1. ' zur webseite navigieren
    2. wb.Navigate("www.meinbrutalo.de")
    3. ' laden des Dokuments abwarten
    4. While wb.ReadyState <> WebBrowserReadyState.Complete
    5. Application.DoEvents()
    6. End While

    Damit hast Du Dein erstes Problem gelöst und Du hast im Webbrowser.Document Deine Webseite als HtmlDocument geladen.

    Füllen der Textbox (Form Elements):
    Voraussetzung ist , dass Du Deine Webseite als HtmlDocument vorliegen hast. Schau Dir in Deinem Browser den Quelltext der Seite an, dann wirst Du sehen dass Deine "Textbox" dort als Form Element definiert ist:

    XML-Quellcode

    1. Hast du dich schon registriert?

    Das kannst Du nun in deinem Code so ausfüllen:

    VB.NET-Quellcode

    1. ' Form-Element suchen
    2. Dim frm As HtmlElement = wb.Document.Forms(0)
    3. ' input element holen
    4. Dim input As HtmlElement = frm.GetElementsByTagName("input").Item(0)
    5. ' text reinschreiben
    6. input.SetAttribute("value", "ki11or")
    7. ' Form abschicken
    8. frm.InvokeMember("submit")


    Hey Danke für die KLASSE Hilfe!

    Nun sieht mein Quellcode wie folgt aus:

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub cmdStart_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdStart.Click
    3. WebBrowser1.Navigate(txtLink.Text)
    4. While WebBrowser1.ReadyState <> WebBrowserReadyState.Complete
    5. Application.DoEvents()
    6. End While
    7. ' Form-Element suchen
    8. Dim frm As HtmlElement = WebBrowser1.Document.Forms(0)
    9. ' input element holen
    10. Dim input As HtmlElement = frm.GetElementsByTagName("input").Item(0)
    11. ' text reinschreiben
    12. input.SetAttribute("value", "ki11or")
    13. ' Form abschicken
    14. frm.InvokeMember("submit")
    15. End Sub
    16. End Class


    Mein WebBrowser ist per Designer einefügt und die Eigenschaft Visible wurde auf den Wert False gesetzt, so dass man ihn nicht sieht.

    Nur wenn ich nun Klicke, öffnet er die website und das wars :)

    Grüße

    P.S. Kannst du über ICQ supporten :)?

    JuJu schrieb:

    Nur wenn ich nun Klicke, öffnet er die website und das wars

    Kommentier mal die Zeile frm.InvokeMember("submit") raus, dann wirst Du (hoffentlich) sehen, dass er den Wert richtig setzt.

    Du musst aber vermutlich registriert sein um das zu nutzen, keine Ahnung weil das nicht so ganz meine Seite ist.

    JuJu schrieb:

    P.S. Kannst du über ICQ supporten

    ICQ ist bei mir standardmässig ausgeschaltet, da mein PC dann immer nur gebimmelt hat wie'n Spielautomat.

    JuJu schrieb:

    Er trägts unten die TextBox ein und nicht in die TextBox oben links :x

    Dat Dingens 'oben links' ist Teil der Flash-Anwendung, die wirst Du wohl nicht so einfach füllen können, es sei denn Du klickst mit der Maus auf den WebBrowser und schickt den Code per Sendstring.

    Die Textbox unten ist ein Html-Element und da gehts wie beschrieben.

    XML-Quellcode

    1. <script type="text/javascript"> var so = new js.SWFObject("http://data.meinbrutalo.de/swf/uc.swf?v=17","create_form",290,460,9,"#ECAD71"); so.addParam("menu","false"); so.addParam("wmode","transparent"); so.addParam("AllowScriptAccess","always"); so.addParam("FlashVars","__file=http://data.meinbrutalo.de/swf/create_form.swf?v=20&__key=http://data_labrute_fr/swf_key&lang=de&path=http://data.meinbrutalo.de/swf/&amp;lang=de&amp;name=&amp;bv=http://data.meinbrutalo.de/img/de/btn_vala.gif&amp;bvo=http://data.meinbrutalo.de/img/de/btn_vala_over.gif"); so.addParam("scale","noscale"); so.write("swf_create_form"); </script>


    Das ist der dazu gehörige Code glaube ich^^

    Gibts keine Möglichkeit darein zu kommen?

    JuJu schrieb:

    Das ist der dazu gehörige Code glaube ich

    Das ist der Code zum Starten des Flash-Objektes: damit übergibt der WebBrowser den Link und die Parameter an das Shockwave-Flash Plugin, dass es dann selber runterlädt und ausführt.

    Soweit mir bekannt (man wird in diesem Forum ja sehr vorsichtig) ist das nicht zu knacken - aber vielleicht weiss ja jemand mehr.

    Die billige Methode ist wie gesagt Mouseclick simulieren auf die Zeichnung und per SendKeys einen String senden, die eleganteste Methode wohl den Http Stream zu verfälschen.

    Kangaroo schrieb:

    JuJu schrieb:

    Das ist der dazu gehörige Code glaube ich

    Das ist der Code zum Starten des Flash-Objektes: damit übergibt der WebBrowser den Link und die Parameter an das Shockwave-Flash Plugin, dass es dann selber runterlädt und ausführt.

    Soweit mir bekannt (man wird in diesem Forum ja sehr vorsichtig) ist das nicht zu knacken - aber vielleicht weiss ja jemand mehr.

    Die billige Methode ist wie gesagt Mouseclick simulieren auf die Zeichnung und per SendKeys einen String senden, die eleganteste Methode wohl den Http Stream zu verfälschen.
    Hey Danke schonmal wieder für diene schnellen Antworten :)

    Kann man eine Interne Maus erstellen? Also die halt nicht sichtbar ist und auch die eigentliche Maus beeinflusst?