Dans cette section, nous allons présenter et expliquer brièvement les termes clés qui constituent la base de ce cours. Il est important de bien comprendre ces termes, car ils apparaîtront tout au long des modules, des sections et des exercices. Veillez à les réviser attentivement, car ils vous aideront à suivre le cours avec clarté et confiance.
Les thèmes abordés dans cette section sont les suivants :
- Site web classique et navigateurs normaux
- Site Tor et navigateur Tor
- Site I2P et navigateur I2P
- LLMs et IA
- Web scraping
- Navigateurs headless
- Proxys
- Concepts de programmation
- Limitation du débit
- Captcha
- Verrouillage de compte
- Docker
- IDE (VSCode)
- Linux
- Extension de navigateur
- Bases de données
- API
Sites web classiques et navigateurs normaux
Un site web classique désigne tout site accessible au public sur Internet sans nécessiter de logiciel spécial ou de configuration réseau particulière. Il s'agit par exemple de google.com, wikipedia.org et des sites d'actualités. Ces sites sont hébergés sur le clearnet, la partie du web indexée par les moteurs de recherche. Les navigateurs normaux tels que Chrome, Firefox, Edge et Safari sont utilisés pour visiter ces sites. Ils prennent en charge les normes web modernes (HTML, CSS, JavaScript) et fournissent des interfaces graphiques pour la navigation. Aucune configuration particulière n'est nécessaire pour accéder aux sites web classiques, ce qui en fait le principal moyen d'interaction avec le web pour la plupart des gens.
Site Tor et navigateur Tor
Un site Tor est un site web hébergé au sein du réseau Tor, généralement identifié par un domaine .onion. Ces sites ne sont pas accessibles à l'aide de navigateurs normaux ; vous avez besoin du navigateur Tor, qui achemine votre connexion via plusieurs nœuds cryptés afin de masquer votre identité et votre emplacement. Les sites Tor sont souvent considérés comme faisant partie du « dark web », car ils sont cachés des moteurs de recherche et nécessitent un accès spécial. De nombreux sites Tor sont axés sur la confidentialité, tandis que d'autres peuvent héberger des contenus illégaux ou controversés. Tor est utilisé à des fins d'anonymat par des utilisateurs légitimes comme par des criminels.
Site I2P et navigateur I2P
Un site I2P est un service hébergé sur le réseau Invisible Internet Project (I2P). Tout comme Tor, I2P garantit l'anonymat, mais fonctionne différemment en créant des tunnels peer-to-peer entre les utilisateurs. Les sites I2P ont souvent des domaines .i2p et ne sont accessibles qu'à l'aide d'un navigateur compatible I2P ou d'une configuration proxy. I2P est principalement utilisé pour des services internes sécurisés plutôt que pour accéder à l'Internet classique. Dans ce cours, nous ne travaillerons pas avec I2P, mais il est important de savoir qu'I2P existe en tant qu'autre réseau axé sur la confidentialité utilisé à la fois par des utilisateurs légitimes et des criminels.
LLMs & IA
Les grands modèles linguistiques (LLM) sont des systèmes d'IA avancés entraînés sur d'énormes ensembles de données textuelles. GPT, LLaMA et Claude en sont des exemples. Ces modèles génèrent des textes semblables à ceux rédigés par des humains, répondent à des questions, traduisent des langues et effectuent des tâches de raisonnement. Les LLM sont utiles dans le domaine du renseignement sur les cybermenaces pour analyser de grands volumes de données non structurées, repérer des modèles ou générer des rapports. L'IA désigne des technologies plus larges qui permettent aux machines de simuler un comportement intelligent. Dans ce cours, vous utiliserez l'IA pour des tâches telles que la détection des publications IAB, l'analyse des données des forums et la gestion des listes de surveillance des menaces.
Bibliothèques de scraping web
python-requests
Une bibliothèque Python simple pour envoyer des requêtes HTTP. Elle vous permet de télécharger des pages web et des réponses API de manière contrôlée, ce qui est utile pour extraire des données de sites web qui ne reposent pas fortement sur JavaScript.
BeautifulSoup
Une bibliothèque Python pour analyser des documents HTML ou XML. Elle aide à extraire des données en naviguant dans la structure du document, par exemple en trouvant des balises, des attributs ou du texte spécifiques sur une page web.
Navigateurs sans interface graphique
Navigateurs qui fonctionnent sans interface graphique. Ils chargent les pages web et interagissent avec elles comme des navigateurs classiques, mais sont contrôlés par du code. Utiles pour le scraping à grande échelle ou automatisé.
Navigateurs sans interface graphique
Un navigateur sans interface graphique est un navigateur web qui fonctionne sans interface graphique visible. Il se comporte comme un navigateur normal en traitant le JavaScript, en chargeant le CSS, en rendant les pages et en gérant les cookies, mais tout cela se passe en arrière-plan. Les navigateurs sans interface utilisateur sont contrôlés par du code, ce qui permet aux développeurs d'automatiser les interactions avec les sites web à des fins telles que le scraping, les tests ou la surveillance. Ils sont essentiels lorsque vous travaillez avec des sites web dynamiques ou riches en JavaScript, où les simples requêtes HTTP ne suffisent pas. Les navigateurs sans interface utilisateur peuvent imiter le comportement réel des utilisateurs, ce qui permet de contourner certaines protections anti-bot.
Puppeteer
Puppeteer est une bibliothèque Node.js qui fournit une API de haut niveau pour contrôler Chrome ou Chromium en mode headless ou complet. Elle vous permet de charger des pages, de cliquer sur des boutons, de remplir des formulaires, de prendre des captures d'écran et d'extraire du contenu. Puppeteer est apprécié pour sa rapidité, sa stabilité et son intégration poussée avec le navigateur. Il peut émuler les paramètres des appareils, les conditions réseau et la taille des fenêtres d'affichage, ce qui le rend très efficace pour scraper des sites web modernes ou tester le comportement des pages dans différents scénarios. Lien : https://github.com/puppeteer/puppeteer
Playwright
Playwright est un outil d'automatisation moderne qui prend en charge les navigateurs Chromium, Firefox et WebKit. Comme Puppeteer, il peut fonctionner en mode headless ou headed. Playwright est connu pour gérer des tâches complexes telles que l'interaction avec des flux multipages, la gestion de plusieurs contextes de navigateur et le contournement des protections anti-bot. Il offre des fonctionnalités avancées telles que l'interception des requêtes réseau, la simulation des entrées utilisateur avec des délais réalistes et la capture des journaux de console. Playwright est souvent privilégié pour les tests multi-navigateurs et le scraping dans des environnements où différents navigateurs doivent être pris en charge.
Lien : https://github.com/microsoft/playwright
Selenium
Selenium est l'un des frameworks d'automatisation de navigateur les plus anciens et les plus utilisés. Il prend en charge de nombreux langages de programmation, notamment Python, Java et C#. Selenium peut piloter des versions sans interface graphique de Chrome, Firefox et d'autres navigateurs. Il est couramment utilisé pour les tests, mais fonctionne également pour le scraping de sites dynamiques qui nécessitent des interactions avec l'utilisateur. La flexibilité de Selenium permet son intégration avec des frameworks de test, mais il peut être plus lent que Puppeteer ou Playwright pour les tâches de scraping à grande échelle en raison de son architecture plus ancienne.
Lien : https://github.com/SeleniumHQ/selenium
Undetected chrome driver
Selenium et Playwright peuvent déclencher des systèmes anti-bot en raison de leur technologie sous-jacente. Pour une solution qui minimise la détection, envisagez d'utiliser Undetected ChromeDriver, une version modifiée du ChromeDriver de Selenium conçue pour contourner les mécanismes anti-bot tels que Cloudflare, DataDome, Imperva et Distil Networks. Pour ce faire, il modifie le fichier binaire ChromeDriver afin de masquer les empreintes d'automatisation, telles que les agents utilisateurs et les variables JavaScript, et d'imiter le comportement d'un navigateur humain.
Lien : https://github.com/UltrafunkAmsterdam/undetected-chromedriver
Proxys : HTTP, HTTPS, Tor, SOCKS5
Les proxys acheminent votre trafic Internet via un autre serveur afin de masquer votre adresse IP réelle ou de contourner les restrictions.
- Les proxys HTTP/HTTPS sont destinés au trafic Web standard.
- Les proxys SOCKS5 fonctionnent à un niveau réseau inférieur et prennent en charge tous les types de trafic.
- Les proxys Tor acheminent le trafic via le réseau Tor pour garantir l'anonymat.
Les proxys sont essentiels dans le scraping pour éviter les interdictions, répartir la charge ou accéder à des contenus bloqués dans certaines régions.
Concepts de programmation
Python et JavaScript sont les principaux langages utilisés pour le scraping et l'automatisation.
-
Bibliothèques/paquets : ensembles de codes réutilisables pour effectuer des tâches spécifiques.
-
Frameworks front-end : outils tels que Bootstrap, Daisyui, TailwindCSS, React ou Vue pour créer des interfaces web.
-
Frameworks back-end : outils tels que Django, Flask, Laravel ou Express pour créer une logique côté serveur.
-
Bases de données : outils tels que PostgreSQL, MySQL, Firebase pour stocker des données.
-
IDE (environnement de développement intégré) : logiciels tels que VSCode, PyCharm, Visual studio, utilisés pour écrire et gérer du code.
-
Compilateurs : programmes qui transforment le code en instructions exécutables.
-
Environnement virtuel : un environnement virtuel ou venv est utilisé pour créer un environnement isolé dans lequel plusieurs bibliothèques/paquets peuvent être installés sans effectuer d'installation à l'échelle du système. Vous travaillerez beaucoup avec l'environnement virtuel Python.
Limitation du débit
La limitation du débit est une mesure de sécurité qui restreint le nombre de requêtes que vous pouvez envoyer à un serveur pendant une période donnée. Par exemple, un site peut n'autoriser que 10 requêtes par minute à partir d'une même adresse IP. Cela permet d'éviter les abus, le spam ou la surcharge. Les outils de scraping doivent respecter ou contourner les limites de débit en ralentissant les requêtes, en utilisant des proxys ou en répartissant la charge sur plusieurs comptes afin d'éviter la détection et les interdictions.
Captcha
Le captcha est un système de réponse à une question destiné à vérifier qu'un utilisateur est bien un être humain. Il empêche les robots automatisés d'effectuer des actions telles que la création de comptes ou le scraping de données. Les captchas courants consistent à sélectionner des images, à saisir du texte déformé ou à cocher des cases. Pour les scrapers, les captchas constituent un obstacle important, et leur résolution nécessite souvent des techniques avancées telles que la reconnaissance optique de caractères (OCR) basée sur l'IA ou des services de résolution tiers.
Verrouillage de compte
Le verrouillage de compte est une fonctionnalité de sécurité qui désactive un compte après un certain nombre de tentatives de connexion infructueuses ou d'activités suspectes. Cela permet de se protéger contre les attaques par force brute et les accès non autorisés. Lorsque vous scrapez ou interagissez avec des sites qui nécessitent une connexion, vous devez gérer vos identifiants avec soin, répartir vos actions sur plusieurs comptes ou utiliser la gestion de session pour éviter de déclencher des verrouillages.
Docker
Docker est un outil qui vous permet de regrouper des applications et leurs environnements dans des conteneurs isolés. Cela garantit que les logiciels fonctionnent de la même manière partout, quel que soit le système sur lequel ils sont installés. Dans ce cours, Docker est utilisé pour configurer des sites web simulés (à la fois clearnet et Tor) afin que vous puissiez vous exercer au scraping et à l'analyse sans interagir avec l'infrastructure criminelle réelle. Cela rend l'environnement portable, reproductible et facile à gérer.
Pour installer Docker, suivez ce guide : https://docs.docker.com/engine/install/
IDE : VSCode
Un environnement de développement intégré (IDE) est un logiciel permettant d'écrire, de modifier et de gérer du code. VSCode est un IDE populaire qui prend en charge plusieurs langages de programmation, fournit des outils de débogage, s'intègre à un système de contrôle de version (comme Git) et comprend des extensions pour travailler avec Python, JavaScript, Docker, etc. Vous utiliserez VSCode pour créer, tester et gérer votre code dans ce cours.
Linux
Linux est un système d'exploitation open source largement utilisé dans les domaines de la cybersécurité, du développement et des environnements serveurs. Il offre de puissants outils en ligne de commande, une grande stabilité et une flexibilité pour l'automatisation et la création de scripts. Dans ce cours, vous utiliserez Linux dans le cadre de votre environnement de laboratoire pour exécuter des scrapers, gérer des conteneurs Docker et traiter des tâches de traitement de données. Ubuntu est la distribution Linux recommandée pour ce cours.
Vous pouvez télécharger plusieurs distributions Linux telles que Ubuntu Desktop ou xUbuntu.
Extension de navigateur
Une extension de navigateur est un petit module logiciel qui ajoute des fonctionnalités à un navigateur web. Les extensions peuvent modifier le contenu des pages, automatiser des tâches ou interagir avec des API. Dans le domaine du scraping et de l'automatisation, les extensions personnalisées peuvent faciliter l'extraction de données, contourner les restrictions ou gérer les sessions.
Bases de données
Les bases de données stockent, organisent et gèrent les données pour faciliter leur accès et leur analyse.
- MongoDB est une base de données NoSQL qui stocke les données dans des documents flexibles de type JSON, idéale pour les données non structurées ou semi-structurées telles que les publications scrapées.
- PostgreSQL est une base de données relationnelle qui stocke les données dans des tables structurées avec des schémas stricts, adaptée aux requêtes et aux relations complexes.
API
Une interface de programmation d'application (API) permet à un logiciel de communiquer avec d'autres logiciels. Dans le domaine du scraping et de l'automatisation, les API fournissent un moyen structuré de demander et de recevoir des données sans analyser le code HTML. De nombreux sites proposent des API publiques ou privées pour accéder aux données, et comprendre comment interagir avec elles peut rendre la collecte de données plus rapide et plus fiable.