Entwickler-Ecke
ASP.NET und Web - Weiterleitungen im Quelltext realisieren?
BlackMatrix - So 07.02.10 13:58
Titel: Weiterleitungen im Quelltext realisieren?
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 :(
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; } |
BlackMatrix - 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:
http://www.mycsharp.de/wbb2/thread.php?threadid=81321
aufrufe
dann wird auch
http://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.
BlackMatrix - So 07.02.10 16:26
Weiß nicht so recht was die Eigenschaft tut, jedenfalls habe ich es mal ausgetestet:
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
http://www.mycsharp.de/wbb2/thread.php?threadid=81321
leider jedoch nicht
http://www.mycsharp.de/wbb2/myminicity.php
Christian S. - 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.
jaenicke - 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 - 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:
C#-Quelltext
1:
| Webbrowser.Navigate(Uri, null, null, "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.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!