tutorials.de Buch-Aktion 05/2012
Seite 1 von 2 12 LetzteLetzte
ERLEDIGT
NEIN
ANTWORTEN
16
ZUGRIFFE
4052
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Lkjhgf Lkijhgfd Lkjhgf Lkijhgfd ist offline Mitglied
    Registriert seit
    Jan 2011
    Beiträge
    19
    Hi,
    wie kann man den source Code einer Seite für die man sich einloggen muss mit C# anzeigen lassen?
    Ein Beispiel wäre super! Danke im Vorraus...
    Geändert von Lkjhgf Lkijhgfd (13.02.11 um 12:58 Uhr)
     

  2. #2
    Avatar von RudolfG
    RudolfG RudolfG ist offline Mitglied Brokat
    Registriert seit
    Jul 2006
    Ort
    Gummersbach (NRW)
    Beiträge
    337
    Hi,

    mit "einer Seite" meinst du bestimmt eine Internetseite, oder?

    Wenn ja dann guck dir mal das WebBrowser Control an.

    Gruß
     
    Technologien
    (Gute) Grundkenntnisse: HTML, CSS
    Fortgeschrittene-Kenntnisse: C++/Qt, C# (WinForms, Webservice), SQL

  3. #3
    Lkjhgf Lkijhgfd Lkjhgf Lkijhgfd ist offline Mitglied
    Registriert seit
    Jan 2011
    Beiträge
    19
    Hi,
    danke für den Tipp.
    habe jetzt folgenden Code der mich eigentlich auf tutorial.de einloggen soll. Leider zeigt er aber nur die Startseite an...

    PHP-Code:
    private void button1_Click(object senderEventArgs e)
    {


    // Cookie for our session
    var cookieContainer = new CookieContainer();

    // Encode post variables
    ASCIIEncoding encoding = new ASCIIEncoding();
    byte[] loginDataBytes encoding.GetBytes("vb_login_username=belaz&vb_login_password=123");

    // Prepare our login HttpWebRequest
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.tutorials.de/login.php");
    request.Method "POST";
    request.ContentType "application/x-www-form-urlencoded";
    request.CookieContainer cookieContainer;
    request.ContentLength loginDataBytes.Length;
    request.MaximumAutomaticRedirections 10;
    request.AllowAutoRedirect true;


    // Write encoded post variable to the stream
    Stream newStream request.GetRequestStream();
    newStream.Write(loginDataBytes0loginDataBytes.Length);
    newStream.Close();

    // Retrieve HttpWebResponse
    HttpWebResponse response = (HttpWebResponse)request.GetResponse();

    // Link the response cookie to the domain
    cookieContainer.Add(new Uri("http://www.tutorials.de/login.php"), response.Cookies);

    // Prepare our navigate HttpWebRequest, and set his cookie.
    HttpWebRequest requestProfile = (HttpWebRequest)WebRequest.Create("http://www.tutorials.de/login.php");
    requestProfile.CookieContainer cookieContainer;

    // Retrieve HttpWebResponse
    HttpWebResponse responseProfile = (HttpWebResponse)requestProfile.GetResponse();

    // Retrieve stream response and read it to end
    Stream st responseProfile.GetResponseStream();

    StreamReader sr = new StreamReader(st);
    webBrowser1.DocumentText sr.ReadToEnd();


     

  4. #4
    Avatar von Nico Graichen
    Nico Graichen Nico Graichen ist offline aka gemballa
    tutorials.de Moderator
    Registriert seit
    Dec 2003
    Ort
    Pulheim (NRW)
    Beiträge
    3.898
    Blog-Einträge
    34
    Man sollte sich das Control anschauen, das man nutzt, dann hätte man folgendes Property gefunden, dass einem helfen könnte: http://msdn.microsoft.com/en-us/libr...avigation.aspx

    Aber schilder uns doch mal bitte genau dein Vorhaben!
     
    Grüße Nico
    ----------------------
    Xing
    ----------------------
    Zitat Zitat von Mark Twain (1835-1910)
    Es gibt drei Dinge, die eine Frau aus dem Nichts hervorzaubern kann: einen Hut, einen Salat und einen Ehekrach.
    Zitat Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
    The Difference Between God and Larry Ellison: God Doesn't Think He's Larry Ellison

  5. #5
    Lkjhgf Lkijhgfd Lkjhgf Lkijhgfd ist offline Mitglied
    Registriert seit
    Jan 2011
    Beiträge
    19
    Die AllowNavigation Property ist doch standartmäßig immer auf true.
    Also am Ende will ich mit dem Programm auf Themen antworten können und private Nachrichten/Posts anzeigen lassen.
     

  6. #6
    Avatar von Alexander Schuc
    Alexander Schuc Alexander Schuc ist offline admin | crazy-weasel
    tutorials.de Administrator
    Registriert seit
    Aug 2001
    Ort
    Österreich, Stmk, Graz
    Beiträge
    2.783
    Hoi!

    Entweder arbeitest du mit dem HttpWebRequest, und übernimmst die gesamte Kommunikation selbst, oder du arbeitest nur mit dem WebControl.

    Geht es dir nur um den Quelltext der Seiten, ist der HttpWebRequest sinnvoller. Wenn du dann damit arbeitest, solltest dir aber auch genau ansehen welche Daten bei einem Login übertragen werden und an welche URL die Übertragung stattfindet.
    Username und Passwort alleine reicht z.b. bei uns nicht aus.

    Dein 2. WebRequest ist übrigens auch nur bedingt sinnvoll. Wenn du eingeloggt bist, und die login.php aufrufst, wirst auch wieder nur in den Forenindex umgeleitet. Ein anderes Ziel wäre da vielleicht besser? (Warum machst überhaupt 2? Um zu testen ob deine Cookies brav gesetzt sind?)

    Hier ein Beispiel wie du dich hier im Forum einloggen kannst, und den Quelltext in eine TextBox ausgibst. (Basierend auf deinem Code.. )

    Aber bedenke bitte, einen Missbrauch unseres Forums durch irgend ein Tool werden wir nicht dulden.

    lg,..

    Code csharp:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    
    // Cookie for our session 
    var cookieContainer = new CookieContainer();
     
    // Encode post variables 
    ASCIIEncoding encoding = new ASCIIEncoding();
    byte[] loginDataBytes = encoding.GetBytes("do=login&securitytoken=guest&s=&vb_login_username=USER&vb_login_password=PWD");
     
    // Prepare our login HttpWebRequest 
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.tutorials.de/login.php?do=login");
    request.Method = "POST";
    request.ContentType = "application/x-www-form-urlencoded";
    request.CookieContainer = cookieContainer;
    request.ContentLength = loginDataBytes.Length;
    request.MaximumAutomaticRedirections = 10;
    request.AllowAutoRedirect = true;
     
     
    // Write encoded post variable to the stream 
    Stream newStream = request.GetRequestStream();
    newStream.Write(loginDataBytes, 0, loginDataBytes.Length);
    newStream.Close();
     
    // Retrieve HttpWebResponse 
    HttpWebResponse response = (HttpWebResponse)request.GetResponse();
     
    using (StreamReader reader = new StreamReader(response.GetResponseStream()))
    {
        textBox1.Text = reader.ReadToEnd();
    }
     
    response.Close();
    Lkjhgf Lkijhgfd bedankt sich. 
    With the first link the chain is forged. The first speech censored, the first thought forbidden, the first freedom denied, chains us all irrevocably.
    Aaron Satie

    Legends... are the spice of the universe, Mr. Data, because they have a way of sometimes coming true.
    Captain Jean-Luc Picard, Stardate ~41294.5

    Tutorials.de chattet. Hier gibts auch .net Support ^^
    Klickt auf chattet und nutzt den Webchat, oder verbindet euch zu irc.tutorials.de - Channel #Tutorials.de

    (moo)blog furred.net // SiteInfo für WP7 // Pastebin für WP7 // BlogEngine.net Extensions

  7. #7
    Lkjhgf Lkijhgfd Lkjhgf Lkijhgfd ist offline Mitglied
    Registriert seit
    Jan 2011
    Beiträge
    19
    Hi,
    danke funktioniert super!! !!
    Wenn ich jetzt auf die selbe Weisse nen Post senden will wie finde ich raus welche Werte ich senden muss (so wie hier do=login&securitytoken=guest)? Muss ich einfach die values aller hidden input forms (securitytoken, loggedinuser, posthash, ...) mit IndexOf/ Substring herausfinden und dann senden?
    Geändert von Lkjhgf Lkijhgfd (20.02.11 um 01:54 Uhr)
     

  8. #8
    Avatar von Alexander Schuc
    Alexander Schuc Alexander Schuc ist offline admin | crazy-weasel
    tutorials.de Administrator
    Registriert seit
    Aug 2001
    Ort
    Österreich, Stmk, Graz
    Beiträge
    2.783
    Ja, kannst aber auch mit Regex z.b. machen..
    Lkjhgf Lkijhgfd bedankt sich. 
    With the first link the chain is forged. The first speech censored, the first thought forbidden, the first freedom denied, chains us all irrevocably.
    Aaron Satie

    Legends... are the spice of the universe, Mr. Data, because they have a way of sometimes coming true.
    Captain Jean-Luc Picard, Stardate ~41294.5

    Tutorials.de chattet. Hier gibts auch .net Support ^^
    Klickt auf chattet und nutzt den Webchat, oder verbindet euch zu irc.tutorials.de - Channel #Tutorials.de

    (moo)blog furred.net // SiteInfo für WP7 // Pastebin für WP7 // BlogEngine.net Extensions

  9. #9
    Lkjhgf Lkijhgfd Lkjhgf Lkijhgfd ist offline Mitglied
    Registriert seit
    Jan 2011
    Beiträge
    19
    Hi irgendwie funktionierts noch nicht bekomme immer den Error "Bytes to be written to the stream exceed the Content-Length bytes size specified." bei "StreamLogIn2.Write"...
    Hier nochmal der Code, sry wenn ich mich so ungeschickt anstelle.


    [...]
    PHP-Code:
    int startIndexsecuritytoken sourceCode.IndexOf("<input type=\"hidden\" name=\"securitytoken\" value=\"") + 49;
    int endIndexsecuritytoken sourceCode.IndexOf("\" />"startIndexsecuritytoken);
    string toDisplaysecuritytoken sourceCode.Substring(startIndexsecuritytokenendIndexsecuritytoken startIndexsecuritytoken);

    richTextBox1.Text toDisplaysecuritytoken;

    int startIndext sourceCode.IndexOf("<input type=\"hidden\" name=\"t\" value=\"") + 37;
    int endIndext sourceCode.IndexOf("\" />"startIndext);
    string toDisplayt sourceCode.Substring(startIndextendIndext startIndext);

    richTextBox2.Text toDisplayt;

    int startIndexp sourceCode.IndexOf("<input type=\"hidden\" name=\"p\" value=\"") + 37;
    int endIndexp sourceCode.IndexOf("\" />"startIndexp);
    string toDisplayp sourceCode.Substring(startIndexpendIndexp startIndexp);

    richTextBox3.Text toDisplayp;

    int startIndexposthash sourceCode.IndexOf("<input type=\"hidden\" name=\"posthash\" value=\"") + 44;
    int endIndexposthash sourceCode.IndexOf("\" />"startIndexposthash);
    string toDisplayposthash sourceCode.Substring(startIndexposthashendIndexposthash startIndexposthash);

    richTextBox4.Text toDisplayposthash;

    int startIndexpoststarttime sourceCode.IndexOf("<input type=\"hidden\" name=\"poststarttime\" value=\"") + 50;
    int endIndexpoststarttime sourceCode.IndexOf("\" />"startIndexpoststarttime);
    string toDisplaypoststarttime sourceCode.Substring(startIndexpoststarttimeendIndexpoststarttime startIndexpoststarttime);

    richTextBox5.Text toDisplaypoststarttime;

    int startIndexloggedinuser sourceCode.IndexOf("<input type=\"hidden\" name=\"loggedinuser\" value=\"") + 48;
    int endIndexloggedinuser sourceCode.IndexOf("\" />"startIndexloggedinuser);
    string toDisplayloggedinuser sourceCode.Substring(startIndexloggedinuserendIndexloggedinuser startIndexloggedinuser); 
    [...]

    PHP-Code:
    string newPost =
         
    "&securitytoken=" toDisplaysecuritytoken +
         
    "&do=" "newreply" +
         
    "&t=" toDisplayt +
         
    "&p=" toDisplayp +
         
    "&specifiedpost=" "0" +
         
    "&posthash=" toDisplayposthash +
         
    "&poststarttime=" toDisplaypoststarttime +
         
    "&loggedinuser=" toDisplayloggedinuser +
         
    "&noquote=" "1" +
         
    "&vB_Editor=" "tztz"
    [...]

    PHP-Code:
    // Encode post variables 
    ASCIIEncoding encoding2 = new ASCIIEncoding();
    byte[] loginDataBytes2 encoding2.GetBytes(newPost);

    // Link the response cookie to the domain 
    //cookieContainer.Add(new Uri("http://www.tutorials.de/newreply.php?p=1929515&noquote=1"), responseLogIn.Cookies); 

    // Prepare our login HttpWebRequest 
    HttpWebRequest requestLogIn2 = (HttpWebRequest)WebRequest.Create("http://www.tutorials.de/newreply.php?p=1929515&noquote=1");
    requestLogIn2.Method "POST";
    requestLogIn2.ContentType "application/x-www-form-urlencoded";
    requestLogIn2.CookieContainer cookieContainer;
    requestLogIn2.ContentLength loginDataBytes.Length;
    //requestLogIn.MaximumAutomaticRedirections = 10;
    //requestLogIn.AllowAutoRedirect = true;

    // Write encoded post variable to the stream 
    Stream StreamLogIn2 requestLogIn2.GetRequestStream();
    StreamLogIn2.Write(loginDataBytes20loginDataBytes2.Length);
    StreamLogIn2.Close();

    // Retrieve HttpWebResponse 
    HttpWebResponse responseLogIn2 = (HttpWebResponse)requestLogIn2.GetResponse(); 
     

  10. #10
    Avatar von Alexander Schuc
    Alexander Schuc Alexander Schuc ist offline admin | crazy-weasel
    tutorials.de Administrator
    Registriert seit
    Aug 2001
    Ort
    Österreich, Stmk, Graz
    Beiträge
    2.783
    In deinem letzten Codesnippet solltest du wohl
    Code csharp:
    1
    
    requestLogIn2.ContentLength = loginDataBytes2.Length;
    verwenden.. (du setzt den ContentLength Wert auf den falschen Wert.. )

    Aber mal eine Frage: willst du wirklich mit deinem Tool in unserem Forum posten, oder was wird das..?
    Lkjhgf Lkijhgfd bedankt sich. 
    With the first link the chain is forged. The first speech censored, the first thought forbidden, the first freedom denied, chains us all irrevocably.
    Aaron Satie

    Legends... are the spice of the universe, Mr. Data, because they have a way of sometimes coming true.
    Captain Jean-Luc Picard, Stardate ~41294.5

    Tutorials.de chattet. Hier gibts auch .net Support ^^
    Klickt auf chattet und nutzt den Webchat, oder verbindet euch zu irc.tutorials.de - Channel #Tutorials.de

    (moo)blog furred.net // SiteInfo für WP7 // Pastebin für WP7 // BlogEngine.net Extensions

  11. #11
    Lkjhgf Lkijhgfd Lkjhgf Lkijhgfd ist offline Mitglied
    Registriert seit
    Jan 2011
    Beiträge
    19
    Ouch,... das behebt zumindest mal den Error aber leider kommt noch kein Post an, ich glaub ich hab den string newPost komplett falsch, kannst du dir das vllt nochmal angucken? Wäre super nett!!
    Zu der Frage: Doch, und später auch in anderen sodass ich so ne Art verbundenes Kontrollzenrum für mehrere Foren hab um nicht alle einzeln checken zu müssen...
     

  12. #12
    Avatar von Alexander Schuc
    Alexander Schuc Alexander Schuc ist offline admin | crazy-weasel
    tutorials.de Administrator
    Registriert seit
    Aug 2001
    Ort
    Österreich, Stmk, Graz
    Beiträge
    2.783
    Der Button den du drückst überträgt auch noch einen Wert..
    Lkjhgf Lkijhgfd bedankt sich. 
    With the first link the chain is forged. The first speech censored, the first thought forbidden, the first freedom denied, chains us all irrevocably.
    Aaron Satie

    Legends... are the spice of the universe, Mr. Data, because they have a way of sometimes coming true.
    Captain Jean-Luc Picard, Stardate ~41294.5

    Tutorials.de chattet. Hier gibts auch .net Support ^^
    Klickt auf chattet und nutzt den Webchat, oder verbindet euch zu irc.tutorials.de - Channel #Tutorials.de

    (moo)blog furred.net // SiteInfo für WP7 // Pastebin für WP7 // BlogEngine.net Extensions

  13. #13
    Lkjhgf Lkijhgfd Lkjhgf Lkijhgfd ist offline Mitglied
    Registriert seit
    Jan 2011
    Beiträge
    19
    Zitat Zitat von Alexander Schuc Beitrag anzeigen
    Der Button den du drückst überträgt auch noch einen Wert..
    Was überträgt man da? den accesskey? Wenn ja einfach mit
    Code :
    1
    
    + "&accesskey=" + "s";
    ? Weil das tut nicht...



    HTML-Code:
    <input type="submit" class="button" name="sbutton" id="vB_Editor_001_save" value="Antworten" accesskey="s" tabindex="1">
    Geändert von Lkjhgf Lkijhgfd (20.02.11 um 22:39 Uhr)
     

  14. #14
    Avatar von Alexander Schuc
    Alexander Schuc Alexander Schuc ist offline admin | crazy-weasel
    tutorials.de Administrator
    Registriert seit
    Aug 2001
    Ort
    Österreich, Stmk, Graz
    Beiträge
    2.783
    Wie bei jedem Input-Feld wäre es "Name=Value" also in dem Beispiel "sbutton=Antworten".. aber scheinbar funktioniert es eh schon..

    Daher jetzt auch noch ein Hinweis: Wir akzeptieren keinen Spam bei uns im Forum.. wenn du also schon so ein Tool bauen willst, wäre es besser wenn du eine eigene vB Installation hättest, mit der du testen kannst.
     
    With the first link the chain is forged. The first speech censored, the first thought forbidden, the first freedom denied, chains us all irrevocably.
    Aaron Satie

    Legends... are the spice of the universe, Mr. Data, because they have a way of sometimes coming true.
    Captain Jean-Luc Picard, Stardate ~41294.5

    Tutorials.de chattet. Hier gibts auch .net Support ^^
    Klickt auf chattet und nutzt den Webchat, oder verbindet euch zu irc.tutorials.de - Channel #Tutorials.de

    (moo)blog furred.net // SiteInfo für WP7 // Pastebin für WP7 // BlogEngine.net Extensions

  15. #15
    Lkjhgf Lkijhgfd Lkjhgf Lkijhgfd ist offline Mitglied
    Registriert seit
    Jan 2011
    Beiträge
    19
    Ne leider noch nicht XD
    Ich hab nur mit chrome "inspect element" versucht herauszufinden ob es auch mit veränderter value noch geht. XD Dachte wenn ichs gleich wieder lösch sieht das gar niemand... mach das inzukunft natürlich in nem anderen vb...
    Also mit dem sbutton=Antworten gehts auch nicht...
     

Ähnliche Themen

  1. Nach Login wieder Login, Treiberfehler ?
    Von Crazy_down im Forum Linux & Unix
    Antworten: 4
    Letzter Beitrag: 11.02.08, 00:09
  2. Antworten: 2
    Letzter Beitrag: 08.10.07, 11:38
  3. Antworten: 2
    Letzter Beitrag: 04.09.07, 23:19
  4. Antworten: 1
    Letzter Beitrag: 29.01.05, 12:11
  5. Antworten: 3
    Letzter Beitrag: 12.01.05, 21:14