Forráskód Böngészése

CLAUDE.md: Python-urllib krijgt 403 van Cloudflare, stuur een UA mee

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
bob 14 órája
szülő
commit
7fdcf47752
1 módosított fájl, 23 hozzáadás és 0 törlés
  1. 23 0
      CLAUDE.md

+ 23 - 0
CLAUDE.md

@@ -4563,6 +4563,29 @@ van vandaag die al begonnen zijn ten onrechte als "toekomstig" — die worden
 namelijk correct door het `>= -2 hours`-filter weggelaten. Dat gaf een telling
 van 10 in plaats van 7.
 
+**⚠️ Stuur bij élke `curl`/Python-meting tegen productie een normale User-Agent
+mee — `Python-urllib` wordt door Cloudflare geblokkeerd met een 403.** Gevonden
+2026-09-19, en het kost je een half uur verwarring want het lijkt op een
+kapot endpoint: alle zeven app-endpoints gaven ineens 403, terwijl `curl` op
+dezelfde URL gewoon 200 gaf. Gemeten per User-Agent:
+
+| User-Agent | status |
+|---|---|
+| `Python-urllib/3.11` | **403** |
+| `Dart/3.9 (dart:io)` (wat de app stuurt) | 200 |
+| `curl/8.5.0`, geen UA, een browser-UA | 200 |
+
+**De app wordt dus niet geraakt** — Dart's UA komt schoon door. In Python:
+```python
+r = urllib.request.Request(url, headers={'User-Agent': 'Dart/3.9 (dart:io)'})
+json.load(urllib.request.urlopen(r, timeout=90))
+```
+
+**Nog een reden om dit te weten:** `plaatsen.json` en de views-endpoints zitten in
+Cloudflare Cache Rules. Een meting met de ene UA kan een cache-entry vullen die
+een andere UA nooit te zien krijgt; vergelijk dus nooit twee metingen met
+verschillende clients zonder dat mee te wegen.
+
 **Bij het testen of een views-endpoint een filter-parameter accepteert:
 stuur altijd óók een verzonnen parameter mee als controle.** Drupal Views
 negeert onbekende query-parameters **stil** — zonder die controle bewijst