Travian 4 Bot C# httpwebrequest

  • Gude Leute ich hätt da mal ein anliegen ich will mir ein kleines Tool zur vereinfachten bedinung von Travian schreiben nur leider bekomme ich das irgendwie nicht auf die Reihe.


    da mein Code nicht so recht funktioniert hat habe ich mir den code von jemand anderes mal geklaut aber der ergibt das gleiche problem.


    dachte da dieser code parr veränderungen hat funktioniert der aber gab genau das selbe ergebniss.


    Das Probleme ist er zeigt die Seite nicht richtig an und er baut keine truppen wenn ich auf Button1 click.


    wenn mir einer das vielleicht mal flicken könnte oder mir erklären könnte wie ich das hinbekomme wäre genial vielen dank schonmal.


    hier der Code:



    [cs]
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Net;
    using System.IO;
    using System.Web;
    using System.Net.Security;
    using System.Reflection;




    namespace WindowsFormsApplication1
    {
    public partial class Form1 : Form
    {
    public Form1()
    {
    InitializeComponent();
    }





    private CookieContainer cookieContainer = new CookieContainer();
    HttpWebRequest request;
    HttpWebResponse response;
    StreamReader sr;



    public string GetHtml(string Url)
    {
    request = (HttpWebRequest)HttpWebRequest.Create(Url);
    request.Referer = "http://ts10.travian.de/dorf1.php";
    request.AllowAutoRedirect = true;
    request.ServicePoint.Expect100Continue = false;
    request.Timeout = 10000;
    request.CookieContainer = cookieContainer;
    request.Method = "GET";
    request.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5";



    response = (HttpWebResponse)request.GetResponse();
    Console.WriteLine();
    sr = new StreamReader(response.GetResponseStream());
    string html = sr.ReadToEnd();
    sr.Close();
    response.Close();


    return html;
    }
    private void Form1_Load(object sender, EventArgs e)
    { }



    private void Loginbutton_Click(object sender, EventArgs e)
    {
    HttpWebResponse res;
    HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create("http://ts10.travian.de/dorf1.php");
    req.AllowAutoRedirect = true;
    req.Method = "POST";
    req.ServicePoint.Expect100Continue = false;
    req.Timeout = 10000;
    req.CookieContainer = cookieContainer;
    req.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3";
    req.ContentType = "application/x-www-form-urlencoded";



    ASCIIEncoding encoding = new ASCIIEncoding();
    byte[] loginDataBytes = encoding.GetBytes("name=xxx&password=xxx=Einloggen&login=1295028699");
    req.ContentLength = loginDataBytes.Length;


    Stream stream = req.GetRequestStream();
    stream.Write(loginDataBytes, 0, loginDataBytes.Length);
    stream.Close();



    res = (HttpWebResponse)req.GetResponse();


    res.Close();
    webBrowser1.DocumentText = GetHtml("http://ts10.travian.de/dorf1.php");


    }


    private void button1_Click(object sender, EventArgs e)
    {
    HttpWebResponse res;
    HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create("http://ts10.travian.de/dorf1.php");
    req.AllowAutoRedirect = true;
    req.Method = "POST";
    req.ServicePoint.Expect100Continue = false;
    req.Timeout = 10000;
    req.CookieContainer = cookieContainer;
    req.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3";
    req.ContentType = "application/x-www-form-urlencoded";



    ASCIIEncoding encoding = new ASCIIEncoding();
    byte[] loginDataBytes = encoding.GetBytes("id=32&a=2&t1=1&t3=0&t4=0&s1=ok");
    req.ContentLength = loginDataBytes.Length;


    Stream stream = req.GetRequestStream();
    stream.Write(loginDataBytes, 0, loginDataBytes.Length);
    stream.Close();



    res = (HttpWebResponse)req.GetResponse();




    webBrowser1.DocumentText = GetHtml("http://ts10.travian.de/build.php?id=32");


    }
    }


    }
    [/cs]


    Es geht um die Travian 4 Beta ^^


    edit by dongdong: Code Tags das nächste mal bitte selbst beifügen ;)
    edit2: AccountDaten in LoginButton1_Click entfernt ^^

  • Code klau ist ja wohl das dämlichste was man machen kann und dann das auch noch öffentlich zu zu geben und um Hilfe zu bitten.

    es geht um testzwecke der code war öffentlich und ist kaum unterschiedlich zu meinem nur in kleinen fällen das ergebniss ist das gleiche was mit meinem passiert.


    Wenn ich das login und das building funktionsfähig hab werde ich sowieso so gut wie alles umschreiben ich will nur herausfinden wie es erst einmal funktioniert.


    Genauso kann jemand zum beispiel codes von mir verwenden wenn ich sie irgendwo veröffentliche es ist doch hilfreich wenn andere Leute was davon lernen oder siehst du das anderster, wenn ich helfen kann helfe ich gerne ich bin niemand der sein wissen nur für sich selbst behält...

  • Öffentlicher Code ist meistens nur zu Lernzwecken veröffentlicht.

    Also ich dachte die sachen die bei dem Code mehr drine sind sind die sachen die bei mir vielleicht dazu führen das mein code mir nur mist im browser zeigt aber nach dem ich den Code genomen habe der nur leichte abweichungen zu meinem hat bin ich auf das gleiche problem gestoßen auserdem wie gesagt geht es hier um meine testform in der ich versuche zu lernen wie das alles funktioniert mit dem httpwebrequest damit ich dies dann in meinem Travian tool einsetzen kann was ich gelernt habe.


    P.S.


    Angemerkt das geklaut oben war von mir nur eine interpretation von ich habe mal zu testzwecken diesen code benutzt...


    den Code findet man bei ElitePVPer im Forum aber da wird einem ja nicht geholfen leider da gibts auch keine antworten.

    2ter post


    mit meinem code habe ich ja auch schon diskutiert in mycsharp aber die finden es nicht angemessen bei game hacks zu helfen ich will einfach nur herausfinden wie ich das hinbekomme mit dem Login das dann alles richtig angezeigt wird zur zeit bekomme ich alles ohne animation etc angezeigt der speichert keine cockies würde ich mal behaupten weil wenn ich was anderes auswähle werde ich wieder rausgeschmießen etc.


    Es wäre halt echt genial wenn da mal ein geübter progrer drüber gucken könnte und mir helfen könnte ich bin erst anfänger in C# und befasse mich noch nicht so lange damit.


    3ter Post


    Zitat von »r4z3r_TECH«


    [cs]public string GetHtml(string Url)
    {
    request = (HttpWebRequest)HttpWebRequest.Create(Url);
    request.Referer = "http://ts10.travian.de/dorf1.php";
    request.AllowAutoRedirect = true;
    request.ServicePoint.Expect100Continue = false;
    request.Timeout = 10000;
    request.CookieContainer = cookieContainer;
    request.Method = "GET";
    request.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5";



    response = (HttpWebResponse)request.GetResponse();
    Console.WriteLine();
    sr = new StreamReader(response.GetResponseStream());
    string html = sr.ReadToEnd();
    sr.Close();
    response.Close();


    return html;
    }


    req.ServicePoint.Expect100Continue = false;
    req.Timeout = 10000;[/cs]
    Auserdem sind das Die einzigen sachen die ich mir aus seinem code geholt habe den rest hatte ich schon von mir selbst so defeniert.



    edit by wamborambo:
    posts zusammengefügt

  • Das heist so in der art würde es funktionieren oder irre ich mich da ?


    [cs]01private void webBrowserLogin_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
    02 {
    03
    04 if (webBrowserLogin.Url.ToString() =="http://www.arcor.de/")
    05 {
    06 foreach (HtmlElement elem inwebBrowserLogin.Document.All)
    07 {
    08
    09 if (elem.Name == "user_name") // Name des HTMLinputs
    10 {
    11 elem.InnerText = "name"; // euer Benutzername
    12 }
    13
    14 if (elem.Name == "password") // Name des HTMLinputs
    15 {
    16 elem.InnerText = "pwd"; // euer Passwort
    17 }
    18
    19 }
    20
    21 foreach (HtmlElement elem inwebBrowserLogin.Document.All)
    22 {
    23
    24 if (elem.GetAttribute("value") == "Login")
    25 {
    26 elem.InvokeMember("Click");
    27 }
    28
    29 }
    30 }
    31 }
    [/cs]


    ich kanns grade leider nicht ausprobieren weil ich nicht an meinem Rechner bin.



    _________________________________________________________________________________________________________________________________
    NEUNEUNEU


    So da ich nix neues hinter diesen Post schreiben darf hier nochmal was ich um 18 uhr geschrieben habe -.-


    So mein Code sieht jetzt wie folgt aus mein problem besteht nun darin das er den Login Button nicht klickt wie bekomm ich das hin ??? kann mir da wer helfen ??? habe gehoft wenn ich jetzt gucke ist eventuell ne antwort da aber da der post ja weg war konnte auch keine antwort da seien *angepisst*



    [cs]using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;


    namespace WindowsFormsApplication1
    {
    public partial class Form1 : Form
    {
    public Form1()
    {
    InitializeComponent();
    }


    private void button1_Click(object sender, EventArgs e)
    {
    {
    webBrowserLogin.Navigate("http://ts10.travian.de/login.php");
    webBrowserLogin.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowserLogin_DocumentCompleted);
    }
    }



    private void webBrowserLogin_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
    {


    if (webBrowserLogin.Url.ToString() == "http://ts10.travian.de/login.php")
    {
    foreach (HtmlElement elem in webBrowserLogin.Document.All)
    {


    if (elem.Name == "name") // Name des HTMLinputs
    {
    elem.InnerText = "######"; // euer Benutzername
    }


    if (elem.Name == "password") // Name des HTMLinputs
    {
    elem.InnerText = "######"; // euer Passwort
    }



    if (elem.GetAttribute("value") == "Einloggen")
    {
    elem.InvokeMember("Click");
    }


    }
    }
    }
    }
    }[/cs]


    ______________________________________________________________________________________________________________________________
    NEUNEUNEUNEU


    Problem gelöst mit dem Login jetzt hänge ich am truppenbau der füllt die felder nicht arg -.-


    _______________________________________________________________________________________________________________________________


    Dieses Problem habe ich auch gelöst jetzt hänge ich an meiner übergabe von form1 in form2 fest wollte jetzt meine Alpha Version start klar machen aber da der mir dann immer mit der Fehler meldung kommt naja muss ich ma gucken wie ich das hinbekomme :


    {"Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt."}

  • hab das schon gestern hinbekommen ^^


    Also der Thread ist auch soweit Fertig kann auch geschlossen werden ^^


    Ich danke hier auch allen hilfreichen Postern und auch denen die es versucht haben zu helfen ^^