C# WebClient Cloudflare Webseite herunterladen?

1 Antwort

Die Frage, ob etwas möglich ist, kann man beinahe immer mit "Ja" beantworten - auch bei C#.

Du kannst den HTML-Text runterladen, einfach ein GET auf die Website machen.
Wenn diese Seite aber noch andere Dinge (JavaScript, CSS, iframe) nachlädt, findest Du das darin natürlich nicht.
Du kannst aber die entscheidenden Stellen raus suchen und ebenfalls nachladen und einfüggen.

JavaScript ausführen dürfte aber eine andere Hausnummer werden, spätestens da würde ich auf einen Browser zurückgreifen. Das WebBrowser-Control (in WinForms oder WPF) von Microsoft ist ziemlich alt und basiert noch auf dem InternetExplorer, der Nachfolger (WebView2) hat noch so einige Krankheiten und Einschränkungen. Oder Du nutzt die API von einem der anderen Browser.

Aber so oder so wirst Du die Website vermutlich rendern müssen, um garantieren zu können, dass sie auch korrekt geladen wurde. Du könntest versuchen, das Rendern nicht sichtbar zu machen, wie genau das abläuft, hängt dann aber von der jeweiligen API ab. Oder die API bietet tatsächlich eine Möglichkeit an, den fertigen HTML-Text aufzubereiten, das musst Du dann aber in der Doku nachlesen.

Woher ich das weiß:Berufserfahrung – C#.NET Senior Softwareentwickler

Maiki06 
Beitragsersteller
 27.07.2021, 17:16

Danke für deine antwort, aber entweder habe ich das nicht ganz verstanden ode darauf wollte ich nicht ganz raus.

Ich würde die Webseite ja nicht anzeigen wollen sondern nur den HTML Code runterladen um z.B. später nach irgendwelchen Links oder Text die Seite zu durchsuchen.

Jetzt wäre sie aber durch Cloudflare geschützt und überprüft voher mit Hilfe von aufgaben für JavaScript ob sich dort auch wirklich kein Bot sitzt.

Die Webseite wäre also nicht für C# einsehbar. Wie wäre es möglich den Code trotzdem herunterladen. Oder würde dies mit C# gar nicht gehen? Denn die Cloudflare evader im NuGet-Manager haben bei mir als lösung nicht funktioniert. Und obwohl das nur ein experiment ist wäre es einfach schön zu wissen ob un wie das möglich wäre.

0
Palladin007  27.07.2021, 20:46
@Maiki06

Der entgültige HTML-Code steht aber erst wirklich fest, nachdem alles nachgeladen und das JavaScript ausgeführt wurde und das ist möglicherweise nur möglich, wenn Du sie tatsächlich renderst. Ob die Vermutung stimmt, musst Du in der Doku der verwendeten Browser-API nachlesen.

Und nochmal: Beinahe alles ist möglich, erst wenn es um hardwarenahe Programmierung geht, ist C# eingeschränkt, aber selbst Code im Browser ist mit WebAssemblies möglich.
Ob dein Vorhaben möglich ist, hat also nichts mit der Programmiersprache zu tun, sondern mit dem Vorhaben an sich.

Wenn irgendetwas prüft, ob da ein Bot sitzt, musst Du herausfinden, wie das geprüft wird und dem entgegen wirken. Der Browser ist ja auch nur in irgendeiner Programmiersprache entwickelt. Der Browser macht also irgendetwas, dass er nicht wie ein Bot aussieht und das geht mit C# genauso wie mit allen anderen Sprachen auch.

1