Systemweites Web-Request-Event?

  • C#
  • .NET (FX) 4.5–4.8

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Bluespide.

    Systemweites Web-Request-Event?

    Hallo!

    Ich wollte mal wissen, ob es ein Event-gibt das ausgelöst wird wenn über die "Windows-Internetschnittstelle" eine Verbindung ins Internet aufgebaut wird,
    Und bei dem man dann ggf. auf eine anderer Seite umleiten kann?

    Hätte da jemand eine Idee?

    Grüße
    こんにちわ
    Achte beim stellen von Fragen auf eine genaue Fragestellung, mir passiert das selbst häufig, andere können dir dann nicht so gut helfen.
    Dafür wird es kein Event geben, da Events sich im Normalfall nur innerhalb einer Anwendung aufbauen und empfangen lassen.
    Was du machen müsstest ist einen Dienst erstellen, welcher immer wieder die Netzwerk Aktivität "pollt" (also immer wieder den Status abfrägt).

    Dazu aber noch zwei Fragen:

    LuaX schrieb:

    Windows-Internetschnittstelle
    Was ist für dich eine Windows Internetschnittstelle? Kann sein, dass du darunter was anderes verstehst, als ich. Ich denke jedoch du meinst die aktuell verwendete Netzwerkschnittstelle (also die LAN Karte bei kabelgebundenem Internet, das WLAN Interface bei kabel-losem Netzwerkzugriff.

    LuaX schrieb:

    Und bei dem man dann ggf. auf eine anderer Seite umleiten kann?
    Was willst du damit bezwecken? Soll bei Aufruf von https://www.google.de der Benutzer auf https://www.vb-paradise.de umgeleitet werden? Dann kann ich dir die hosts Datei empfehlen.
    Dir muss aber klar sein, dass sich diese Modifikation lediglich auf den Browser auswirkt. Den Server direkt (also die IP) per Ping anrufen willst, klappt das nicht mehr, da sich die Datei auf das DNS Protokoll auswirkt und nich auf die ICMP Anfragen.

    LuaX schrieb:

    eine Verbindung ins Internet aufgebaut wird,
    Definiere bitte!

    Wie jedoch deiner Frage zu entnehmen ist, glaube ich, Du solltest dich ein wenig intensiver mit den Netzwerkprotokollen auseinander setzen.

    Lg Radinator
    In general (across programming languages), a pointer is a number that represents a physical location in memory. A nullpointer is (almost always) one that points to 0, and is widely recognized as "not pointing to anything". Since systems have different amounts of supported memory, it doesn't always take the same number of bytes to hold that number, so we call a "native size integer" one that can hold a pointer on any particular system. - Sam Harwell
    @Radinator

    Ja Netzwerkprogrammierung is nicht so meins:

    Windows Internetschnittstelle:
    Ja vlt. Etwas schlecht definiert :/ Was ich damit meine ist die Technik die z.B. IE und Chrome nutzen um ins Internet zu gehen. Firefox bringt ja soviel ich weis eine eigene Schnittstelle mit.

    Umleiten: Ja ich möchte z.B. von google auf vb-paradise unleiten. Manche Virenscanner zumbeispiel leiten bei gefährlichen Seiten ja automatisch um. Wie wäre das Realisierbar? Eh ja mit einem Dienst :)

    Grüße
    こんにちわ
    Achte beim stellen von Fragen auf eine genaue Fragestellung, mir passiert das selbst häufig, andere können dir dann nicht so gut helfen.

    LuaX schrieb:

    Ja Netzwerkprogrammierung is nicht so meins:
    Das ist schlecht...

    LuaX schrieb:

    die Technik die z.B. IE und Chrome nutzen um ins Internet zu gehen
    Da das ganze "Wie ein Browser ins Internet geht" ein wenig komplizierter ist, fasse ich das nur mal so grob zusammen:
    1.) Der Benutzer gibt in seinem Browser die URL https://www.google.de ein.
    2.) Der Browser (egal ib IE/Edge, Chrome Firefox oder welcher auch immer), frägt einen sogenannten DNS Server, welche IP zur Domain google.de passt
    3.) Falls es keinen Eintrag gibt, zeigt dir der Browser (mehr oder weniger) deutlich an, dass es diese Seite nicht gibt (die berühmte Error 404 Fehlermeldung). Wenn es allerdings einen Eintrag gibt, schickt der Browser eine Anfrage an den Server (bei google halt 172.217.21.99)
    4.) Der Google Server wiederum beantworte diese Anfrage mit dem HTML Inhalt der Seite, die du bekommst, wenn du die Seite im Browser aufrufst.
    5.) Der Browser rendert mithilfe seiner Render-Engine das HTML und zeigt es dir an.
    6.) Anschließend folgt die Kommunikation/Interaktion zwischen User und der Seite mit Browser als Vermittler

    Wie gesagt: Das hier ist nur ein kleiner Abriss von einem rieseigen Themengebiet. Ich hab hier zum einen den TCP Handshake außer Acht gelassen, sowie die diverse weiter wichtige Punkte (Verschlüsselung wegen HTTPS, TCP re-sending bei Paketverlust, assemblierung der Netzwerkpackete, wie das Verschicken der Netzwerkpackete genau funktioniert, ...)

    LuaX schrieb:

    Firefox bringt ja soviel ich weis eine eigene Schnittstelle mit.
    ?????

    LuaX schrieb:

    Manche Virenscanner zumbeispiel leiten bei gefährlichen Seiten ja automatisch um.
    Ist mir zwar nicht bekannt, dass das irgendein Browser tut (kann sein, dass das über ein Browser Plugin funzt)

    LuaX schrieb:

    Wie wäre das Realisierbar?
    Du müsstest den Browser "fremd steuern". Also von deinem Programm aus gewisse API Funktionen (von denen ich nicht weiß, ob es soche gibt) aufrufen, welche dann den aktuellen Ladevorgang abbrechen und erneut mit der gewünschten Seite erneut ausführen.
    Oder du klinkst dich in die Netzwerk Kommunikation zwischen Browser und dem Anfrage Host ein. Das dürfte allerdings ein wenig schwer werden, da Google (in meinem Beispiel ja HTTPS verwendet -> also eine verschlüsselte Verbindung). Du müsstest einen Treiber/Systemdienst schreiben, welches sich zwischen Netzwerkschnittstelle und dem Browser klinkt, auf Netzwerkanforderungen lauschen und die Pakete entspechend manipulieren.

    Um es in einem Satz zusammen zu fassen: Lass es lieber sein!
    Aber damit du mich richtig verstehst: Es geht mir nicht darum, dich in irgendeiner Weise runter zu machen, ich denke lediglich, dass das eine zu schwere Aufgabe für dich ist. So eine Umleitung wird wie gesagt entweder über ein Browser Plugin oder über Eingreifen in die Netzwerkkommunikation realisiert. Und an sowas sitzen Programmierer von großen Antivieren Software Herstellern. Da bezweifle ich, dass Du das alleine besser oder auch nur genau so hinbekommst, wie die es tun. Geschweige denn der Tatsache, dass ich nicht glaube, dass sowas von deinem AV Programm zugelassen wird.

    Abschließend noch eine Frage von mir: Für was in aller Welt willst du das realisieren? Soll das eine Art Kindersicherung werden?

    Lg Radinator
    In general (across programming languages), a pointer is a number that represents a physical location in memory. A nullpointer is (almost always) one that points to 0, and is widely recognized as "not pointing to anything". Since systems have different amounts of supported memory, it doesn't always take the same number of bytes to hold that number, so we call a "native size integer" one that can hold a pointer on any particular system. - Sam Harwell

    Radinator schrieb:

    Du müsstest den Browser "fremd steuern".

    Nicht ganz, ich denke was er meint ist eher ein Proxy bzw. Netzwerk-Treiber. In der Regel benutzen die Browser den Systemproxy, also wenn du dir in .Net einen eigenen schreibst, dann könntest du den gesamten Traffic der Browser umleiten und dann damit machen was du willst. Ist aber nicht so einfach. How to create a simple proxy in C#?
    Wenn es dir allgemein um alle Verbindungen ins Netz geht müsstest du schon einen Treiber benutzen. Den in .Net zu schreiben ist aber so gut wie unmöglich, da müsstest du z.B einen Wrapper wie Pcap.Net für WinPcap benutzen.

    //Edit: @Radinator Ups, Treiber hast du ja geschreiben, sry.