Files
stream-control/tools/stream-capture/README.md
jeanotx32 da9025fbf1
Some checks failed
release / build (push) Successful in 16s
release / verify-windows (push) Failing after 1m0s
test : stream cap
2026-08-11 19:34:55 +02:00

3.6 KiB

Stream Capture — banc d'essai

Copie les segments média que ton Firefox, connecté à ton compte, télécharge déjà. L'extension ne redemande rien à la plateforme : elle lit le flux de réponse au passage et le réécrit aussitôt vers la page.

Objectif : répondre à une question factuelle avant d'investir dans l'intégration — les octets reçus sont-ils du média directement exploitable ?

Marche à suivre

1. Lancer le récepteur

Sur la VM, depuis ce dossier :

node receiver.mjs

Il écoute sur 127.0.0.1:8099 et crée un dossier de session sous ./captures/.

2. Charger l'extension dans Firefox

  1. about:debugging#/runtime/this-firefox
  2. Charger un module temporaire…
  3. Sélectionner le fichier manifest.json de ce dossier

L'extension reste active jusqu'à la fermeture de Firefox. Un compteur apparaît sur son icône à mesure que les segments sont copiés (en rouge si le récepteur ne répond pas).

3. Lancer la lecture

Ouvre le profil du streamer dans un onglet, connecté à ton compte, et laisse jouer 30 secondes. Le récepteur affiche les segments au fil de l'eau.

4. Obtenir le verdict

Ctrl-C dans le terminal du récepteur. Il assemble ce qu'il a reçu et analyse :

  Manifeste réel   : oui          ← le direct, pas la boucle publicitaire
  Leurre publicitaire détecté : non
  Tags MOUFLON     : présents

  ✓ ffprobe lit le fichier — les segments sont du média exploitable :
      format_name=mov,mp4,m4a
      codec_type=video / codec_name=h264 / 1920x1080

ffprobe est requis pour le verdict : sudo apt install ffmpeg.

Interpréter le résultat

Sortie Signification
✓ ffprobe lit le fichier Les segments sont du fMP4 standard. La capture directe est viable, l'intégration à l'application a du sens
✗ ffprobe ne reconnaît pas Soit l'assemblage est incomplet (init manquant), soit les segments subissent une transformation côté lecteur
Leurre publicitaire : oui La session n'a pas servi le direct — vérifie que tu es bien connecté dans cet onglet
Rien n'a été capturé Extension non chargée, ou lecture jamais démarrée

Dans le second cas, envoie-moi la sortie complète. Si les segments sont transformés par le lecteur, écrire l'inverse de cette transformation reviendrait à contourner une mesure de protection, et je m'arrêterai là — mais la distinction se fait sur ce verdict, pas sur une supposition.

Ce que fait exactement l'extension

requête initiée par la page
        │
        ├──► filterResponseData : on lit les octets qui arrivent
        │         │
        │         ├──► filter.write(...)  → la page reçoit son flux, inchangé
        │         └──► POST 127.0.0.1:8099 → copie locale
        │
        └──► lecture normale, aucune requête supplémentaire vers la plateforme

Elle n'observe que *.doppiocdn.com (le CDN média), n'envoie rien ailleurs qu'en 127.0.0.1, et n'a aucune permission de lecture de page ni de cookies.

Limites de ce banc d'essai

  • Aucune intégration à l'application : ni bouton, ni dossier de destination configurable, ni découpage par session d'enregistrement. C'est délibéré — on valide la faisabilité avant de construire la plomberie.
  • L'assemblage concatène init puis les segments dans l'ordre d'arrivée. Si plusieurs qualités sont téléchargées en parallèle, le fichier mélangera les pistes : force une seule qualité dans le lecteur pour le test.
  • L'extension étant chargée en temporaire, elle disparaît au redémarrage de Firefox.