Écriture de sélection câblée (PUT cart) + auth par cookie storage_state

Découvert via attache CDP au vrai Chrome (contourne le blocage automation) :
- set_selection = PUT /gw/v1/carts/{week}, body {meals:[{index,quantity}], extras:[]}
  sélection par index de course, params (customer/subscription/sku/cutoff) dérivés
  dynamiquement de /subscriptions + /deliveries (aucun id en dur)
- Recipe.course_index conservé depuis le menu pour le mapping id->index
- get_editable_weeks via /deliveries (modèle Delivery: cutoff, status, editable)
- Token lu depuis le cookie apiV2Auth (storage_state) -> auth sans navigateur, headless OK
- hf_confirm_selection: garde-fou coco + dry_run; tool attach_capture.py ajouté
- Dry-run validé: requête identique à l'appel réel capturé
This commit is contained in:
2026-06-15 22:57:36 +02:00
parent 30b950ec41
commit 051ecb50d8
9 changed files with 388 additions and 69 deletions

View File

@@ -1,5 +1,5 @@
{
"_comment": "Endpoints HelloFresh FR confirmés via discovery + tests (2026-06). L'API interne gw/ peut changer ; rejouer tools/discover_api.py si besoin. set_selection reste à découvrir sur un compte avec abonnement actif.",
"_comment": "Endpoints HelloFresh FR confirmés via discovery + tests (2026-06). API interne gw/ non publique, peut changer. Écriture = PUT du 'cart' hebdo, sélection par index de course.",
"base": "https://www.hellofresh.fr/gw",
"country": "FR",
"locale": "fr-FR",
@@ -7,6 +7,8 @@
"menu": "https://www.hellofresh.fr/gw/menus-service/menus",
"recipe_details": "https://www.hellofresh.fr/gw/recipes/recipes",
"weeks": "https://www.hellofresh.fr/gw/api/customers/me/deliveries",
"set_selection": "",
"set_selection_method": "PUT"
"subscriptions": "https://www.hellofresh.fr/gw/api/customers/me/subscriptions",
"set_selection": "https://www.hellofresh.fr/gw/v1/carts/{week}",
"set_selection_method": "PUT",
"selection_preference": "quick"
}