Anleitung: Webserver mit Python erstellen | Teil 2

    • Neu
    • Offizieller Beitrag

    Im Letzten Beitrag ging es darum, wie man einen einfachen Webserver in Python selber Programmiert. Diesen wollen wir heute mit einem Login System erweitern und anschließend dafür sorgen, dass unser Webserver auch öffentlich, also nicht nur aus dem lokalen Netzwerk erreichbar ist.

    Unser Bisheriges Python Programm sieht so aus:


    Ein Login auf der Website soll dann wie folgt ablaufen können:

    • Client ruft die Website auf.
    • Server erkennt, dass der Client keinen "Authorization-Header" mitgesendet hat und Antwortet dem Client, dass ein Login erforderlich ist.
    • Client zeigt dem Benutzer ein Login Fenster an, die meisten bekannten Browser besitzen eine entsprechende Funktion.
    • Client startet erneute Anfrage, diesmal mit "Authorization-Header".
    • Sind der Benutzername und das Password, dass im Header enthalten ist korrekt, sendet der Server unsere Website an den Client. Ansonsten wird erneut damit geantwortet, dass ein Login erforderlich ist und der Browser das Login Fenster erneut öffnen muss.

    Um diesen Plan umzusetzen müssen wir die Funktion, die die Serveranfragen bearbeitet ein wenig verändern. Es muss bei jeder Anfrage geprüft werden, ob der "Authorization-Header" vorhanden ist und wenn ja, ob er mit dem richtigen Benutzername und Password Paar übereinstimmt. Dies kann wie Folg geschehen:

    Um zu überprüfen, dass die Zugangsdaten, die der Benutzer eingegeben hat korrekt sind, müssen diese miteinander verglichen werden. Dazu Hashen wir den richtigen Benutzername und Password, wir wandeln es also in eine Zeichenfolge um, damit wir es mit den vom Client gesendeten Daten überprüfen können und feststellen können, ob der Benutzer Zugriff hat. Unser Finaler Code sollte jetzt so aussehen:

    Wir haben es jetzt also geschafft, das der Inhalt unserer Website nur einsichtbar ist, wenn man die dazugehörigen Zugangsdaten hat. In den meisten Fällen möchte man aber, dass die Website von überall aus verfügbar ist. Zum Beispiel um von Außerhalb Funktionen zuhause auszuführen, oder Sensorwerte auch von woanders auslesen zu können. Denkbar wäre auch, einen privaten Chat zu programmieren oder ähnliches.


    Damit man den Webserver öffentlich zugänglich machen kann brauch man Folgendes:

    - Internetanschluss

    - Zugriff auf Router

    - Die Möglichkeit Portweiterleitungen am Router zu erstellen


    Das was wir erreichen wollen möchten ist, dass alle Anfragen, die an unseren Internetanschluss, also an unsere öffenliche ip addresse gestellt wurden und an einen bestimmten Port anliegen, an den PC, auf dem das Python programm läuft weitergeleitet werden. Dazu haben die meisten Router in Ihrem jeweiligen Steuerungspanel eine Funktion solche Portweiterleitungen zu erstellen. Wir möchten, dass Alle anfragen, die von außen auf dem Port 80 kommen an unseren Computer an den 9000 weitergeleitet werden, unter dem das Python programm lauscht. Wie das genau geht, hängt von dem Router ab, hier eine Anleitung für die FritzBox. Fritzbox: Portweiterleitung aktivieren - so geht's - CHIP


    Ist das erledigt können wir das Python Programm erneut starten. Wir suchen unsere aktuelle öffentliche Ip addresse heraus, zum Beispiel indem wir ein Tool von mirosoft benuzen: what is my ip - Suchen (bing.com) Nun können wir die IP addresse im Browser öffnen und unsere Seite erscheint. Dies sollte von überall auf der Welt aus funktionieren! 😊


    Nun gibt es noch ein allerletztes Problem, das es zu beheben geht. Wenn man dies nicht explizit mitbestellt hat, weißen die meisten Betreiber von Internetanschluss Ihren Kunden alle paar Tage eine neue, andere öffentliche ip addresse zu. Dies ist in unserem Fall unpraktisch, da die Seite so ständig die Addresse wechselt, unter der sie erreichbar ist auch ist die Zahlenkollone nicht gerade leicht zu merken. Aber auch hierfür gibt es eine Lösung. Sogenante DyeDNS Anbieter können eine immer gleich bleibende Addresse zur verfügung stellen, die immer auf die aktuelle IP zeigt. Zuerst erstellt man dafür einen Account, zum Beispiel bei https://www.noip.com/ Diesen Account verlinkt man dann in den Router Einstellungen, sodass unser Router dem Anbieter immer die aktuelle Ip addresse mitteilt und die von uns gewählte addresse immer auf die aktuelle IP zeigt.


    Nun haben wir also einen eigenen selbst Programmierten Webserver, der öffentlich unter einer bestimmten Addresse erreichbar ist. Was für ein Projekt sie jetzt damit umsetzen ist Ihnen überlassen, an Möglichkeiten mangelt es hier nicht. 😊


    An dieser Stelle bedanke ich mich fürs lesen und würde mich freuen, Feedback zu bekommen.


    Gegebenenfalls werde ich weitere Beiträge und Ideen zum Thema veröffentlichen. 😊





Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!