Announcement

Collapse
No announcement yet.

IP auf http oder https prüfen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • IP auf http oder https prüfen

    Hallo!

    Ich würde gerne eine IP prüfen ob diese eine Webseite über http oder https ausgibt. Ich habe dazu auch was gefunden:
    Wie übergebe ich die IP mithilfe von diesen bool an eine if Abfrage?

  • #2
    Überhaupt nicht, da diese Methode zur Klasse HTTPRequest gehört

    https://stackoverflow.com/questions/...tps-in-c-sharp
    Christian

    Comment


    • #3
      Komme trotzdem leider nicht auf eine Lösung. Gibt es ein Code Beispiel?

      Comment


      • #4
        Das würde ich machen
        you have to use webclient and make a request to http and check if it is http or https with Request.IsSecureConnection
        Mit einem Webclient eine GET-Verbindung aufbauen, dann o.a. Methode nutzen
        Vorher mit dem UriBuilder die IP in eine URI umwandeln

        https://stackoverflow.com/questions/...d-uri/42139908
        Christian

        Comment


        • #5
          Ich habe jetzt mehrer verschiedene Varianten versucht und mich mit Methoden nochmal tiefer befasst, aber ich verstehe es immer noch nicht ganz. Wie führe ich den diese spezielle Methode aus? Mein Code bisher:

          [highlight=c#]

          var builder = new UriBuilder("192.168.0.1");
          var uri = builder.Uri;

          HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(uri);
          request.Method = "GET";


          [/highlight]

          Comment


          • #6
            https://dotnetfiddle.net/WzAzET
            Christian

            Comment


            • #7
              Gefühlt bist du in einer Sackgasse. Ein Webserver sagt dir nicht einfach was er kann wenn du seine IP kennst.

              Dein letzter Code zum Beispiel wird einfach einen connect versuchen auf "http://192.168.0.1:80" weil http der default ist und 80 der default port für http.
              Wenn du jetzt IsSecureConnection am Request abfragst (wenn es denn möglich wäre) dann würdest du als Ergebnis "false" bekommen du hast dich ja entschieden eine http Anfrage zu machen.
              IsSecureConnection Abfragen macht Sinn auf der Server Seite. Wenn man als Webserver am eingehend Request rausfinden möchte ob der Client jetzt http oder https spricht wenn man als Server gerade beides zuläßt.

              Wenn du von einem Client aus die Fähigkeiten eines Servers rausfinden willst müßtest du die üblichen Möglichkeiten durchprobieren und die Responses checken. Es gibt keinen allgemeinen Standard für die Frage "Webserver was kannst du alles".
              Also
              connect per http,
              connect per https,
              http oder https auf anderen Ports (niemand ist gezwungen bestimmten Ports zu verwenden). Auf anderen Ports könnte sogar gleich ein anderer Webserver sein der was völlig anderes macht etc,
              alle anderen Möglichkeiten die du eventuell auch wissen willst.

              Übrigens ein call per http(s) nur auf die IP wenn du da ein 404 (Not Found) zurückbekommst heißt noch lange nicht das da nix ist. Du kennst einfach nur die passende Route jenseits der IP nicht. Oft ist da eine Index.html die geöffnet wird wenn man keine Route angibt die dann automatisch geöffnet wird (und es werden noch ein paar andere Standardfiles probiert je nach Webserver). Ein Webserver ist aber nicht gezwungen an den Standardstellen irgendwas zu liefern. Oder anders wenn "http://192.168.0.1" nicht funktioniert kann "http://192.168.0.1/meine/liebe/webseite/index.html" trotzdem funktionieren.

              Comment


              • #8
                Janein, Webserver die HTTPS können senden einen HTTP-Request weiter (können so konfiguriert sein). Insofern kann ein Connect über HTTP durchaus dann Auskunft geben, ob HTTPS vorlag
                Christian

                Comment


                • #9
                  Hm okay. Ich habe jetzt einen anderen Lösungansatz. Ich baue einfach eine TCP Verbindung zu Port 80 und 443 auf. Je nachdem von wo was zurückkommt, liefert mir zumindest einen Hinweis. Soweit reicht es eigentlich für meine Zwecke.

                  Trotzdem würde mich zum besseren Verständnis interessieren wie ich diese Klasse bzw. die Methode korrekt in einen Code einbaue. Würde mich über einen Tipp freuen wie sowas ungefähr ausschauen muss.

                  Comment


                  • #10
                    Wie schon gesagt für IsSecureConnection gibt es auf der Client Seite keinen sinnvollen Einsatzzweck das ist für die Serverseite gedacht.

                    Auf dem Client solltest du den HttpClient verwenden. Auch wenn HttpWebRequest noch geht ist das eine technische Sackgasse.
                    Du entscheidest ob du http oder https sprichst nicht der Server. Das transparente forwarden das Christian anspricht ist in .Net weitestgehend ausgeschaltet da gefährlich. Denn es könnte genausogut ein downgrade von https auf http sein. Das will man nicht das das einfach so transparent passiert.

                    Wenn du irgendwie wissen willst was da genau passiert dann nimm einen HttpClient und schalte bei dem Auto Redirect explizit aus (explizit weil sich da der default über die verschiedenen Framework Versionen geändert hat.
                    Etwa

                    Code:
                    var httpClient = new HttpClient(new HttpClientHandler
                    {
                        AllowAutoRedirect = false
                    });
                    var response = await httpClient.GetAsync("meineLiebeUriMitProtokol");
                    
                    if (response.IsSuccessStatusCode)
                      // alles toll
                    else
                    switch(response.StatusCode)
                    {
                        case HttpStatusCode.Found: // 302 das was man sucht wurde woanders gefunden (also ein forwarding)
                          // auswerten des Location header wohin man gelenkt wird und ob sich dabei auch das Protokol ändert.
                        break:
                        // andere responses die dich interessieren könnten
                    }


                    Comment

                    Working...
                    X