C# und Ogame

08/28/2010 14:39 elementskate#1
Hallo,

und zwar hab ich folgendes Problem:

Ich möchte mich mit dem WebBrowser in Visual C# in Ogame einloggen, d.h ich hab in meinem Programm Textboxen wo ich meine Daten eingebe und das Programm navigiert dann über den Webbrowser auf Ogame.
Danach klickt es auf Login mit:

webBrowser1.Document.GetElementById("loginBtn").In vokeMember("click");

Gibt die daten ein:

webBrowser1.Document.GetElementById("usernameLogin ").SetAttribute("value", textBox1.Text);


webBrowser1.Document.GetElementById("passwordLogin ").SetAttribute("value", textBox2.Text);

Danach noch den Server:

webBrowser1.Document.GetElementById("serverLogin") .SetAttribute("value", "uni70.ogame.de");

Und klickt dann auf Einloggen:

webBrowser1.Document.GetElementById("loginSubmit") .InvokeMember("click");


So das Problem ist nun das dort dann steht " Falscher Benutzername oder Passwort" obwohl es garantiert die richtigen Daten sind!
Ich hab auch schon viel versucht und bin draufgekommen, dass wenn ich nachdem er die Daten "eingegeben" hat und ich per maus einen anderen Server wähle und dann wieder meinen Server, dann klappts!

Hat einer eine Ahnung was ich machen muss, damit sich das Programm auch selber einloggt??
08/28/2010 20:49 Noisuf-X#2
Also ich würde es sowieso eher als HttpRequest machen
08/28/2010 23:36 Madd Eye#3
ich würde das mit einem Package machen

schmeiß einfach mal nen Sniffer an und schaut ob du das so hinbekommst
[Only registered and activated users can see links. Click Here To Register...] ein Tut leider mit AutoIT sollte aber kein Problem sein es umzuschreiben
08/28/2010 23:54 Noisuf-X#4
Quote:
Originally Posted by Madd Eye View Post
ich würde das mit einem Package machen

schmeiß einfach mal nen Sniffer an und schaut ob du das so hinbekommst
[Only registered and activated users can see links. Click Here To Register...] ein Tut leider mit AutoIT sollte aber kein Problem sein es umzuschreiben
das ist ein httprequest;) dein "Package"
08/29/2010 00:18 Madd Eye#5
HttpRequest kann aber auch mehr bedeuten nicht direkt Pachages ^^
Deshalb ein wenig genauer gesagt xD aber hast recht
08/29/2010 00:29 Noisuf-X#6
Quote:
Originally Posted by Madd Eye View Post
HttpRequest kann aber auch mehr bedeuten nicht direkt Pachages ^^
Deshalb ein wenig genauer gesagt xD aber hast recht
es ist genau anderst rum
Httprequest ist alles was über das http protokoll läuft
packages => deu. Pakete nutzen auch andere Protokolle FTP etc...
08/29/2010 09:17 elementskate#7
Also ihr meint mit Live HTTP headers?

Hmm ich werds mal versuchen und dann berichten, aber jetzt schon mal danke!

Edit: Ok, ich habs anders hinbekommen!

Trotzdem Danke!

Edit2:
Ok ich hab ein neues Problem!
Diesmal möchte ich den Quelltext der Seite downloaden( oder gleich durchsuchen wenns geht) und nach etwas bestimmten durchsuchen lassen, da sich dieser Wert bei jeder Sitzung ändert!
Ich hoffe das geht.

mfg elementskate
08/30/2010 17:31 Noisuf-X#8
Um große Text sicher und zudurchsuchen, wirst du nicht um Regex drum rum kommen, vorallen bei Webseiten ist es hervorragend ich spreche da auch Erfahrung.
Bloß immer wenn ich in dem Forum das Thema ansprechen, wollen die meisten zwar nichts von wissen, weil es ein sehr komplexes Thema und man es nicht in 5 mins versteht.
Was mich wundert da Regex eigentlich vorallen in der Hacking-Scene, ein sehr wichtiges Tool ist.
Wenn man aber Regex anwenden kann dann ist es das mächtigste Tool um Texte zu parsen.

Regulärer Ausdruck ? Wikipedia

