Le scraping des données concurrentielles est une pratique courante pour les marketeurs, les vendeurs sur les marketplaces et les agences. Vous surveillez les prix sur Wildberries, collectez des annonces sur Avito, analysez l'assortiment des concurrents. Mais la plupart des sites bloquent les requêtes massives, et ignorer le fichier robots.txt peut entraîner des problèmes juridiques. Dans cet article, nous allons voir comment utiliser des proxies pour scraper de manière éthique : respecter les règles des sites, éviter les blocages et collecter des données sans risques pour l'entreprise.
Qu'est-ce que robots.txt et pourquoi est-il nécessaire pour les sites
Le fichier robots.txt est un document texte à la racine du site qui informe les robots des moteurs de recherche et des scrapers des sections qui peuvent être explorées et celles qui sont interdites. Par exemple, un site de commerce en ligne peut interdire l'indexation du panier ou du compte personnel pour que ces pages ne soient pas indexées par Google.
Un fichier robots.txt typique ressemble à ceci :
User-agent: * Disallow: /admin/ Disallow: /cart/ Disallow: /api/ Crawl-delay: 10 User-agent: Googlebot Allow: / Sitemap: https://example.com/sitemap.xml
Analyse des directives :
User-agent: *— règles pour tous les bots (l'astérisque signifie "n'importe quel bot")Disallow: /admin/— interdit de scraper la section /admin/Crawl-delay: 10— délai de 10 secondes entre les requêtesUser-agent: Googlebot— règles spéciales pour Google (tout est autorisé)
Pourquoi les sites utilisent robots.txt :
- Protection contre la surcharge du serveur — le scraping massif crée une charge sur le serveur, ralentissant le fonctionnement pour les utilisateurs réels
- Cacher les pages techniques — les paniers, les formulaires de paiement, les points de terminaison API ne doivent pas être indexés
- Protection des données commerciales — les marketplaces ne veulent pas que les concurrents puissent facilement extraire tout le catalogue de produits
- Économie de trafic — chaque requête d'un bot coûte de l'argent au propriétaire du site
Important : robots.txt est une recommandation, pas une barrière technique. Le fichier ne bloque pas l'accès physiquement, mais ignorer les règles peut entraîner le blocage de votre IP ou des poursuites judiciaires (surtout aux États-Unis et en Europe).
Risques juridiques du scraping : que dit la loi
Le scraping de données se situe dans une zone grise de la législation. Dans différents pays, des règles différentes s'appliquent, mais il existe des principes généraux qu'il est important de connaître pour éviter des poursuites judiciaires.
Législation en Russie
En Russie, il n'existe pas de loi spécifique sur le scraping, mais les normes générales s'appliquent :
- Droit d'auteur (Code civil de la Fédération de Russie, article 1259) — il est interdit de copier des textes uniques, des photos, des descriptions de produits sans l'autorisation du titulaire des droits. Le scraping des prix et des caractéristiques est généralement sûr, car ce sont des données factuelles.
- Données personnelles (152-FZ) — il est interdit de collecter des données personnelles des utilisateurs (nom, téléphone, email) sans consentement. Cela concerne le scraping des profils de réseaux sociaux ou des bases de contacts.
- Concurrence déloyale (article 14.33 du Code des infractions administratives de la Fédération de Russie) — si le scraping est utilisé pour copier un modèle commercial ou induire les clients en erreur, une amende pouvant atteindre 500 000 roubles peut être infligée.
Législation aux États-Unis et en Europe
Aux États-Unis et dans l'UE, les lois sont plus strictes :
- CFAA (Computer Fraud and Abuse Act, États-Unis) — l'accès non autorisé aux systèmes informatiques est considéré comme un crime. La violation de robots.txt peut être interprétée comme un "accès non autorisé". Un cas célèbre : LinkedIn contre hiQ Labs (2022) — le tribunal a statué que le scraping de données publiques est légal, mais ignorer les barrières techniques (par exemple, les CAPTCHA) ne l'est pas.
- RGPD (Règlement général sur la protection des données, UE) — la collecte de données personnelles des citoyens de l'UE sans consentement explicite est interdite. Amendes allant jusqu'à 20 millions d'euros ou 4 % du chiffre d'affaires annuel de l'entreprise.
- Conditions d'utilisation (Contrats d'utilisateur) — de nombreux sites interdisent explicitement le scraping dans leurs règles. La violation peut entraîner une poursuite judiciaire pour rupture de contrat.
Conseil pratique : Avant de scraper, vérifiez trois documents : robots.txt, Conditions d'utilisation et Politique de confidentialité du site cible. Si le scraping est explicitement interdit, recherchez des sources de données alternatives (API publiques, programmes partenaires, ensembles de données prêts à l'emploi).
Qu'est-ce qui est sûr de scraper
| Type de données | Risque | Commentaire |
|---|---|---|
| Prix des produits | Faible | Données factuelles, non protégées par le droit d'auteur |
| Caractéristiques des produits | Faible | Données techniques sûres |
| Descriptions uniques | Élevé | Protégées par le droit d'auteur |
| Photos des produits | Élevé | Nécessite l'autorisation du titulaire des droits |
| Contacts des utilisateurs | Critique | Violation de la 152-FZ et du RGPD |
| Statistiques publiques | Faible | Données ouvertes sûres |
Scraping éthique : comment collecter des données sans violations
Le scraping éthique est un équilibre entre les objectifs commerciaux et le respect des propriétaires de sites. Vous pouvez collecter les données nécessaires sans causer de problèmes au site cible et sans enfreindre les lois.
Principes fondamentaux du scraping éthique
- Respectez robots.txt — si une section est interdite au scraping, ne tentez pas de la contourner. Recherchez des sources de données alternatives.
- Limitez la vitesse des requêtes — n'envoyez pas 1000 requêtes par seconde. Faites des pauses de 2 à 10 secondes entre les requêtes pour ne pas surcharger le serveur.
- Utilisez le User-Agent de votre scraper — ne vous faites pas passer pour un utilisateur ordinaire. Indiquez un User-Agent honnête, par exemple : "MyCompanyParser/1.0 (contact@mycompany.com)". Cela permet aux administrateurs du site de vous contacter en cas de problème.
- Scrapez uniquement des données publiques — ne tentez pas d'accéder à des sections protégées, des API ou des bases de données.
- Ne revendez pas les données copiées — utilisez les informations collectées pour des besoins internes (analyse des concurrents, surveillance des prix), et non pour créer un service concurrent.
- Mettez en cache les données — ne demandez pas plusieurs fois la même page. Conservez les résultats localement et mettez-les à jour selon un calendrier (une fois par jour, une fois par semaine).
Quand NE PAS scraper
Il existe des situations où le scraping crée plus de problèmes que d'avantages :
- Le site propose une API — de nombreuses marketplaces (Wildberries, Ozon, Yandex.Market) ont des API officielles pour les partenaires. Utilisez-les au lieu de scraper — c'est plus rapide, plus légal et plus fiable.
- Les données sont protégées par un CAPTCHA ou une authentification — contourner la protection peut être considéré comme un piratage.
- Le site interdit clairement le scraping dans les Conditions d'utilisation — le risque de poursuite judiciaire est trop élevé.
- Vous collectez des données personnelles — cela constitue une violation du RGPD et de la 152-FZ avec d'énormes amendes.
Comment lire et respecter correctement robots.txt
Le fichier robots.txt se trouve à la racine du domaine : https://example.com/robots.txt. Avant de commencer le scraping, vérifiez toujours ce fichier.
Directives principales de robots.txt
| Directive | Signification | Exemple |
|---|---|---|
User-agent |
Pour quel bot les règles s'appliquent | User-agent: * (tous les bots) |
Disallow |
Sections interdites au scraping | Disallow: /admin/ |
Allow |
Sections autorisées (exception à Disallow) | Allow: /public/ |
Crawl-delay |
Délai minimum entre les requêtes (en secondes) | Crawl-delay: 10 |
Sitemap |
Lien vers la carte du site (liste de toutes les pages) | Sitemap: /sitemap.xml |
Exemples de robots.txt et comment les interpréter
Exemple 1 : Interdiction totale du scraping
User-agent: * Disallow: /
Cela signifie : "Tous les bots sont interdits de scanner l'ensemble du site". Scraper un tel site constitue une violation des règles du propriétaire. Recherchez des sources de données alternatives.
Exemple 2 : Restrictions sélectives
User-agent: * Disallow: /admin/ Disallow: /api/ Disallow: /cart/ Allow: /products/ Crawl-delay: 5
Cela signifie : "Il est possible de scraper la section /products/ (produits), mais les sections /admin/, /api/ et /cart/ sont interdites. Faites une pause de 5 secondes entre les requêtes". Ce sont des conditions normales — il est possible de scraper les produits en respectant les limites.
Exemple 3 : Règles pour des bots spécifiques
User-agent: Googlebot Allow: / User-agent: * Disallow: / Crawl-delay: 10
Cela signifie : "Google peut scanner l'ensemble du site, mais tous les autres bots ne le peuvent pas". Si vous n'êtes pas Google, le scraping est interdit.
Comment vérifier robots.txt avant le scraping
La plupart des langages de programmation disposent de bibliothèques pour vérifier automatiquement robots.txt. Exemple en Python :
from urllib.robotparser import RobotFileParser
rp = RobotFileParser()
rp.set_url("https://example.com/robots.txt")
rp.read()
# Vérifions si nous pouvons scraper la page
url = "https://example.com/products/item123"
user_agent = "MyParser/1.0"
if rp.can_fetch(user_agent, url):
print("Scraping autorisé")
else:
print("Scraping interdit par robots.txt")
Cela vérifiera automatiquement les règles et indiquera si le scraping d'une URL spécifique est autorisé.
Rate Limiting et délais entre les requêtes
Le Rate Limiting (limitation de la vitesse des requêtes) est une protection des sites contre la surcharge. Si vous envoyez trop de requêtes en peu de temps, le serveur peut bloquer votre IP ou afficher un CAPTCHA.
Pourquoi il est important de respecter les délais
- Éviter le blocage de l'IP — les sites surveillent la fréquence des requêtes provenant d'une seule IP. Si vous envoyez 100 requêtes par minute, vous serez bloqué en tant que bot.
- Réduction de la charge sur le serveur — le scraping massif peut "faire tomber" le site, surtout s'il s'agit d'une petite ressource sur un hébergement bon marché.
- Respect du Crawl-delay de robots.txt — si le site a indiqué un délai de 10 secondes, ignorer cette règle est contraire à l'éthique.
- Comportement plus naturel — les utilisateurs ordinaires n'ouvrent pas 10 pages par seconde. Les délais rendent votre scraper semblable à une personne réelle.
Délais recommandés pour différentes tâches
| Type de scraping | Délai entre les requêtes | Commentaire |
|---|---|---|
| Petit site (jusqu'à 1000 pages) | 5-10 secondes | Faible puissance du serveur |
| Site moyen (site de commerce en ligne) | 2-5 secondes | Équilibre optimal |
| Grande marketplace (Wildberries, Ozon) | 1-3 secondes | Infrastructure puissante, mais protection forte |
| Points de terminaison API | Selon les limites de l'API (généralement 10-100 requêtes/min) | Voir la documentation de l'API |
| Réseaux sociaux (Instagram, VK) | 10-30 secondes | Limites très strictes, risque élevé de bannissement |
Comment implémenter des délais dans le code
Exemple en Python utilisant la bibliothèque time :
import time
import requests
urls = [
"https://example.com/product1",
"https://example.com/product2",
"https://example.com/product3"
]
for url in urls:
response = requests.get(url)
print(f"Scrapé : {url}")
# Délai de 3 secondes avant la prochaine requête
time.sleep(3)
Pour des scénarios plus complexes, utilisez des délais aléatoires (random delay) pour que le comportement soit encore plus naturel :
import time
import random
for url in urls:
response = requests.get(url)
# Délai aléatoire de 2 à 5 secondes
delay = random.uniform(2, 5)
time.sleep(delay)
Rotation des proxies pour un scraping éthique
Même si vous respectez robots.txt et faites des délais, le scraping d'un grand volume de données à partir d'une seule IP peut susciter des soupçons. La rotation des proxies aide à répartir les requêtes entre différentes adresses IP, imitant le comportement de nombreux utilisateurs réels.
Pourquoi la rotation des proxies est-elle nécessaire
- Contourner le Rate Limiting — si la limite est de 100 requêtes/heure à partir d'une seule IP, alors 10 proxies vous donneront 1000 requêtes/heure.
- Répartition géographique — pour scraper des données régionales (prix sur Wildberries à Moscou et à Vladivostok), des proxies de différentes villes sont nécessaires.
- Réduction des soupçons — les requêtes provenant de différentes IP ressemblent à du trafic d'utilisateurs réels.
- Réserve — si un proxy est bloqué, le scraper passe automatiquement à un autre.
Quels proxies utiliser pour un scraping éthique
| Type de proxy | Avantages | Inconvénients | Quand utiliser |
|---|---|---|---|
| Résidentiels | IP réelles d'utilisateurs domestiques, faible risque de bannissement | Plus chers que les autres types | Scraping des réseaux sociaux, marketplaces avec une forte protection |
| Mobiles | IP des opérateurs mobiles, confiance maximale | Les plus chers, moins d'IP disponibles | Scraping d'Instagram, TikTok, applications mobiles |
| Centres de données | Pas chers, haute vitesse | Facilement détectables, souvent sur des listes noires | Scraping de sites simples, tests |
Recommandation pour un scraping éthique : Utilisez des proxies résidentiels avec rotation automatique. Ils offrent un équilibre entre coût et fiabilité, et leurs IP ressemblent à celles d'utilisateurs ordinaires.
Stratégies de rotation des proxies
- Rotation à chaque requête — chaque requête provient d'une nouvelle IP. Convient pour le scraping de sites avec des limites strictes (réseaux sociaux, marketplaces).
- Rotation par temps (toutes les 5-10 minutes) — une IP est utilisée pour plusieurs requêtes, puis change. Comportement plus naturel.
- Sessions collantes (sticky sessions) — une IP est utilisée pour toute la session d'un utilisateur (par exemple, authentification + scraping du compte personnel). Essentiel pour les sites avec authentification.
- Rotation géographique — pour chaque région, un proxy de cette région est utilisé. Exemple : scraping des prix sur Wildberries à Moscou — proxy de Moscou.
Exemple de rotation de proxies en Python
import requests
import random
import time
# Liste de proxies (remplacez par des réels)
proxies_list = [
{"http": "http://user:pass@proxy1.example.com:8080"},
{"http": "http://user:pass@proxy2.example.com:8080"},
{"http": "http://user:pass@proxy3.example.com:8080"}
]
urls = [
"https://example.com/product1",
"https://example.com/product2",
"https://example.com/product3"
]
for url in urls:
# Choisir un proxy aléatoire
proxy = random.choice(proxies_list)
try:
response = requests.get(url, proxies=proxy, timeout=10)
print(f"Scrapé {url} via {proxy}")
except Exception as e:
print(f"Erreur avec le proxy {proxy}: {e}")
# Délai de 3 secondes
time.sleep(3)
Cas pratiques : scraping des marketplaces et des concurrents
Examinons des scénarios réels de scraping éthique pour les entreprises.
Cas 1 : Surveillance des prix sur Wildberries
Objectif : Vous vendez des produits sur Wildberries et souhaitez suivre les prix des concurrents pour ajuster les vôtres.
Problèmes :
- Wildberries bloque l'IP lors de requêtes fréquentes
- Les prix dépendent de la région de livraison
- Vous devez scraper 100-500 produits quotidiennement
Solution éthique :
- Vérifiez robots.txt — Wildberries autorise le scraping des fiches produits, mais interdit les points de terminaison API.
- Utilisez des proxies résidentiels — pour chaque région (Moscou, Saint-Pétersbourg, Novossibirsk), prenez un proxy de cette région.
- Rotation à chaque requête — scrapez chaque produit avec une nouvelle IP.
- Délai de 2-3 secondes — faites une pause entre les requêtes.
- Scrapez une fois par jour — pas besoin de mettre à jour les prix chaque heure, un suivi quotidien suffit.
Résultat : Vous obtenez des prix actualisés des concurrents sans blocages. Wildberries ne détecte pas de charge anormale, car les requêtes sont réparties dans le temps et sur différentes IP.
Cas 2 : Scraping des annonces sur Avito
Objectif : Vous êtes agent immobilier et souhaitez rassembler toutes les annonces de vente d'appartements dans votre ville pour analyser le marché.
Problèmes :
- Avito affiche un CAPTCHA lors d'activités suspectes
- Vous devez scraper 5000+ annonces
- Les données sont mises à jour chaque jour
Solution éthique :
- Vérifiez robots.txt — Avito autorise le scraping des pages d'annonces, mais avec une restriction de Crawl-delay : 5 secondes.
- Utilisez des proxies résidentiels — rotation tous les 10 requêtes (pas à chaque requête, pour ne pas paraître suspect).
- Délai de 5-7 secondes — respectez le Crawl-delay de robots.txt.
- Scrapez la nuit — quand la charge sur le site est minimale (de 2h à 6h du matin).
- Mettez en cache les données — ne scrapez pas la même annonce deux fois, conservez les résultats dans une base de données.
Résultat : Pendant la nuit, vous collectez toutes les nouvelles annonces sans CAPTCHA ni blocages. Avito ne subit pas de surcharge, vous obtenez les données nécessaires.
Cas 3 : Analyse de l'assortiment d'un concurrent
Objectif : Vous êtes propriétaire d'une boutique en ligne d'électronique et souhaitez savoir quels nouveaux produits sont apparus chez un concurrent.
Problèmes :
- Le site du concurrent est hébergé sur un serveur protégé avec un système anti-bot
- Vous devez scraper un catalogue de 10 000 produits
- Vous souhaitez le faire chaque semaine
Solution éthique :
- Vérifiez robots.txt — le scraping de /catalog/ est autorisé, mais /admin/ et /api/ sont interdits.
- Utilisez le Sitemap — au lieu de parcourir toutes les pages manuellement, prenez la liste des URL à partir de sitemap.xml (c'est plus rapide et ne crée pas de charge supplémentaire).
- Proxies résidentiels avec rotation toutes les 5 minutes — une IP effectue 20-30 requêtes, puis change.
- Délai de 3-5 secondes — imitez le comportement d'un utilisateur ordinaire.
- Scrapez uniquement les nouveaux produits — comparez le catalogue actuel avec le précédent et scrapez uniquement les changements.
Résultat : Vous recevez chaque semaine une liste des nouveautés du concurrent sans blocages. Le site du concurrent ne rencontre pas de problèmes, vous obtenez un avantage concurrentiel.
Outils pour l'automatisation dans le respect des règles
Il existe des outils prêts à l'emploi qui simplifient le scraping éthique et respectent automatiquement robots.txt.
Scrapy (Python)
Scrapy est un framework populaire pour le scraping en Python. Il vérifie automatiquement robots.txt et respecte les règles.
Configuration du respect de robots.txt dans Scrapy :
# settings.py # Activer le respect de robots.txt ROBOTSTXT_OBEY = True # Délai entre les requêtes (en secondes) DOWNLOAD_DELAY = 3 # Délai aléatoire (de 0,5 à 1,5 * DOWNLOAD_DELAY) RANDOMIZE_DOWNLOAD_DELAY = True # Limitation des requêtes simultanées à un domaine CONCURRENT_REQUESTS_PER_DOMAIN = 1 # User-Agent de votre scraper USER_AGENT = 'MyCompanyParser/1.0 (+http://mycompany.com/bot)'
Avec ces paramètres, Scrapy vérifiera automatiquement robots.txt avant le scraping et respectera toutes les règles.
Apify (plateforme cloud)
Apify est une plateforme cloud pour le web scraping sans code. Vous créez un scraper via une interface visuelle, et Apify gère automatiquement les proxies et le respect des limites.
Avantages pour le scraping éthique :
- Rotation de proxies intégrée (résidentiels et centres de données)
- Respect automatique de robots.txt
- Configuration des délais via l'interface
- Planification des lancements (scraping quotidien/hebdomadaire)
Octoparse (scraper sans code)
Octoparse est une application de bureau pour le scraping sans programmation. Elle convient aux marketeurs et aux vendeurs qui ne savent pas coder.
Comment configurer le scraping éthique dans Octoparse :
- Ouvrez les paramètres de la tâche (Task Settings)
- Activez "Respect robots.txt"
- Définissez un délai (Delay) de 3-5 secondes
- Connectez le proxy dans la section "Proxy Settings"
- Configurez le calendrier de lancement (Schedule)
Puppeteer/Playwright (JavaScript)
Puppeteer et Playwright sont des bibliothèques pour l'automatisation du navigateur. Elles conviennent pour le scraping de sites avec rendu JavaScript.
Exemple de scraping éthique avec Puppeteer :
const puppeteer = require('puppeteer');
const robotsParser = require('robots-parser');
async function ethicalScrape(url) {
// Vérifions robots.txt
const robots = robotsParser('https://example.com/robots.txt',
'MyParser/1.0');
if (!robots.isAllowed(url)) {
console.log('Scraping interdit par robots.txt');
return;
}
const browser = await puppeteer.launch();
const page = await browser.newPage();
// Délai avant le chargement de la page
await new Promise(resolve => setTimeout(resolve, 3000));
await page.goto(url);
const data = await page.evaluate(() => {
return document.querySelector('h1').innerText;
});
console.log(data);
await browser.close();
}
ethicalScrape('https://example.com/product1');
Conclusion
Le scraping éthique via des proxies est un équilibre entre les objectifs commerciaux et le respect des propriétaires de sites. En respectant robots.txt, en faisant des délais entre les requêtes et en utilisant la rotation des proxies, vous pouvez collecter les données nécessaires sans risques juridiques ni blocages. Les principes clés : vérifiez robots.txt avant le scraping, limitez la vitesse des requêtes, utilisez un User-Agent honnête et scrapez uniquement des données publiques. Cela protégera votre entreprise contre les poursuites judiciaires et assurera un fonctionnement stable des scrapers.
Si vous prévoyez de scraper des marketplaces, des sites concurrents ou de collecter des données pour une analyse de marché, nous vous recommandons d'utiliser des proxies résidentiels avec rotation automatique. Ils assurent...