Browsergamebot mit C#

10/18/2014 13:22 butter123#1
Moin,

ich möchte einen umfangreicheren Browsergamebot erstellen und bin daher von AutoIt zu c# gewechselt.
Der Bot soll den Internetexplorer steuern, was bei AutoIt sehr einfach geht. Wie geht das bei c#? Ich habe bereits [Only registered and activated users can see links. Click Here To Register...] gefunden. Könnt ihr noch alternativen empfehlen?
(Den Bot auf HTTP Basis zu schreiben ist ausgeschlossen. Es soll über den Internetexplorer laufen.)

gruß
butter
10/18/2014 14:31 Terreox#2
Quote:
Originally Posted by butter123 View Post
(Den Bot auf HTTP Basis zu schreiben ist ausgeschlossen. Es soll über den Internetexplorer laufen.)
Leider benutzen alle Webseiten das HTTP Protokoll.

Naja du hast mindestens 2 Möglichkeiten:
1) Alles per HttpWebRequests zusammenbauen
2) Mit WebControl arbeiten.

Vorteil von 1) ist auf jedenfall, dass du den ganzen Overhead der grafischen Darstellung nicht hast. Je nachdem, was du mit deinem Bot machen willst, könnte das recht viel Performance bringen.
Nachteil von 1) ist, dass es meistens mehr Aufwand mit sich bringt, die ganzen Requests zu bauen bzw. vorher das System zu analysieren (was auf der anderen Seite allerdings auch wieder mehr Wissen bringt).

Vorteil von 2) ist natürlich, dass man für den Benutzer eigentlich keine GUI mehr bauen muss und der Benutzer das gewohnte Bild vor sich hat (wobei dies bei Bots eher zweitrangig ist).

Ich gehe mal davon aus, dass du mit HTTP Basis Punkt 1) meinst, von daher musst du wohl auf das WebControl zurückgreifen.
Solltest du die grafische Darstellung der Seite allerdings nicht unbedingt brauchen, würde ich dir trotzdem Punkt 1) ans Herz legen.
10/18/2014 14:32 warfley#3
[Only registered and activated users can see links. Click Here To Register...]
10/18/2014 14:57 Mostey#4
Quote:
Originally Posted by Terreox View Post
Naja du hast 2 Möglichkeiten:
1) Alles per HttpWebRequests zusammenbauen
2) Mit WebControl arbeiten.
Es gibt wesentlich mehr Möglichkeiten so etwas umzusetzen. WebControl ist nicht die einzige Komponente und HttpWebRequest ist ebenfalls nicht die einzige Klasse die HTTP Requests senden kann.

Quote:
Originally Posted by butter123 View Post
(Den Bot auf HTTP Basis zu schreiben ist ausgeschlossen. Es soll über den Internetexplorer laufen.)
Interessant, wie funktioniert der IE denn? Magie? :confused:

Mir fällt kein Grund ein wieso man hier zu einer unperformanten und unnötigen Lösung greifen muss, wenn man das ganze performancemäßig gut und sauber umsetzen kann. Mag zwar etwas mehr Arbeit sein, wenn man noch nie damit gearbeitet hat, dafür lohnt es sich aber.

Wie auch immer, das Thema hatten wir hier schon so oft, ich würde vorschlagen du probierst mal die Suchfunktion aus. Im Internet gibt es ebenfalls massenweise Ressourcen dazu, das ist ein populäres Thema.
10/18/2014 16:12 butter123#5
Quote:
Originally Posted by butter123 View Post
(Den Bot auf HTTP Basis zu schreiben ist ausgeschlossen. Es soll über den Internetexplorer laufen.)
Damit meine ich die Packets per TCP selber zu senden.

Ich brauche die Performance an der Stelle nicht, daher lohnt sich der Aufwand für mich nicht.

Das über WebBrowser Control zu machen klingt gut.
10/18/2014 18:08 tolio#6
Quote:
Originally Posted by butter123 View Post
Das über WebBrowser Control zu machen klingt gut.
nein klingt es nicht.

die http/webrequest klassen im framework bieten genug abstraktion von einer direkten implementierung via tcp und machen somit die arbeit extrem einfach, schnell und vorallem zuverlässig
gerade wenn du sagst du willst etwas umfangreiches machen kannste nen webbrowser control total in die tonne treten
10/18/2014 20:31 YatoDev#7
[Only registered and activated users can see links. Click Here To Register...]

ich kann dir auch eine kleine api für den internet explorer und flash anbieten. musst die nur decompilen und dir daraus deine eigenen funktionen bauen
10/18/2014 23:49 Terreox#8
Quote:
Originally Posted by Mostey View Post
Es gibt wesentlich mehr Möglichkeiten so etwas umzusetzen.
Danke für den Hinweis, habe das "mindestens" vergessen. Die beiden Methoden sind halt recht gängig, darauf wollte ich hinaus.^^
10/19/2014 11:11 butter123#9
Argumente gegen Packetbot:
1. Ich brauche die Performance nicht.
2. Es ist aufwändiger.
3. Wird leichter entdeckt.
4. Direkte Anzeige ist nützlich.

Punkte dafür:
1. Mehr Kontrolle.
2. Mehr Geschwindigkeit.

Die Steuerung des IE hat in Autoit voll ausreichend funktioniert, warum also nicht auch mit c#?
10/19/2014 11:25 tolio#10
Quote:
Originally Posted by butter123 View Post
2. Es ist aufwändiger.
das ist ein trugschluss, man baut sich einmal ne kleine webrequest klasse oder sogar nur methoden und ab dann ist jeder aufruf nen zuverlässiger einzeiler

Quote:
Originally Posted by butter123 View Post
3. Wird leichter entdeckt.
auch das, die volle kontrolle über header bietet genau das gegenteil

Quote:
Originally Posted by butter123 View Post
4. Direkte Anzeige ist nützlich.
durchaus, du kannst das was du aus dem webrequest als ergebnis bekommst aber einfach im browser anzeigen lassen, sogar der visual studio debugger unterstützt die anzeige von html

Quote:
Originally Posted by butter123 View Post
Die Steuerung des IE hat in Autoit voll ausreichend funktioniert, warum also nicht auch mit c#?
kein gescheites multithreading, keine kapselung von verschiedenen instanzen, kein richtiger proxysupport, wenig kontrolle über die header, implemntierung ist aufwendig da man mit events arbeiten und aufwendig überprüfen muss ob die seite schon fertig geladen wurde und die geschwindigkeit ist um ein vielfaches geringer
10/19/2014 11:34 Requi#11
Quote:
Originally Posted by butter123 View Post
Argumente gegen Packetbot:
1. Ich brauche die Performance nicht.
2. Es ist aufwändiger.
3. Wird leichter entdeckt.
4. Direkte Anzeige ist nützlich.

Punkte dafür:
1. Mehr Kontrolle.
2. Mehr Geschwindigkeit.

Die Steuerung des IE hat in Autoit voll ausreichend funktioniert, warum also nicht auch mit c#?
Du darfst bei C# nicht mehr denken wie bei AutoIt.
Du machst dir alles mit dem WebControl nur schwerer.
10/19/2014 12:13 YatoDev#12
Quote:
Originally Posted by Requi View Post
Du darfst bei C# nicht mehr denken wie bei AutoIt.
Du machst dir alles mit dem WebControl nur schwerer.
hä warum?