Appearance
Versuch Flask HTTP
HTTP ist die Grundlage für das World Wide Web so wie wir es heute kennen. Es basiert hierbei auf TCP und liefert einen Container für Web Content.
HTTP Server mit Python und Flask
Es existieren zahlreiche Frameworks für HTTP Server Applikationen.
- Apache Webserver mit PHP
- NodeJS mit expressjs
- Python mit Flask oder Django
- Java mit Spring / Springboot
- Ruby mit Ruby on Rails
- golang mit verschienen Frameworks
Flask Webserver
Das Python Framework Flask erlaubt das erstellen eines Webservers in wenigen Zeilen Code.
- Installieren Sie die Flask Libraries auf dem Targetbash
sudo apt install python3-flask
- Verwenden Sie für diesen Versuch Visual Studio Code und erstellen Sie ein neues File
httpd.py
.
py
from flask import Flask
app = Flask(__name__, static_url_path='/static')
@app.route('/')
def index():
return app.send_static_file("index.html")
@app.route('/main.js')
def js():
return app.send_static_file("main.js")
if __name__ == "__main__":
app.run(debug=True, port=12345, host="0.0.0.0")
- Erstellen Sie einen Ordner
static
mit einem Fileindex.html
undmain.js
. - Beginnen Sie in VS Code mit dem tippen von
html
im Fileindex.html
und wählen Sie mitCTRL + Space
die Optionhtml:5
. MitTab
springen Sie durch die Einträge. - Setzen Sie einen Titel und fügen Sie dem Body einen
<h1>
Tag hinzu mit dem Namen Ihrer Seite. - In
main.js
fügen Sie eine Zeile hinzuconsole.log("hello world!")
- Binden Sie
main.js
via script tag ein. Tippen Siescript
und verwenden SieCTRL Space
für autocomplete.
Flask Tutorial
Ein Tutorial zu Flask finden Sie hier: http://flask.pocoo.org/docs/1.0/quickstart/.
Starten Sie den Flask Server mit
python3 httpd.py
HTTP Client
Webbrowser (Chrome, Firefox, IE, Opera, Safari, etc.)
- Starten Sie Chrome und besuchen Sie die Webseite.
- In Chrome, öffnen Sie debug Console mit
F12
und gehen Sie zum TabNetwork
. - Laden Sie die Seite nun mit
F5
neu. Was für Requests sehen Sie? - Wo finden Sie den output vom Javascript File?
curl - console based http client
- Verwenden Sie auf dem Target den
curl
command um die Webseite aufzurufen. - Fügen Sie nun
curl
die Flags-vvv
hinzu. Was sehen Sie zusätzlich?
wget - download web resources
Auf dem Target könne Sie Webseiten via wget
herunterladen (Falls wget
nicht vorhanden ist, installieren Sie dieses nach).
Führen Sie wget
aus um die erstellte HTML Seite in einem File zu speichern.
Dynamische Informationen
Mit dem Flask Webserver stehen Ihnen alle Mittel von Python zur Verfügung. Erstellen Sie einen Endpoint, welcher netstat -ntel
ausliest und diese Information als Webseite ausgibt.
POST Requests
Defaultmässig werden im Webbrowser GET
Requests ausgeführt. Bei diesen Requests trägt der Body von HTTP keine Daten. Möchten Sie Daten an den Webserver senden, können Sie dies mit POST
Requests erreichen.
- Erstellen Sie im Webserver einen Endpoint für einen POST request
- Senden Sie via CURL ein
base64
encodetesGIF
https://media0.giphy.com/media/t7MWRoExDRF72/giphy.gif?cid=790b76115ce51ce853466479360d6873&rid=giphy.gif und speichern Sie dieses als File. - Betten Sie das File in der
index.html
Webseite ein.