Autor Beitrag
BlackMatrix
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 243
Erhaltene Danke: 1



BeitragVerfasst: So 07.02.10 13:58 
Hi.

Kann man Quelltextweiterleitungen mit wenig Code realisieren?

Ich möchte gerne, dass mein Programm beim Aufrufen einer Webseite, die selben Weiterleitungen aufruft wie es z.B. mein Firefoxbrowser tut würde.


Wenn ich z.B. Google.de aufrufe, dann ruft mein Firefox Google.de auf (was meine Funktion auch tätigt, wenn ich gethtml mit Google aufrufe).


Dann ruft mein Firefox noch "http://clients1.google.de/generate_204" auf. Das soll nun auch mein Programm tun, indem es die URL, die im Quelltext von Google.de versteckt ist, wieder in die Funktion gethtml schmeißt.


Ich hatte das ganze schon einmal mit Regex und einem rekursiven Weiterleitungsansatz probiert, jedoch ist mein Programm dann bei manchen Seiten aus dem Ruder gelaufen.


Dann habe ich mich bereits über einen HTML Parser informiert, aber ich möchte nur ungern 1000 Zeilen Code in mein kleines Projekt einfügen. Oder habe ich bisher nur noch nicht das richtige gefunden, gibt so einen auch mit weniger Code?


Kann mir jemand sagen, ob man das mit <50 Zeilen Code hinbekommt und wenn ja wie ist der Ansatz? Vielleicht war mein Regex nicht ausgefeilt genug?

MfG Bunnychecker


P.S: Habe es bereits in einem anderem Forum gepostet, jedoch keine Antwort bekommen :(


ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
       private static string gethtml(string url)
        {
            HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
            request.CookieContainer = cookiecontainer;
            request.UserAgent = useragent;
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            StreamReader sr = new StreamReader(response.GetResponseStream());
            string html = sr.ReadToEnd();
            return html;
        }
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: So 07.02.10 14:54 
Du meinst das hier? Dann wirst du wohl nicht an den Link kommen, solange du nicht den kompletten JS-Code der Seite interpretierst.
Ich stelle mir aber vor allem eine Frage: Warum willst du diesem Link folgen?

user profile iconBlackMatrix hat folgendes geschrieben Zum zitierten Posting springen:
P.S: Habe es bereits in einem anderem Forum gepostet, jedoch keine Antwort bekommen :(
Wäre trotzdem nett, wenn du nächstes Mal verlinkst - vielleicht kommen dort doch noch Antworten hinzu :) .

_________________
>λ=
BlackMatrix Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 243
Erhaltene Danke: 1



BeitragVerfasst: So 07.02.10 15:41 
stimmt, hatte ich vergessen zu verlinken ;)

Google war nur ein Beispiel, wahrscheinlich ein zu schweres. Javascript soll mein Programm nicht interpretieren, mein Programm soll nur ein wenig browserrealistischer in Sachen Weiterleitung werden

Wenn ich z.B:

www.mycsharp.de/wbb2...d.php?threadid=81321

aufrufe

dann wird auch

www.mycsharp.de/wbb2/myminicity.php

aufgerufen.

Und nun soll mein Programm beide URLs aufrufen, ohne das ich expliziet die URL selber nochmal der Funktion übergebe.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19272
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 07.02.10 16:08 
Ich habe es zwar nie ausprobiert, aber in der Doku ist mir eben direkt die Eigenschaft AllowAutoRedirect entgegengesprungen...
msdn.microsoft.com/d...lowautoredirect.aspx
BlackMatrix Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 243
Erhaltene Danke: 1



BeitragVerfasst: So 07.02.10 16:26 
Weiß nicht so recht was die Eigenschaft tut, jedenfalls habe ich es mal ausgetestet:
ausblenden C#-Quelltext
1:
2:
3:
4:
            HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create("http://www.mycsharp.de/wbb2/thread.php?threadid=81321");
            myHttpWebRequest.MaximumAutomaticRedirections = 1;
            myHttpWebRequest.AllowAutoRedirect = true;
            HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();


ruft nur
www.mycsharp.de/wbb2...d.php?threadid=81321
leider jedoch nicht
www.mycsharp.de/wbb2/myminicity.php
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: So 07.02.10 16:31 
Wo soll denn da eine Weiterleitung sein? :lupe:

Übrigens spricht AllowAutoRedirect laut Doku nur auf Redirects im HTTP-Header an, nicht im HTML-Quelltext.

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19272
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 07.02.10 16:32 
Ach jetzt habe ich da erst nachgeschaut was du da meinst... :autsch:

Was haben denn IFrames mit Weiterleitungen zu tun? Das sind eingebettete Inhalte in der aufgerufenen. Und dass die nicht automatisch abgerufen werden, wenn du den Quelltext der einen Seite aufrufst, ist klar.

Da gibt es die Möglichkeit das WebBrowser Control zu benutzen, das automatisch die kompletten Inhalte der Seite herunterlädt. Ist zwar ein wenig aufgebläht, weil es eigentlich ein visuelles Control ist, aber es kann auch Skripte usw. ausführen.
BlackMatrix Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 243
Erhaltene Danke: 1



BeitragVerfasst: So 07.02.10 17:04 
Das war dann ein falscher Sprachgebrauch von mir.

Ich habe mit Weiterleitungen die aufgerufenen Seiten gemeint.

Ich habe das ganze mit Live HTTP Header aufgenommen, daher wusste ich, welche Seiten aufgerufen werden.

An die Möglichkeit mit dem WebbrowserControl hatte ich auch schon gedacht, zwar das Control nutzen, aber das ganze gar nicht anzeigen lassen, jedenfalls habe ich es aber nie hinbekommen, meinen Cookieheader direkt mitzugeben, obwohl die Möglichkeit direkt angebot wird:

ausblenden C#-Quelltext
1:
Webbrowser.Navigate(Uri, nullnull"User-Agent: abc Cookie: abc)					


Und zu aufgebläht war mir das ganze auch, weswegen ich wieder versucht habe über Regex das Ganze zu lösen.