Expliqué
Un navigateur sans interface graphique est un navigateur normal (Chrome, Firefox, WebKit) qui s'exécute sans fenêtre visible, exposant une API programmatique pour la navigation, l'interaction avec le DOM et le rendu. Il exécute JavaScript, applique CSS, gère les cookies et se comporte de manière indiscernable d'un navigateur ordinaire -- la seule différence est qu'il n'y a pas de fenêtre d'interface utilisateur ni de saisie humaine.
Pour le scraping, les navigateurs sans interface graphique sont nécessaires chaque fois que les données souhaitées sont rendues côté client par JavaScript. Les applications web modernes (React, Vue, Angular SPA) renvoient souvent une coquille HTML vide qui est remplie après l'exécution du JS ; un client HTTP simple comme `requests` ou `axios` ne verrait que la coquille vide. Un navigateur sans interface graphique exécute le cycle de vie complet de la page et vous donne le DOM entièrement rendu.
Les principaux pilotes sont Playwright (Microsoft, multi-navigateur), Puppeteer (Google, Chrome/Firefox) et Selenium (plus ancien, basé sur WebDriver, support linguistique le plus large). Chacun vous offre des méthodes pour naviguer, cliquer, saisir, attendre des éléments, intercepter des requêtes réseau et extraire du contenu. Pour les travaux d'automatisation qui doivent paraître humains, les navigateurs sans interface graphique associés à des plugins de furtivité et des proxies résidentiels constituent la stack standard.
Comment ça fonctionne
Lorsque vous lancez un navigateur sans interface graphique via Playwright/Puppeteer/Selenium, le pilote démarre un vrai processus Chromium (ou Firefox/WebKit) avec le drapeau `--headless` et s'y connecte via un protocole de débogage (Chrome DevTools Protocol pour Playwright/Puppeteer, WebDriver pour Selenium). Votre script envoie des commandes via ce protocole -- `page.goto`, `page.click`, `page.evaluate` -- et le navigateur les exécute comme si un utilisateur humain les pilotait.
Le navigateur gère tout ce qu'un vrai navigateur fait : la poignée de main TLS (avec sa propre empreinte), la négociation HTTP/2 ou HTTP/3, le stockage des cookies, l'exécution JavaScript, la mise en page, le rendu, les requêtes réseau pour les sous-ressources. Votre script peut intercepter n'importe lequel de ces éléments, modifier les requêtes/réponses, injecter des scripts et extraire des données du DOM rendu.