-
12.02.11 20:12 #1
- 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)
-
14.02.11 09:01 #2
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
-
14.02.11 22:04 #3
- 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 sender, EventArgs 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(loginDataBytes, 0, loginDataBytes.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();
}
-
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 von Mark Twain (1835-1910)
Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
-
18.02.11 14:24 #5
- 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.
-
19.02.11 16:15 #6
- 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();
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
-
20.02.11 01:48 #7
- 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)
-
20.02.11 14:33 #8
- Registriert seit
- Aug 2001
- Ort
- Österreich, Stmk, Graz
- Beiträge
- 2.783
Ja, kannst aber auch mit Regex z.b. machen..
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
-
20.02.11 21:55 #9
- 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(startIndexsecuritytoken, endIndexsecuritytoken - startIndexsecuritytoken);
richTextBox1.Text = toDisplaysecuritytoken;
int startIndext = sourceCode.IndexOf("<input type=\"hidden\" name=\"t\" value=\"") + 37;
int endIndext = sourceCode.IndexOf("\" />", startIndext);
string toDisplayt = sourceCode.Substring(startIndext, endIndext - startIndext);
richTextBox2.Text = toDisplayt;
int startIndexp = sourceCode.IndexOf("<input type=\"hidden\" name=\"p\" value=\"") + 37;
int endIndexp = sourceCode.IndexOf("\" />", startIndexp);
string toDisplayp = sourceCode.Substring(startIndexp, endIndexp - startIndexp);
richTextBox3.Text = toDisplayp;
int startIndexposthash = sourceCode.IndexOf("<input type=\"hidden\" name=\"posthash\" value=\"") + 44;
int endIndexposthash = sourceCode.IndexOf("\" />", startIndexposthash);
string toDisplayposthash = sourceCode.Substring(startIndexposthash, endIndexposthash - startIndexposthash);
richTextBox4.Text = toDisplayposthash;
int startIndexpoststarttime = sourceCode.IndexOf("<input type=\"hidden\" name=\"poststarttime\" value=\"") + 50;
int endIndexpoststarttime = sourceCode.IndexOf("\" />", startIndexpoststarttime);
string toDisplaypoststarttime = sourceCode.Substring(startIndexpoststarttime, endIndexpoststarttime - startIndexpoststarttime);
richTextBox5.Text = toDisplaypoststarttime;
int startIndexloggedinuser = sourceCode.IndexOf("<input type=\"hidden\" name=\"loggedinuser\" value=\"") + 48;
int endIndexloggedinuser = sourceCode.IndexOf("\" />", startIndexloggedinuser);
string toDisplayloggedinuser = sourceCode.Substring(startIndexloggedinuser, endIndexloggedinuser - 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(loginDataBytes2, 0, loginDataBytes2.Length);
StreamLogIn2.Close();
// Retrieve HttpWebResponse
HttpWebResponse responseLogIn2 = (HttpWebResponse)requestLogIn2.GetResponse();
-
20.02.11 22:01 #10
- Registriert seit
- Aug 2001
- Ort
- Österreich, Stmk, Graz
- Beiträge
- 2.783
In deinem letzten Codesnippet solltest du wohl
verwenden.. (du setzt den ContentLength Wert auf den falschen Wert..Code csharp:1
requestLogIn2.ContentLength = loginDataBytes2.Length;
)
Aber mal eine Frage: willst du wirklich mit deinem Tool in unserem Forum posten, oder was wird das..?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
-
20.02.11 22:11 #11
- 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...
-
20.02.11 22:18 #12
- Registriert seit
- Aug 2001
- Ort
- Österreich, Stmk, Graz
- Beiträge
- 2.783
Der Button den du drückst überträgt auch noch einen Wert..
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
-
20.02.11 22:32 #13
- Registriert seit
- Jan 2011
- Beiträge
- 19
Geändert von Lkjhgf Lkijhgfd (20.02.11 um 22:39 Uhr)
-
20.02.11 22:43 #14
- 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
-
20.02.11 22:54 #15
- 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
-
Nach Login wieder Login, Treiberfehler ?
Von Crazy_down im Forum Linux & UnixAntworten: 4Letzter Beitrag: 11.02.08, 00:09 -
Problem bei Eigenem Login Bereich zu Typo3 Login bereich
Von Gunah im Forum PHPAntworten: 2Letzter Beitrag: 08.10.07, 11:38 -
Seite weiterleiten mit Login-Daten -> automatisches Login
Von tinella im Forum PHPAntworten: 2Letzter Beitrag: 04.09.07, 23:19 -
Login Daten per Cookie speichern und automatisch bei erneutem login aufüllen
Von melistik im Forum PHPAntworten: 1Letzter Beitrag: 29.01.05, 12:11 -
Session Fehler im Login Script, login klappt nur bei gelöschten Sessions
Von melistik im Forum PHPAntworten: 3Letzter Beitrag: 12.01.05, 21:14



4Danke

Zitieren



Login





