URLs in einem Post auslesen

Ich kann mit folgendem C#-Code den Quellcode von einer Webseite auslesen.
Code:
string userAgent = "Mozilla/5.0";
            string url = "http://www.hackerboard.de/thread.php?threadid=1479";
            HttpWebRequest httpWebRequest = (HttpWebRequest)HttpWebRequest.Create(url);
            httpWebRequest.UserAgent = userAgent;
            WebRequest webRequest = (WebRequest)httpWebRequest;
            WebResponse webResponse = webRequest.GetResponse();
            StreamReader sr = new StreamReader(webResponse.GetResponseStream());
            string html = sr.ReadToEnd();
Jetzt hab ich aber das Problem, dass das nicht in allen Foren funktinoniert,da man sich einloggen muss, um den Inhalt der Posts zu sehen.
Es gibt Programme mit denen das geht ohne sich irgendwie einloggen zu müssen.
Wie geht das? Oder wie kann ich an den Inhalt der Posts kommen?
Kann ich mich irgendwie einloggen und dann die richtige URL aufmachen?

Gruß
schmitti81
 
ich denke mal, das hat ja einen grund, dass man sich einloggen muss, also wäre es nicht rechtens, wenn man den schutz umgeht.
wenn du einen login hast, musst du doch nur den request zum einloggen senden und dann deine auslese-bimmelei ausführen.

wie genau kann ich dir leider nicht sagen, bin nicht so der web-fritze ;)
 
Hallo,
Du must dich, wie bereits erwähnt, erst einloggen. Da ein aktuelles Forum den Login-Vorgang meist über einen POST Request abhandelt, must du also so einen nachbauen.

-->Ich kann dir hierfür (GNU) wget empfehlen. cmdline tool

_____________________
Das läuft dann recht simpel;

Den html source des Forums untersuchen, das Login-Form genauer betrachten und dann die variabeln und werte ähnlich dem GET Verfahren übergeben. Dann sieht ein aufruf von wget etwa so aus: (ist nicht ganz korrekt, wie findest du aber mit der help schnell raus.)
wget -post "user=IsNull&pass=nana" www.hackerboard.de/login.php
 
wget gibts genau so für windows. ich nutze es mit AHK unter windows. ein commandline tool kannst du ja mit c problemlos ansprechen...
 
Ich habe etwas derartiges bereits programmiert. Es hat Informationen von der Seite abgerufen, verarbeitet und aufgrund desser sich "intelligent" fortge"crawlt". Dabei musste das Programm auch eine Authentifizierung auf dem Server vorweisen; das habe ich aber jedoch nicht durch einen simulierten Login realisiert, sondern ich habe einfach die Authentifizierungsdaten vom Browser übergeben. Aber dann musst du dich zunächst informieren, wie der Server einen eingloggten User erkennt (bei meinem speziellen Fall nur per einem Cookie). Und da du das Programm offensichtlich für unterschiedliche Foren verwenden wirst, würde ich die Vorgehensweise meines Programms eh nicht empfehlen ;-)

Aber auch die Loginprozedur ist bei jedem Forum/jeder Forensoftware (denke ich) anders (input-Felder der Daten haben unterschiedliche Namen etc.) also wird dein Vorhaben IMHO ein problemtechnisch interessantes Unterfangen :-)

Nur eine kleine Anmerkung von mir :^) Viel Erfolg!
 
Danke für deinen Hinweis.
Denk ich mir auch grad, dass das wohl nicht so einfach ist.
Bin für jeden Tipp dankbar.

Gruß
schmitti81
 
Vergiss wget. Ein extra Programm für sowas aufzurufen ist typisch und ok in Unix oder Linux, aber schlechter Stil und unnötig kompliziert in Windows. Dein HttpWebRequest kann auch Posts senden, hier ist ein Beispiel.

Was du dannach tun musst ist dir die Cookies merken die du bekommst und bei jedem Request mitsenden.

Yo,

Fozi.
 
Hm, kannst du mir vielleicht zeigen, wie das für das Forum hier gehen würde.
Wie meinst du das mit den Cookies, wie kann ich mir die merken.

Danke schonmal für deine/eure Hilfe.

Gruß
schmitti81
 
Fürs habo sollte es ungefähr so aussehen:
Code:
CookieContainer cookieContainer = new CookieContainer();
cookieContainer.Add(new Cookie("hackerboard_de_cookiehash","xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx")); 
cookieContainer.Add(new Cookie("hackerboard_de_userid","2226")); 
cookieContainer.Add(new Cookie("hackerboard_de_userpassword","xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx")); 
...
webRequest.CookieContainer = cookieContainer;
 
Original von Fozi
Vergiss wget. Ein extra Programm für sowas aufzurufen ist typisch und ok in Unix oder Linux, aber schlechter Stil und unnötig kompliziert in Windows. Dein HttpWebRequest kann auch Posts senden, hier ist ein Beispiel.

Was du dannach tun musst ist dir die Cookies merken die du bekommst und bei jedem Request mitsenden.

Yo,

Fozi.
Hängt natürlich davon ab, in welcher Sprache man progt. Da ich vorallem in der AHK (Skriptsprache) code, welche solche aktionen nur mühsam durch winsock dll calls unterstützt benutze ich gerne solche cmd tools. :)
 
Zurück
Oben