§ 01
État des lieux
Pipeline opérationnel — question : qu'est-ce qu'on ajoute ?
Le pipeline de base marche. Run 6 prouve la valeur. La question n'est plus "est-ce que ça marche" mais "comment on scale".
Contexte VibeCraft Agency
Mickael + MehdiBuilds — vente de 1-pages aux TPE/PME plombiers FR. Le skill b2b-web-prospecting-fr (auto-généré par Hermes) pilote le pipeline. Run 6 (25/05/2026) = 11 leads qualifiés, 7 emails extraits, 4 cold drafts prêts, tout logué Notion CRM.
Nouveau aujourd'hui : camofox-browser installé + testé sur M₂. Extraction de 2 pages Notion publiques (50k + 22k chars, contenu complet, sans auth). REST server localhost:9377, lazy launch + idle shutdown, snapshots accessibility-tree (~90% plus léger que HTML). Arrêté maintenant — prêt pour POC PagesJaunes.
Le stack urllib + browser_console MCP suffit pour les artisans TPE dont le site est en clair. La question = que faut-il ajouter pour passer de 11 à 100+ leads/run et débloquer les sources premium (PagesJaunes, Pappers) ?
§ 02
Métriques
Run 6 — stats complètes
25/05/2026 · skill b2b-web-prospecting-fr · département-test
11
leads qualifiés
7
emails extraits
64%
taux extraction email
5
sub-agents ∥
4h11
durée totale
219k
tokens consommés
Outputs 4 cold drafts prêts
CRM Notion · tous loggés
Source SIRENE API + URL patterns
Score 0–10 qualité site
§ 03
Architecture
Pipeline actuel — étape par étape
SIRENE API → URL patterns → score qualité → extraction email DOM → Notion CRM
01
SIRENE API
recherche-entreprises.api.gouv.fr · sans auth · sans Cloudflare · filtres NAF plomberie
02
Génération URL patterns
plomberie-{ville}.fr · plombier-{ville}.fr · ~15 patterns · hit rate ~15%
03
Score qualité site (0–10)
SSL · viewport · tel-link · form · copyright-year · urllib natif
04
Extraction email — DOM JS post-hydration
Python urllib + browser_console MCP · regex sur DOM rendu · 64% success rate run 6
05
Notion CRM logging
Notion API · une entrée par lead · statut, score, email, cold draft attaché
§ 04
Blockers
Sources bloquées — confirmé (IP datacenter)
Ces sources sont inaccessibles depuis une IP datacenter standard. Contournement = stack stealth ou proxy résidentiel.
PagesJaunes
Cloudflare · bot detection agressif
Pappers
Cloudflare + API payante (token requis)
Societe.com
Rate limit strict · ban rapide
Google Search
Captcha / rate limit · HTML inutilisable
Bing / DuckDuckGo
Même profil que Google côté anti-bot
Cylex / 118712
Cloudflare · non prioritaire
Point critique : GeoIP + locale doivent être cohérents. Proxy IP FR + locale en-US = brûlé immédiatement. camofox gère ça nativement (GeoIP auto-locale).
§ 05
Solutions
4 stacks à comparer
Scrapling pour le scale Python-natif · camofox pour les sources premium · Crawl4AI à différer · stack actuelle à conserver pour les artisans TPE.
D4Vinci · Python · BSD-3
Framework complet : Fetcher, StealthyFetcher (CF Turnstile auto-solve), DynamicFetcher (Playwright), FetcherSession. Adaptive selectors, Spider avec concurrence, pause/resume, rotation proxy, cache dev-mode. MCP server inclus.
- Fit-zone
- Scale + Python-natif + déjà dans la stack Mickael
- Effort
- 1 jour POC
- Risque
- Rien face à DataDome/Akamai (sponsor API requis)
- Coût
- Open source · gratuit
jo-inc · JS + Docker · MIT · déjà installé M₂
REST server (port 9377). Firefox patché au niveau C++ (fingerprint spoofing). VNC pour login interactif → réutilisation storage_state. Proxy + GeoIP auto-locale. Snapshots accessibility-tree (~90% plus léger que HTML). 40 MB idle.
- Fit-zone
- Bypass extrême (PagesJaunes, LinkedIn, Amazon FR)
- Effort
- Déjà installé · 30 min POC restant
- Risque
- ¬scale natif (tab-by-tab) · orchestration Python côté client
- Coût
- Open source · gratuit
Python · Apache-2 · LLM-friendly
Crawler LLM-friendly, extraction Markdown native, stealth via undetected-playwright, pipeline RAG-ready. Bon pour crawl en masse + extraction structurée par LLM.
- Fit-zone
- Crawl masse + extraction structurée LLM
- Effort
- 1 jour POC
- Risque
- ¬testé sur CF Turnstile FR · overlap fort avec Scrapling
- Statut
- À différer — pas besoin avant scale >1k leads
urllib + browser_console MCP · déjà en prod
Suffit pour artisans TPE dont le site est en clair. 64% email extraction run 6. Zéro coût, déjà intégré. Limite : ¬peut attaquer PagesJaunes/Pappers, ¬scale au-delà de quelques centaines de leads/run.
- Fit-zone
- TPE artisan · site sans anti-bot lourd
- Effort
- Zéro — déjà en production
- Risque
- Pas adapté aux sources premium
- Limite scale
- Quelques centaines max
§ 06
Matrice comparative
Comparatif 4 stacks
Colonnes : stack, type, stealth, scale, effort, fit-zone
| Stack |
Type |
Stealth CF |
Scale |
Effort |
Fit-zone |
| Scrapling |
Python framework |
CF Turnstile ✓ |
100+ /run |
1 jour |
Artisans TPE → scale |
| camofox-browser |
REST + Firefox C++ |
Extrême ✓ |
Tab-by-tab |
30 min |
PagesJaunes, LinkedIn |
| Crawl4AI |
Python LLM-crawler |
Non testé FR |
Masse |
1 jour |
RAG / >1k leads (futur) |
| Stack actuelle |
urllib + MCP |
Aucun |
~quelques centaines |
0 · en prod |
TPE site en clair |
Note DataDome/Akamai : Aucun outil open source ne passe DataDome ou Akamai de façon fiable. Si PagesJaunes migre vers ces protections, il faudra soit une API sponsor (Scrapling Pro), soit un service tiers.
§ 07
Plan de test
3 semaines · go/no-go scale
Séquence minimale pour valider la stack avant d'engager le scale 1k leads/run.
Semaine 1 · 1–2j
POC Scrapling
- 1 dept FR (50 leads SIRENE)
- Scraping sites artisans
- Comparer taux email vs stack actuelle
- Adaptive selectors + proxy rotation
Semaine 2 · ½j
POC camofox
- PagesJaunes cross-check
- Qualité données vs SIRENE
- GeoIP + proxy FR configuré
- VNC login si nécessaire
Semaine 3
Décision go/no-go
- Go : scale 1k leads/run
- Définir stack prod cible
- Budget proxy résidentiel
- Crawl4AI : différé
§ 08
Décision recommandée
3 axes — la stratégie retenue
Pas de changement pour ce qui marche. Upgrade ciblé. Backup prêt.
01
Garder la stack actuelle pour les artisans TPE
urllib + browser_console MCP — déjà éprouvé, 64% extraction rate run 6. Aucune raison de casser ce qui marche pour les sites sans anti-bot lourd. Continuer les runs SIRENE avec ce stack.
02
Tester Scrapling en priorité — upgrade Python-natif
Objectif : passer de 11 → 100+ leads/run. Adaptive selectors + proxy rotation built-in + CF Turnstile auto-solve. Priorité 1 parce que Python-natif, déjà dans la stack, et couvre 90% du besoin scale.
03
Garder camofox en backup sources premium
PagesJaunes, LinkedIn, Amazon FR pour cross-référence — camofox est le seul outil testé aujourd'hui qui passe Cloudflare de façon fiable. Déjà installé sur M₂, 30 min de POC suffisent pour valider PagesJaunes. ¬priorité avant le POC Scrapling.
¬Crawl4AI maintenant. Overlap fort avec Scrapling, aucun besoin avant scale >1k leads. À reconsidérer en semaine 3 si Scrapling ne passe pas CF Turnstile FR de façon stable.
§ 09
Deep dive
camofox — ce qu'on a validé aujourd'hui
Installé + testé sur M₂. Arrêté maintenant. Prêt pour POC PagesJaunes semaine 2.
Validé ✓
- REST server localhost:9377 opérationnel
- Extraction Notion "Anyone with link" — 50k + 22k chars
- Accessibility-tree snapshot (~90% plus léger que HTML)
- Lazy launch + idle shutdown automatique
- Firefox patché C++ (fingerprint imperceptible)
- GeoIP auto-locale (critique FR)
Non testé / Risques
- PagesJaunes Cloudflare — non encore testé
- Scale natif : tab-by-tab seulement
- 1 process pour tout — goulot d'étranglement
- VNC login interactif requis pour certains sites
- Proxy FR + GeoIP cohérence — à valider en conditions réelles
- Orchestration multi-sessions = à coder côté Python
Port 9377
Mémoire idle 40 MB
Hôte M₂ (roxabitower)
Statut arrêté — prêt à relancer
Licence MIT