Retour au blog

Proxies pour le scraping des caractéristiques des produits : comment collecter des données sur les marketplaces sans blocages

Guide détaillé pour choisir et configurer un proxy pour le scraping des caractéristiques des produits sur les marketplaces : types de proxies, rotation des IP, contournement des systèmes anti-bot de Wildberries et Ozon.

📅26 janvier 2026
```html

Le scraping des caractéristiques des produits sur les marketplaces est une tâche critique pour les vendeurs, les analystes et les agrégateurs de prix. Wildberries, Ozon, Yandex.Market et d'autres plateformes bloquent activement la collecte automatique de données en utilisant des systèmes anti-bot avancés. Sans proxies correctement configurés, votre scraper sera banni après seulement 50 à 100 requêtes. Dans cet article, nous examinerons quels types de proxies conviennent au scraping, comment configurer la rotation IP et contourner la protection des plus grandes marketplaces.

Pourquoi les marketplaces bloquent-elles le scraping et comment cela fonctionne

Les marketplaces modernes perdent des millions de roubles à cause du scraping : les concurrents copient les descriptions de produits, les agrégateurs interceptent le trafic, et la charge sur les serveurs augmente. C'est pourquoi Wildberries, Ozon, Yandex.Market et d'autres plateformes ont mis en place une protection multi-niveaux contre la collecte automatique de données.

Comment les marketplaces détectent-elles le scraping :

  • Fréquence des requêtes depuis une seule IP — si plus de 100 requêtes par minute proviennent d'une seule adresse, c'est un signe évident de bot. Un utilisateur normal consulte 5 à 10 fiches produits dans ce laps de temps.
  • Absence de JavaScript — les scrapers simples utilisant requests ou curl n'exécutent pas le code JS qui charge les prix et les caractéristiques. Le site voit que le contenu est demandé sans rendu.
  • User-Agent et en-têtes — les en-têtes par défaut des bibliothèques (par exemple, "python-requests/2.28.0") trahissent instantanément le bot. L'absence des en-têtes Accept-Language, Referer est également suspecte.
  • Empreinte du navigateur — les systèmes avancés (Cloudflare, Kasada, DataDome) analysent le Canvas, WebGL, les polices, les extensions du navigateur. Les navigateurs sans tête comme Puppeteer sont facilement identifiables par l'absence de certains paramètres.
  • Modèles comportementaux — un bot ouvre les fiches produits à intervalles réguliers (par exemple, exactement toutes les 2 secondes), ne fait pas défiler la page, ne déplace pas la souris. Cela le distingue d'un être humain vivant.

Conséquences du blocage : Bannissement temporaire de l'IP pendant 1 à 24 heures, CAPTCHA sur chaque requête, blocage complet de la plage IP du centre de données. Pour les entreprises, cela signifie l'arrêt de la collecte de données et la perte d'un avantage concurrentiel.

Cas réel : Un agrégateur de prix a scrappé Wildberries avec 10 IP de centre de données, effectuant 500 requêtes par heure depuis chacune. Après 3 jours, toute la plage /24 a été bannie de manière permanente — il a fallu changer de fournisseur de proxies et passer à des IP résidentielles avec rotation.

Comparaison des types de proxies pour le scraping de produits

Pour le scraping des caractéristiques des produits, trois types principaux de proxies sont utilisés. Chacun a ses avantages et ses limites en fonction du volume de données, du budget et des exigences de vitesse.

Type de proxy Vitesse Risque de bannissement Coût Quand utiliser
Proxies de centre de données Élevée (50-200 ms) Élevé Bas Scraping de petits volumes (jusqu'à 10 000 produits/jour), test du scraper
Proxies résidentiels Moyenne (200-800 ms) Bas Élevé (par trafic) Scraping de Wildberries, Ozon avec protection anti-bot, grands volumes de données
Proxies mobiles Moyenne (300-1000 ms) Très bas Très élevé Scraping avec protection maximale, contournement de blocages stricts, projets critiques

Proxies de centre de données — ce sont des adresses IP de serveurs dans des centres de données (AWS, Hetzner, OVH). Ils sont rapides et peu coûteux, mais les marketplaces peuvent facilement les identifier grâce aux bases ASN. Ils conviennent pour le scraping de petits catalogues (jusqu'à 10 000 produits par jour) ou de plateformes sans protection sérieuse. Coût : à partir de 1-3$ par IP par mois.

Proxies résidentiels — ce sont des IP d'utilisateurs domestiques, obtenues légalement via SDK dans des applications. Les marketplaces les perçoivent comme des acheteurs normaux. Idéaux pour le scraping de Wildberries, Ozon, Yandex.Market en grands volumes. Coût : à partir de 5-15$ pour 1 Go de trafic (environ 10 000-30 000 requêtes).

Proxies mobiles — IP des opérateurs mobiles (MTS, Beeline, MegaFon). Le type le plus fiable pour contourner la protection, mais coûteux et lent. Utilisez-les uniquement pour des tâches critiques, où le blocage est inacceptable. Coût : à partir de 50-150$ par IP par mois avec rotation.

Proxies résidentiels ou de centre de données : que choisir pour votre tâche

Le choix du type de proxy dépend de trois facteurs : le volume de scraping, le niveau de protection de la plateforme et le budget. Examinons des scénarios d'utilisation spécifiques.

Quand utiliser des proxies de centre de données

Scénario 1 : Test du scraper
Vous développez un nouveau scraper et vérifiez la logique d'extraction des données. Vous devez scraper 100-500 produits pour le débogage. Dans ce cas, les proxies résidentiels représentent une dépense excessive. Prenez 5-10 IP de centre de données et effectuez 50-100 requêtes depuis chacune par heure. Cela suffira pour tester sans blocages.

Scénario 2 : Scraping de plateformes sans protection
Les petites marketplaces régionales, les sites de petites annonces comme Avito (dans certaines catégories), les boutiques en ligne sur OpenCart n'ont souvent pas de système anti-bot sérieux. Ici, les centres de données fonctionnent de manière stable sous une charge modérée (jusqu'à 200 requêtes par heure par IP).

Scénario 3 : Budget limité et petits volumes
Si vous devez scraper 5 000-10 000 produits par jour et que votre budget est limité, essayez les centres de données avec une rotation agressive (changement d'IP toutes les 50-100 requêtes). Oui, il y aura plus de blocages, mais avec une bonne configuration de la logique de retry (répétition de la requête avec une nouvelle IP), cela fonctionne.

Quand utiliser des proxies résidentiels

Scénario 1 : Scraping de Wildberries et Ozon
Ces plateformes utilisent Cloudflare, DataDome et leurs propres systèmes anti-bot. Avec des centres de données, vous obtiendrez un CAPTCHA ou un bannissement après 20-50 requêtes. Les proxies résidentiels avec rotation toutes les 5-10 minutes permettent de scraper des centaines de milliers de produits sans problème. Un client a scrappé tout le catalogue de Wildberries (plus de 20 millions de produits) en une semaine, en utilisant un pool de 1000 IP résidentielles.

Scénario 2 : Scraping avec authentification
Certaines caractéristiques des produits (prix de gros, stocks) ne sont accessibles qu'aux utilisateurs authentifiés. Si vous scrapez via un compte, l'utilisation de centres de données entraînera le blocage du compte. Les proxies résidentiels imitent les actions d'un utilisateur réel, réduisant le risque de bannissement.

Scénario 3 : Géotargeting
Les prix et la disponibilité des produits sur Wildberries, Ozon, Yandex.Market dépendent de la région de l'utilisateur. Pour collecter des données sur Moscou, Saint-Pétersbourg, Ekaterinbourg simultanément, des proxies résidentiels avec sélection de ville sont nécessaires. Les centres de données ne permettent pas de contrôler précisément la géolocalisation.

Formule de choix du type de proxy :

  • Volume < 10 000 produits/jour + pas de protection stricte = centres de données
  • Volume > 10 000 produits/jour + Wildberries/Ozon = résidentiels
  • Scraping avec authentification + risque de bannissement du compte = résidentiels
  • Besoin de géotargeting par villes de Russie = résidentiels
  • Projet critique + tolérance nulle aux blocages = mobiles

Configuration de la rotation IP : intervalles et stratégies

La rotation IP est le changement automatique de serveur proxy après un certain nombre de requêtes ou de temps. Une configuration correcte de la rotation est la clé d'un scraping stable sans blocages.

Types de rotation de proxy

1. Rotation par temps (Time-based rotation)
L'IP change après un intervalle fixe : 5 minutes, 10 minutes, 30 minutes. C'est la méthode la plus simple, mais pas la plus efficace. Si vous faites 200 requêtes en 5 minutes, et que la limite de la plateforme est de 100 requêtes par IP, vous obtiendrez quand même un bannissement.

Quand utiliser : Pour des proxies résidentiels avec une faible charge (jusqu'à 50 requêtes par IP). Par exemple, le scraping de Wildberries avec un intervalle de 3-5 secondes entre les requêtes — une rotation toutes les 10 minutes sera optimale.

2. Rotation par nombre de requêtes (Request-based rotation)
L'IP change après N requêtes : 50, 100, 200. C'est plus précis que la rotation temporelle, mais nécessite de suivre le compteur de requêtes dans le code du scraper.

Quand utiliser : Pour des centres de données et un scraping agressif. Par exemple, vous savez qu'Ozon bloque après 80 requêtes par IP — configurez la rotation toutes les 70 requêtes avec une marge.

3. Rotation par requête (Per-request rotation)
Chaque requête passe par une nouvelle IP. Protection maximale contre les blocages, mais stratégie la plus coûteuse pour des proxies résidentiels (la consommation de trafic augmente en raison de l'établissement de nouvelles connexions).

Quand utiliser : Pour contourner les protections les plus strictes (Cloudflare en mode "Under Attack"), le scraping à haut risque de bannissement de compte, la collecte de données de concurrents qui surveillent le scraping.

Intervalles de rotation recommandés pour les plateformes populaires

Plateforme Type de proxy Intervalle de rotation Délai entre les requêtes
Wildberries Résidentiels Toutes les 5-10 minutes ou 50 requêtes 2-4 secondes
Ozon Résidentiels Toutes les 7-12 minutes ou 60 requêtes 3-5 secondes
Yandex.Market Résidentiels Toutes les 10-15 minutes ou 80 requêtes 2-3 secondes
Avito (catégorie produits) Centres de données Toutes les 15-20 minutes ou 100 requêtes 1-2 secondes
AliExpress Résidentiels Toutes les 3-5 minutes ou 30 requêtes 4-6 secondes

Point important : Ces chiffres sont le résultat de tests réalisés en 2024. Les marketplaces mettent constamment à jour leur protection, il est donc recommandé de commencer avec des paramètres conservateurs (moins de requêtes, plus de délai) et d'augmenter progressivement la charge tout en surveillant le pourcentage de blocages.

Stratégie de rotation "intelligente"

Au lieu d'intervalles fixes, utilisez une rotation adaptative basée sur les réponses du serveur :

  • HTTP 429 (Trop de requêtes) — changement immédiat d'IP et ajout de cette IP à la liste noire pendant 30-60 minutes.
  • HTTP 403 (Interdit) ou CAPTCHA — changement d'IP et augmentation du délai entre les requêtes de 50%.
  • HTTP 503 (Service indisponible) — il se peut que le problème ne soit pas lié au proxy, mais à une surcharge du site. Pause de 30-60 secondes sans changement d'IP.
  • Requêtes réussies consécutives > 100 — vous pouvez légèrement réduire le délai ou augmenter le nombre de requêtes avant la rotation.

Cette logique est mise en œuvre dans le code du scraper et permet d'économiser jusqu'à 30-40% de trafic proxy, en évitant des rotations inutiles.

Contournement des systèmes anti-bot de Wildberries, Ozon et Yandex.Market

Les marketplaces modernes utilisent une protection multi-niveaux : de la simple vérification de l'User-Agent à l'analyse avancée de l'empreinte du navigateur. Les proxies seuls ne suffisent pas — une stratégie de contournement complète est nécessaire.

Niveau 1 : En-têtes HTTP appropriés

L'ensemble minimal d'en-têtes que votre scraper doit envoyer :

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: fr-FR,fr;q=0.9,en;q=0.8
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Upgrade-Insecure-Requests: 1
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: none
Sec-Fetch-User: ?1
Cache-Control: max-age=0

Points critiques :

  • L'User-Agent doit correspondre à un vrai navigateur. Utilisez des versions récentes de Chrome 120+, Firefox 121+. N'utilisez pas de vieilles versions (Chrome 90) — c'est un signal d'alerte.
  • Accept-Language doit être "fr-FR" pour les plateformes françaises. Si vous scrapez avec l'en-tête "en-US", le site comprend l'incohérence (IP de France, mais langue anglaise).
  • Les en-têtes Sec-Fetch-* sont apparus dans Chrome 76+ et sont obligatoires pour les sites modernes. Leur absence trahit un ancien scraper.

Niveau 2 : Exécution de JavaScript

Wildberries et Ozon chargent les prix, les caractéristiques, les stocks via JavaScript après le chargement de la page. Si votre scraper utilisant requests/curl télécharge simplement le HTML, il obtiendra une page vide ou un placeholder.

Solution : Utilisez des navigateurs sans tête — Puppeteer (Node.js), Playwright (Python/Node.js), Selenium. Ils rendent complètement la page, exécutent le JS et obtiennent le HTML final.

Problème des navigateurs sans tête : Les sites les identifient facilement par les paramètres navigator.webdriver === true, l'absence de plugins, des tailles de Canvas spécifiques. Le taux d'identification de Chrome sans tête est d'environ 80-90%.

Solution au problème : Utilisez des bibliothèques pour le mode stealth :

  • puppeteer-extra-plugin-stealth (Node.js) — masque Puppeteer sous un Chrome normal, corrige 30+ paramètres d'empreinte.
  • undetected-chromedriver (Python) — version patchée de Selenium ChromeDriver, que la plupart des systèmes anti-bot ne détectent pas.
  • playwright-stealth (Python) — équivalent pour Playwright avec support de Firefox et WebKit.

Niveau 3 : Contournement de Cloudflare et DataDome

Wildberries utilise Cloudflare Bot Management, Ozon — DataDome. Ces systèmes analysent non seulement l'IP et les en-têtes, mais aussi le comportement : vitesse de défilement, mouvements de la souris, temps de chargement de la page.

Signes du défi Cloudflare : Au lieu de contenu, vous voyez une page "Vérification de votre navigateur..." avec un délai de 5 secondes. Dans le code, c'est un défi JavaScript qui vérifie le navigateur.

Comment contourner :

  • FlareSolverr — service proxy qui résout automatiquement le défi Cloudflare. Vous lui envoyez l'URL, il renvoie des cookies pour le contournement. Fonctionne dans 70-80% des cas.
  • Playwright avec attente — chargez la page dans un navigateur sans tête, attendez 10-15 secondes (jusqu'à ce que le JS soit exécuté), extrayez les cookies et utilisez-les dans des requêtes HTTP normales. Économise des ressources : le navigateur est nécessaire uniquement pour obtenir les cookies, ensuite vous scrapez via requests.
  • Proxies résidentiels + navigateur stealth — cette combinaison donne plus de 95% de contournements réussis. Cloudflare voit l'IP réelle de l'utilisateur et l'empreinte correcte du navigateur.

Important : Cloudflare met constamment à jour sa protection. Ce qui fonctionnait en décembre 2024 peut ne pas fonctionner en mars 2025. Ayez toujours un plan de secours : résolution manuelle de CAPTCHA via des services 2Captcha/AntiCaptcha ou passage à l'API de la marketplace (si disponible).

Niveau 4 : Simulation du comportement de l'utilisateur

Les systèmes anti-bot avancés suivent les modèles de comportement. Un véritable utilisateur fait défiler la page, déplace la souris, revient parfois en arrière. Un bot ouvre les fiches produits avec un intervalle parfait de 2.000 secondes.

Comment imiter :

  • Randomisation des délais — au lieu de 3 secondes fixes, utilisez random.uniform(2.5, 5.0). Ajoutez des pauses longues rares (15-30 secondes), imitant la distraction d'un utilisateur.
  • Défilement de la page — dans Puppeteer/Playwright, ajoutez un défilement avant d'extraire des données : await page.evaluate(() => window.scrollBy(0, 500)).
  • Mouvements de la souris — la bibliothèque ghost-cursor pour Puppeteer génère des trajectoires réalistes de mouvement du curseur.
  • Transitions via la recherche — n'ouvrez pas les fiches produits directement par URL. Allez d'abord sur la page d'accueil, effectuez une recherche, cliquez sur le produit dans les résultats. Cela semble naturel.

Outils populaires pour le scraping avec support de proxies

Pour le scraping des caractéristiques des produits, il n'est pas nécessaire d'écrire du code depuis zéro. Il existe des outils prêts à l'emploi avec une interface visuelle, un support de proxies et un contournement automatique de la protection.

Octoparse — scraper sans code

Description : Application de bureau pour Windows/Mac avec un constructeur de scrapers visuel. Vous cliquez sur les éléments de la page (nom du produit, prix, caractéristiques), le programme crée automatiquement des règles d'extraction.

Support de proxies : Intégré. Dans les paramètres, vous indiquez une liste de proxies, le programme les fait tourner automatiquement. Supporte HTTP, HTTPS, SOCKS5. Il y a une intégration avec les fournisseurs Bright Data, Smartproxy.

Avantages : Pas besoin de code, fonctionne avec des sites JavaScript, planificateur de tâches intégré, exportation vers Excel/CSV/JSON.
Inconvénients : Abonnement payant à partir de 75$/mois, plus lent qu'un code en Python, limitations sur le nombre de pages dans la version gratuite.

Quand utiliser : Pour de petits projets (jusqu'à 50 000 produits), si vous n'êtes pas programmeur ou si vous avez besoin d'un prototype rapide.

ParseHub — scraper cloud

Description : Équivalent d'Octoparse, mais fonctionne dans le cloud. Vous configurez le scraper dans une application de bureau, et il s'exécute sur les serveurs de ParseHub. Pratique pour les tâches longues (scraping de 100 000+ produits).

Support de proxies : Seulement dans les plans payants (à partir de 149$/mois). Vous pouvez télécharger votre propre liste de proxies ou utiliser les IP résidentielles intégrées de ParseHub.

Avantages : Ne surcharge pas votre ordinateur, traitement automatique de la pagination, API pour intégration.
Inconvénients : Coûteux, support lent, difficultés de configuration pour des sites complexes.

Scrapy (Python) — pour les programmeurs

Description : Framework pour créer des scrapers en Python. L'option la plus flexible et rapide — vous pouvez scraper des millions de produits par jour. Nécessite une connaissance intermédiaire de Python.

Support de proxies : Via middleware. Solutions populaires : scrapy-rotating-proxies (rotation à partir d'une liste), scrapy-proxy-pool (intégration avec l'API des fournisseurs). La configuration prend 10-15 minutes.

Avantages : Gratuit, très rapide (requêtes asynchrones), contrôle total sur la logique, énorme communauté.
Inconvénients : Nécessite d'écrire du code, difficultés avec les sites JavaScript (nécessite une intégration avec Splash ou Playwright).

Quand utiliser : Pour des projets sérieux avec un volume de 100 000+ produits par jour, si vous avez un programmeur dans l'équipe.

Apify — marketplace de scrapers prêts à l'emploi

Description : Plateforme avec des milliers de scrapers prêts à l'emploi (appelés "acteurs") pour des sites populaires. Il existe des solutions prêtes pour Amazon, eBay, AliExpress. Pour les marketplaces russes, le choix est plus limité, mais vous pouvez commander un développement.

Support de proxies : Intégré dans tous les acteurs. Apify fournit ses propres proxies résidentiels (paiement par trafic) ou vous pouvez connecter les vôtres.

Avantages : Solutions prêtes, exécution cloud, API pour automatisation, proxies intégrés.
Inconvénients : Coûteux (à partir de 49$/mois + paiement des proxies), dépendance à la plateforme, limitations sur la personnalisation.

Comparaison des outils

Outil Nécessite du code ? Prix Vitesse Pour qui
Octoparse Non À partir de 75$/mois Moyenne Marketeurs, analystes sans programmation
ParseHub Non À partir de 149$/mois Moyenne Les mêmes, qui veulent une exécution cloud
Scrapy Oui (Python) Gratuit Très élevée Programmeurs, grands volumes de données
Apify Non (acteurs prêts) À partir de 49$/mois + trafic Élevée Entreprises, besoin de solutions prêtes
Puppeteer/Playwright Oui (JS/Python) Gratuit Moyenne (navigateurs lourds) Programmeurs, sites JS complexes

Configuration étape par étape des proxies dans le scraper

Examinons la configuration pratique des proxies en utilisant des outils populaires. Ces instructions conviennent pour le scraping de n'importe quelle marketplace, pas seulement russes.

Configuration dans Octoparse

Étape 1 : Ouvrez Octoparse et créez une nouvelle tâche de scraping. Entrez l'URL de la page de départ (par exemple, catégorie de produits sur Wildberries).

Étape 2 : Allez dans le menu "Settings" → "Advanced Settings" → "Proxy". Sélectionnez "Use custom proxy".

Étape 3 : Ajoutez les proxies au format :

http://username:password@proxy-server.com:8080
socks5://username:password@proxy-server.com:1080

Étape 4 : Activez l'option "Rotate proxy" et définissez l'intervalle de rotation. Pour Wildberries, il est recommandé de "Rotate on every 50 requests" ou "Rotate every 10 minutes".

Étape 5 : Cliquez sur "Test Proxy" — Octoparse vérifiera la disponibilité de chaque proxy. Supprimez ceux qui ne fonctionnent pas de la liste.

Étape 6 : Dans la section "Speed", définissez le délai entre les requêtes : 2-4 secondes pour les proxies résidentiels, 3-5 secondes pour les centres de données.

Configuration dans Scrapy (Python)

Étape 1 : Installez la bibliothèque pour la rotation des proxies :

pip install scrapy-rotating-proxies

Étape 2 : Créez un fichier proxies.txt avec la liste des proxies (un par ligne) :

http://user:pass@1.2.3.4:8080
http://user:pass@5.6.7.8:8080
socks5://user:pass@9.10.11.12:1080

Étape 3 : Dans le fichier settings.py de votre projet Scrapy, ajoutez :

ROTATING_PROXY_LIST_PATH = 'proxies.txt'

DOWNLOADER_MIDDLEWARES = {
    'rotating_proxies.middlewares.RotatingProxyMiddleware': 610,
    'rotating_proxies.middlewares.BanDetectionMiddleware': 620,
}

# Délai entre les requêtes (en secondes)
DOWNLOAD_DELAY = 3

# Randomisation du délai (±50%)
RANDOMIZE_DOWNLOAD_DELAY = True

# Requêtes parallèles (pas plus de 16 pour les proxies résidentiels)
CONCURRENT_REQUESTS = 8

Étape 4 : Scrapy fera automatiquement tourner les proxies à chaque requête. Si un proxy renvoie une erreur (HTTP 403, 429, timeout), il est marqué comme "mauvais" et temporairement exclu de la rotation.

Configuration dans Puppeteer (Node.js)

Étape 1 : Installez Puppeteer et le plugin pour le mode stealth :

npm install puppeteer puppeteer-extra puppeteer-extra-plugin-stealth

Étape 2 : Créez un script avec support de proxies :

const puppeteer = require('puppeteer-extra');
const StealthPlugin = require('puppeteer-extra-plugin-stealth');
puppeteer.use(StealthPlugin());

const proxyList = [
  'http://user:pass@proxy1.com:8080',
  'http://user:pass@proxy2.com:8080'
];

let currentProxyIndex = 0;

async function scrapeWithProxy(url) {
  const proxy = proxyList[currentProxyIndex];
  currentProxyIndex = (currentProxyIndex + 1) % proxyList.length;

  const browser = await puppeteer.launch({
    headless: true,
    args: [`--proxy-server=${proxy}`]
  });

  const page = await browser.newPage();
  
  // Authentification du proxy (si nécessaire)
  await page.authenticate({
    username: 'user',
    password: 'pass'
  });

  await page.goto(url, { waitUntil: 'networkidle2' });
  
  // Extraction des données
  const data = await page.evaluate(() => {
    return {
      title: document.querySelector('.product-title')?.innerText,
      price: document.querySelector('.product-price')?.innerText,
      // Ajoutez d'autres sélecteurs selon vos besoins
    };
  });

  await browser.close();
  return data;
}

// Exemple d'utilisation
scrapeWithProxy('https://example.com/product-page').then(data => {
  console.log(data);
});
```