DynDNS Webbot

  • VB.NET
  • .NET (FX) 3.0–3.5

Es gibt 17 Antworten in diesem Thema. Der letzte Beitrag () ist von murmeltier28.

    DynDNS Webbot

    Hi

    ich bin neu in der VB Programmierung und hab mich auch gleich an ein für mich schwieriges Projekt gewagt.
    Ein paar Grundsätze kenn ich allerdings schon durch VBA (Hab für die Arbeit ein kleines Programm geschrieben das mir Daten in Excel Datenbank schreibt, zur Nachbearbeitung die Daten abruft und Grafisch für Dritte aufbereitet)

    Jetzt zu meinem Projekt.

    Ich habe eine Domain bei prosite.de gemietet. Diese würde ich gern per A-Record auf meinen eigenen Server weiterleiten. Deswegen will ich einen Webbot programmieren der per Konsole auf meinem Server läuft und einmal täglich per Aufgabenplanung den Webbrowser aufmacht sich in meinen Account einloggt und in dem richtigen die aktuelle IP einträgt.

    Ich habe mit diesem Code soweit schon fast das Ziel erreicht:

    Visual Basic-Quellcode

    1. Dim Ie As Object
    2. Ie = CreateObject("InternetExplorer.Application")
    3. Ie.Visible = True
    4. Ie.navigate("https://www.prosite.de/admin/login")
    5. Do While Ie.ReadyState <> 4
    6. Loop
    7. Ie.Document.all("data[Admin][domain]").Value = "Username"
    8. Ie.Document.all("data[Admin][password]").Value = "passwort"
    9. Ie.document.getelementbyid("goconbut").Click()
    10. Do While Ie.ReadyState <> 4
    11. Loop
    12. Ie.navigate("https://www.prosite.de/Admin/dom_showdomains/show/only/de")
    13. Do While Ie.ReadyState <> 4
    14. Loop


    Mein Problem ist das ich auf der Seite auf der ich lande einen Button klicken muss um meine Homepage auszuwählen


    Der button ist aber mit Javascript Programmiert und hat weder ID noch Namen ich weis einfach nicht mehr weiter. Ich probiere jetzt schon seit 3 Tagen diesen blöden button zu klicken aber bekomme immer Fehlermeldungen. Ich hoffe ihr könnt mir helfen...

    Der HTML Code des Button ist:

    HTML-Quellcode

    1. <span>
    2. <form action="/admin/dom_dns/only" id="AdminDomShowdomainsForm" method="post" accept-charset="utf-8"><div style="display:none;">
    3. <input type="hidden" name="_method" value="POST">
    4. <input type="hidden" name="data[_Token][key]" value="EwigLangeNummerDieSichAendert" id="TokenNochNeNummerDieSichAendert"></div>
    5. <input type="hidden" name="data[Admin][domain]" value="HomepageAdresse" id="AdminDomain">
    6. <div class="submit"><input type="image" src="/images/edit_dns_30.png">
    7. </div><div style="display:none;"><input type="hidden" name="data[_Token][fields]" value="IndividuelleNummer%3AAdmin.domain" id="TokenFieldsTokenNummer">
    8. <input type="hidden" name="data[_Token][unlocked]" value="x%7Cy" id="TokenUnlockedNochNeTokkenNummer"></div>
    9. </form>
    10. </span>


    Ich hoffe das ist überhaupt machbar. Ich bin nämlich echt am verzweifeln.

    Ach ja ^^ Bei google hab ich mich schon dumm und dappig gesucht. gibt zwar viele Hilfen aber nichts zu dieser Konstellation...

    Danke schon mal

    LG Flo
    Vergiss am Besten alles, was du aus VBA weißt, in VB.NET hat das nichts mehr zu suchen. Hier ein paar Stichworte, nach denen du googeln kannst: ​WebClient (als Ersatz für dein CreateObject mitm IE) ​Event (damit gehen die Do-While-Schleifen weg und du sparst Leistung)

    PS: Bots sind hier im Forum eigentlich nicht erwünscht

    MfG Stefan
    Das hat ja nichts mit Bots im Eigentlichen Sinne zu tun.

    Das einzige, was er machen möchte, ist die DynDNS API seines Domainproviders anzusteuern.

    a) Programmierst du wirklich in 2014 noch VB6? Lass das. Schau dir mal moderne und zeitgemäße Sprachen an.
    b) Möchtest du das wirklich selbst schreiben? Ich hatte hier: wiki.do.de/index.php/FlexDNS_-_Einrichtung schon mal erklärt, wie man den DynDNS Service 1.2 unter Windows einrichtet. Ein wirklich gutes Programm.
    Hey Danke für den Tip mit dem Programm das werd ich mir heute abend gleich mal anschauen :) Aber ich glaube das geht nur wenn DynDNS auch grundsätzlich vom Provider erwünscht ist. Bei Prosite wird man nur zu nem Freeprovider verwiesen auf dessen URL ich dann das WWW verlinken soll. Deswegen hatte ich auch die Idee mit dem eigenen Programm.

    VB 6 hab ich halt rausgesucht weil ich dachte das es am nächsten an VBA dran ist. Ich bin da wie gesagt relativ unerfahren. Fand halt vba recht schlüssig.... und durch die ganzen forenbeiträge bin ich da reltiv schnell reingekommen....

    Ach ja und an nafets3646Den Programmcode habe ich mir zusammengegoogelt ^^und er funktioniert bis da hin eigentlich ganz gut :P
    OK, fang lieber nicht mit VB6 an, das ist Tod und Zerstörung.
    Mit den Gründen dafür kann ich dir die Festplatte dieses Forums hier füllen^^

    Lad dir gleich mal hier:
    go.microsoft.com/?linkid=9832279&clcid=0x407
    Visual Studio 2013 Express runter und installier es.

    Und dann würde ich dir das hier:
    microsoft-press.de/url.asp?cnt=mspress_vb2010
    empfehlen.

    Viele Grüße,
    Manawyrm

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Manawyrm“ ()

    so nachdem ich jetzt die ganze zeit rumprobiert habe und immer noch nicht weiterkomme bin ich wieder auf meinen alten ansatz zurückgekehrt... kann mir da echt keiner helfen? Auch wenns veraltet ist? für meine Zwecke reicht es. Ich komm bloß nicht mit diesem sch*** button weiter -.-

    Gibt es keine Möglichkeit die Grafik zu finden und die anzuklicken? oder Allgemein herauszufinden was passiert wenn man den button klickt? ich bin echt noch am verzweifeln -.-
    Du sagst er hat keine Namen/ID?
    Hmm naja aber irgendwas passiert ja wenn man den drückt... Ne JavaScript Funktion wird zum Beispiel ausgeführt.

    Vielleicht hilft dir ja >das hier< weiter.
    Basiert zwar auf dem WebBrowser-Objekt, was meiner Meinung nach nicht nur gelbes vom Ei ist, aber ist vielleicht n Anfang für dich.
    jetzt muss ich ganz dumm fragen... aber was ist eigentlich der unterschied zwischen vb.net und vb6 ich programier ja schon mit visiual studio 2013 auf .net ebene... der ganze code von oben wird ja über .net kompiliert... in wie weit müsst ich dann anfangen wenn ich nur noch über .net gehen will..??
    Und zu dieser Frage findest du nichts bei Google?
    Ich sag nur, die Entwicklungsumgebung (IDE = Integrated Development Environment), in deinem Fall Visual Sudio 2013 Express, hat nichts damit zu tun.
    Ist auch fernab des eigentlichen Themas.
    Ich empfehle dir herzlichst ein Buch zu lesen, kümmere dich nicht mehr um vb6!
    HI Hate_regex,

    das hab ich inzwischen auch gefunden :) allerdings hab ich das problem das er auf token zugreift die jedesmal neu generiert werden und im Quelltext sitzen. Ich habe den Quelltext jetzt schon in eine textdatei übergeben und versuche mir jetzt eine variable mit den jeweiligen token zu generieren.

    kann mir da jemand helfen? aus einer Textdatei bestimmte werte zu suchen (das Token beginnt immer mit "token" und dann mit einer 9 stelligen zahl) und die dann in eine variable zu geben?

    ich habe jetzt übrigens den ganzen code neu aufgesetzt und arbeite nicht mehr mit der konsole
    der aktuelle Code ist:

    VB.NET-Quellcode

    1. Imports System.Net, System.IO, System.Text.RegularExpressions
    2. Public Class Form1
    3. Private Containa = New CookieContainer
    4. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
    5. Dim myWriter As New StreamWriter("Quelltext.txt",False)
    6. Dim iphe As IPHostEntry = Dns.GetHostEntry("dyndnsaccount-in.familyds.net") 'zum auffinden der aktuellen ip
    7. Me.Text = iphe.AddressList(0).ToString()
    8. WebBrowser1.ScriptErrorsSuppressed = True
    9. WebBrowser1.Navigate("https://www.prosite.de/admin/login")
    10. Application.DoEvents()
    11. While WebBrowser1.ReadyState <> WebBrowserReadyState.Complete
    12. Application.DoEvents()
    13. End While
    14. Me.Text = iphe.AddressList(0).ToString()
    15. WebBrowser1.Document.GetElementById("req").InnerText = "homepage"
    16. WebBrowser1.Document.GetElementById("pass").InnerText = "passwort"
    17. WebBrowser1.Document.GetElementById("goconbut").InvokeMember("Click")
    18. System.Threading.Thread.Sleep(10000)
    19. While WebBrowser1.ReadyState <> WebBrowserReadyState.Complete
    20. Application.DoEvents()
    21. End While
    22. WebBrowser1.Navigate("https://www.prosite.de/Admin/dom_showdomains/show/only/de")
    23. Do While WebBrowser1.ReadyState <> WebBrowserReadyState.Complete
    24. Application.DoEvents()
    25. Loop
    26. System.Threading.Thread.Sleep(3000)
    27. 'Dim R As HttpWebRequest = HttpWebRequest.Create("https://www.prosite.de/Admin/dom_showdomains/show/only/de")
    28. 'R.Method = "POST"
    29. 'R.CookieContainer = Containa
    30. 'R.Host = "www.prosite.de"
    31. 'R.Headers("useragent") = " Mozilla/5.0 (Windows NT 6.3; WOW64; rv:28.0) Gecko/20100101 Firefox/28.0"
    32. 'R.ContentType = "application/x-www-form-urlencoded"
    33. myWriter.WriteLine(WebBrowser1.DocumentText)
    34. myWriter.Close()
    35. End Sub
    36. End Class



    Im moment bin ich noch ziemlich am rumbasteln deswegen is grad auch a bissl was auskommentiert... will den code erst mal net löschen sonst muss ich von vorn anfangen wenn ich ihn doch wieder brauch ^^ (bin mir da ziemlich sicher das ich ihn noch brauch :P)

    wär super wenn ihr mir mit dem textdatei problem helfen könntet :)

    LG