Laden...

Login bei WebBrowser-Control wird bei WebRequest nicht berücksichtigt

Erstellt von blutiger_anfänger vor 15 Jahren Letzter Beitrag vor 15 Jahren 1.733 Views
B
blutiger_anfänger Themenstarter:in
293 Beiträge seit 2008
vor 15 Jahren
Login bei WebBrowser-Control wird bei WebRequest nicht berücksichtigt

Hallo liebe myCSharp'ler,
ich habe folgendes Problem.

Ich habe ein WebbrowserElement udn auf Knopfdruck, soll die aktuell im Webbrowser dargestellte Seite mit Hilfe von RegEx' nach Links durchsucht werden.

Das Problem ist, wenn ich eine Seite ansurfe, auf der ich mich einloggen muss und dann nach dem einloggen das aktuelle Dokument durchsuchen lassen will, dann wird zwar die korrekte Seite mit RegEx verstümmelt, jedoch so, als wäre ich nicht eingeloggt.

Sprich wenn ich per HttpWebRequest, das Dokument anfordere, dann wird nicht berücksichtigt das ich eingeloggt bin.

Von daher wollte ich fragen, ob die Möglichkeit besteht über das WebBrowserElement, den Quelltext direkt zu durchsuchen, denn die Logindaten beim HttpWebRequest mitzugeben, hätte dank Captcha nicht soviel Sinn, oder?

Liebe Grüße,
Raffi

p.s.: Falls es hilft; ich arbeite z.Z. mit Visual C# 2005 Express Edition

Hier noch mein Webrequest:

HttpWebRequest httpWebRequest = (HttpWebRequest)HttpWebRequest.Create(this.url);
            WebRequest webRequest = (WebRequest)httpWebRequest;
            WebResponse webResponse = webRequest.GetResponse();
            StreamReader sr = new StreamReader(webResponse.GetResponseStream());
                              
            string s = sr.ReadToEnd();
            this.HTML = s;

Wenn ich nicht hier bin, findest du mich auf code-bude.net.

2.223 Beiträge seit 2005
vor 15 Jahren

Hallo blutiger_anfänger und Herzlich willkommen,

hmm das wird dann wohl etwas schwierig.

da ich nun natürlich nicht genau weiß wie diese seiten abgesichert sind wird es wohl schwierig.

das mit dem anmelden wäre ja nicht das Problem, jedoch das Capture würde dir da natürlich im weg sein.

also kommen mir ganz spontan ein paar mögliche wege ein

1.) die ganze zeit mit dem webbrowser control surfen, kommt vermutlich nicht in frage (das wäre dann ein ein eigener browser)

2.) Session karpern (ob es klappt kommt immer auf die Sicherheitsmechanismen an)

3.) ein c# programm als Proxy implementieren und dieses zwischen dir und deiner Verbindung zum inet zu packen das programm könnte eine bestimmte anzahl von webseiten im cache behalten und zb durch einen click eine bestimmte seite durchsuchen)

oder sogar ne 4 idee) für eines der bekannte browser die funktionalität als plugin erstellen.

weitere möglichkeiten wäre über Api oder (durch misbrauch der uiautomation den browser auszulesesn)

und bestimmt noch weitere,
aber die einzigste Möglichkeit, mit manuellen nachladen wäre nur mit punkt 2 umzusetzten
alle andere können nur auf die vorhandenen webseiten zugreifen.

es sei denn du willst dich mit bilderkennung und sonstigem schnickschnack auseinander setzten

mein favoriet wäre der punkt mit dem proxy, und als tray icon ein context menu in dem die seiten im proxy cache aufgeführt sind und per click durchsucht werden

mfg

B
blutiger_anfänger Themenstarter:in
293 Beiträge seit 2008
vor 15 Jahren

Danke für die vielen Tips. Ich bin mir aber grad nicht sicher, ob es richtig rübergekommen ist was ich will.

Ich sürfe über die Webbrowserkomponente (vom VisualStudio) in meinem Programm das gewünschte Portal von Hand an und logge mich auch von Hand ein.

Es gibt eine bestimmte Seite, nennen wir sie seite.php, die jenachdem ob man eingeloggt ist, oder nicht verschiedene Inhalte anzeigt.

Nun logge ich mich ein und sehe die gewünschten Inhalte. Klappt alles Super. Wenn ich jedoch die angeziegte Seite durchsuchen will, beachtet er beim Webrequest nicht das ich eingeloggt bin. In der Browserkomponente, wird sie jedoch richtig angezeigt - Sprich irgendwie ist die Seite ja korrekt in mein programm geparsed worden.

von daher wäre es interessant zu wissen, ob man über die Webbroserkomponente auch Zugriff auf den Quelltext hat bzw. ob man die aktuell angezeigte Seite, ohne SaveFileDialog temporär speicher könnte, per Streamreader und RegEx dann verarbeiten und danach wieder löschen kann.

Liebe Grüße,
Raffi

Wenn ich nicht hier bin, findest du mich auf code-bude.net.

F
240 Beiträge seit 2006
vor 15 Jahren

Als ich das letzte mal sowas gemacht habe, hab ich mir den HTTP-Request von meinem Browser in Wireshark aufgezeichnet, analysiert und aus den Informationen die ich gewonnen habe, meinen Request gestaltet. Das heipt, die jeweiligen Cookies, die gebraucht wurden, aus dem Antwortstream genommen, und dem CookieContainer des neuen Requests hinzugefügt. Weiß leider nicht mehr im Detail wies geht, aber guck dir einfach mal HttpWebRequest sowie HttpWebResponse an.

B
blutiger_anfänger Themenstarter:in
293 Beiträge seit 2008
vor 15 Jahren

Hat sich erledigt. Manchmal sieht man den Wald vor lauter Bäumen nicht. Hole mir den aktuellen Quelltext jetzt über

webBrowser.DocumentText

vielen lieben Dank nochmals für eure Antworten,
sehr nette Community hier!

liebe Grüße,
Raffi

Wenn ich nicht hier bin, findest du mich auf code-bude.net.