Te veel verzoeken: zelf twintig verzoeken
Hier bouw je op verder: De for-loop
Weet je dit niet meer zeker? Lees het terug voordat je verdergaat.
- Python De for-loop
In les 2 mat je één verzoek. Nu stuur je er twintig achter elkaar naar je eigen server, en tel je hoeveel er antwoord krijgen.
Twintig verzoeken
Start je server met fastapi dev main.py, met het endpoint uit les 1. Maak een
bestand test_verzoeken.py:
import httpx
adres = "http://127.0.0.1:8000/"
gelukt = 0
for nummer in range(20):
antwoord = httpx.get(adres)
print(f"Verzoek {nummer + 1}: status {antwoord.status_code}")
if antwoord.status_code == 200:
gelukt += 1
print(f"Gelukt: {gelukt} van de 20")
- Regel 3:
Alleen je eigen server, zoals in les 1.
- Regel 5:
gelukttelt hoeveel verzoeken antwoord 200 krijgen. - Regel 6-10:
De for-loop stuurt twintig keer hetzelfde
GET-verzoek. Elke keer dat het lukt, gaat de teller één omhoog.
Draai het in een tweede terminal:
python test_verzoeken.py
Dit is de zwakheid
Twintig verzoeken zijn niets voor je server. Maar elk verzoek krijgt
antwoord, hoe vaak het ook komt en van wie. Er is niets in je
server dat zegt "zo is het wel genoeg". Zet in gedachten range(20) op
range(20000), en laat dat door duizend computers tegelijk doen: zo ziet een
aanval eruit. Wat zo'n aanval is, zie je in les 4, en in
les 5 zet je er een grens op.
Er gaat iets mis
Gelukt: 0 van de 20
Elke regel zegt status 404, en aan het eind staat Gelukt: 0 van de 20.
Oorzaak: het adres klopt niet, bijvoorbeeld omdat er een pad als /test
in adres staat terwijl je server alleen / kent.
Oplossing: open http://127.0.0.1:8000/ in je browser. Zie je daar
Hallo wereld!, zet dan precies dat adres in adres.
ConnectError
Het script stopt meteen met een httpx.ConnectError.
Oorzaak: je server draait niet, zoals in les 2.
Oplossing: start je server in de eerste terminal met fastapi dev main.py,
en draai het script opnieuw.
Opdrachten
Opdracht 1: Predict - Vijftig keer
Je verandert range(20) in range(50) en draait het script opnieuw.
Vraag: hoeveel verzoeken lukken er, en ligt je server daarna plat?
Tip
Er is nog niets dat je server laat weigeren. Kijk ook goed naar de laatste
print.
Antwoord
Alle vijftig lukken. De laatste regel is:
Gelukt: 50 van de 20
Het getal 20 staat vast in de laatste print. Pas je dat aan naar 50, dan
staat er Gelukt: 50 van de 50. Je server ligt niet plat: open na het script
http://127.0.0.1:8000/, en je krijgt meteen antwoord. Of dat ook zo is terwijl
het script nog loopt, probeer je in les 4.
Door naar les 4: DoS en DDoS.