***8364;: ich selber benutze Regex auch hauptsächlich um Webseiten nach dem für mich wichtigen Content zu durchsuchen zb eine EMail-Adressen etc...
08/30/2010 21:52 Madd Eye#9
[Only registered and activated users can see links. Click Here To Register...] ein Tut das zeigt wie man mit C# einen HTML Code Parsed
ist vllt simpler als RegEx
08/31/2010 07:58 Noisuf-X#10
Quote:
Originally Posted by Madd Eye View Post
[Only registered and activated users can see links. Click Here To Register...] ein Tut das zeigt wie man mit C# einen HTML Code Parsed
ist vllt simpler als RegEx
:awesome: genau der Fall den ich meine, wenn du dir die Klassen mal angeguckt hast die er da gepostet hat, siehst du das sie zwar Funktionieren aber nicht Fehlerfrei, du kannst dir nicht sicher sein ob genau das raus kommt was du willst.
ICh weiss nicht warum es so schwer ist sich mal eine Technik anzueigenen, mit der man immer solchen Problemen aus den Weg gehen kann, nein da werden immer schlechte zwischen Lösungen gesucht.
Sich nur anhand von Tags etc durch den Code zuhangeln halt ich für eine sehr Schlechte Idee, dann wird die Seite mal geupdatet und du kannst garnichts mehr machen, erst wenn das Programm geupdatet ist kann man wieder was machen.
08/31/2010 12:11 elementskate#11
Und wie schaffe ich es nun RegEx auf einer Website im Quelltext suchen zu lassen??
08/31/2010 15:00 Madd Eye#12
Naja ich bringe immer so leichte Code Beispiele weil hier z.B. ziemlich deutlich wird das er noch zu den Anfängern oder Höchsten zu den Fortgeschrittenen Anfängern gehört
08/31/2010 15:21 elementskate#13
Ich denke ich bin ein fortgeschrittener Anfänger und ein Code Beispiel wäre hilfreich!

Eigentlich brauch ich ja nur den quelltext in nem string speichern und dann durchsuchen oder?

Aber das funktioniert bei Ogame nicht:

Code:
WebClient webClient = new WebClient();
string html = webClient.DownloadString(baun);
(baun is bei mir die URL)

Gibts noch andere Möglichkeiten?
08/31/2010 15:52 Noisuf-X#14
Quote:
Originally Posted by Madd Eye View Post
Naja ich bringe immer so leichte Code Beispiele weil hier z.B. ziemlich deutlich wird das er noch zu den Anfängern oder Höchsten zu den Fortgeschrittenen Anfängern gehört
so ein quatsch warum erst jemanden mist beibringen, bevor er das richtige lernen kann


@TE ließ was Regex ist dir kann hier keiner Code posten wenn er nichtmal den Wert kennt den du suchst, Regex ist kein grober mist
Man brauch schon genaue Anhalstpunkte sonst kann man keine Beispiele posten

€: für URIs ist der sehr geil

Quote:
^(?#Protocol)(?:(?:ht|f)tp(?:s?)\:\/\/|~\/|\/)?(?#Username:Password)(?:\w+:\w+@)?(?#Subdomains) (?:(?:[-\w]+\.)+(?#TopLevel Domains)(?:com|org|net|gov|mil|biz|info|mobi|name| aero|jobs|museum|travel|[a-z]{2}))(?#Port)(?::[\d]{1,5})?(?#Directories)(?:(?:(?:\/(?:[-\w~!$+|.,=]|%[a-f\d]{2})+)+|\/)+|\?|#)?(?#Query)(?:(?:\?(?:[-\w~!$+|.,*:]|%[a-f\d{2}])+=?(?:[-\w~!$+|.,*:=]|%[a-f\d]{2})*)(?:&(?:[-\w~!$+|.,*:]|%[a-f\d{2}])+=?(?:[-\w~!$+|.,*:=]|%[a-f\d]{2})*)*)*(?#Anchor)(?:#(?:[-\w~!$+|.,*:=]|%[a-f\d]{2})*)?$
08/31/2010 15:54 Madd Eye#15
Code:
using System.Text.RegularExpressions;
using System;

class Reader
{

	public MatchCollection read(String Quellcode, String tagID)
	{
		Regex rgx = new Regex("^<div[^>]id=\""+tagID+"\"[^>]>(*.?)<\/div>$/");
		MatchCollection trefferliste = rgx.Matches(Quellcode);
		return trefferliste;
	}
}
Kann sein das der Code nicht 100% funktioniert bin mit C# nicht ganz so vertraut xD