Qu'est-ce qu'un serveur proxy ?
En bref, les proxys sont des intermédiaires entre les clients et les serveurs. Un proxy agit comme un intermédiaire pour les requêtes des clients qui cherchent des ressources sur d'autres serveurs. Le flux de la relation client - proxy - serveur se présente comme suit :
- Un client se connecte au serveur proxy et demande un service à un serveur de destination
- Le serveur proxy évalue la requête, se connecte au serveur de destination et récupère le service demandé
- Une fois reçu, il transfère le service au client, sans le modifier.
En outre, les proxys sont également utilisés pour :
- renforcer la sécurité
- améliorer les performances du réseau
- filtrer le trafic réseau
- bloquer les sites Web indésirables
- contourner les restrictions géographiques d'accès à Internet
Quelle est la définition des proxys ISP ?
Comme nous l'avons évoqué dans l'introduction, il existe principalement trois types de proxys. Pour les deux premiers, la définition est assez simple. Les proxys de centre de données sont des proxys appartenant à des centres de données. Cela signifie que leurs adresses IP sont associées au centre de données. Les proxys résidentiels ont une adresse IP associée à un emplacement physique. De plus, ces adresses IP sont enregistrées au nom d'un individu ou d'une organisation spécifique.
En ce qui concerne les proxys ISP, il y a un peu de confusion. Tout d'abord, ISP signifie « fournisseur d'accès Internet ». Et comme vous pouvez l'imaginer, toutes les adresses IP résidentielles proviennent de FAI. Eh bien, ce petit détail répond en partie à la question. Les proxys ISP se situent quelque part entre les proxys de centre de données et les proxys résidentiels.
La plupart du temps, vous constaterez qu’un proxy ISP est en réalité un proxy résidentiel, hébergé sur une machine de centre de données. Par conséquent, ces proxys héritent des avantages des deux autres. Et la liste des avantages comprend principalement (mais sans s’y limiter) :
- Légitimité de l'adresse IP : l'utilisation d'une adresse IP résidentielle réduit le risque de détection par les bots
- Vitesse : l'hébergement du proxy sur un serveur de centre de données améliore les performances du service
Pourquoi utiliser des proxys ISP pour le web scraping ?
L'utilisation de proxys pour le web scraping est un besoin assez courant. Mais avant d'aborder plus particulièrement les proxys ISP, laissez-moi vous expliquer pourquoi les proxys sont importants pour le scraping. Pour commencer, définissons ce qu'est le web scraping. De manière générale, le web scraping consiste à accéder à un serveur dans le but d'en extraire des ressources. Et cela se fait généralement à l'aide de logiciels automatisés. De plus, le web scraping implique généralement l'envoi d'un grand nombre de requêtes au serveur ciblé en peu de temps.
Comme vous pouvez l'imaginer, cela impose une charge importante au serveur. C'est pourquoi les plateformes web n'apprécient généralement pas que des scrapers accèdent à leurs serveurs. Pour empêcher l'accès des logiciels automatisés, ces plateformes utilisent généralement un système de détection et de prévention. Et l'une des méthodes de détection est on ne peut plus simple : vérifier l'adresse IP. Il est logique de penser que les adresses IP associées à des centres de données sont plus susceptibles d'héberger des bots.
Et je pense que cela répond assez bien à la question. Si l’on tient compte des principaux avantages évoqués précédemment, on comprendra mieux la réponse. Nous utilisons principalement des proxys ISP dans le web scraping pour augmenter notre taux de réussite tout en conservant des performances optimales. Mais ce n’est pas tout. Explorons d’autres scénarios :
#1 : Accéder à des sites web spécifiques à une localisation
Je suis sûr que vous avez déjà rencontré des sites web qui ciblent les visiteurs provenant de lieux spécifiques. En SEO, ce concept est connu sous le nom de contenu spécifique à la géolocalisation. Concrètement, les sites web vérifient d’abord l’origine de l’adresse IP du client. Et si celle-ci correspond à leur modèle (imaginons qu’il s’agisse d’un site web américain ciblant uniquement des clients américains), ils autoriseront le client à se connecter. Si, en revanche, le client provient d’un pays étranger, le site web bloquera son accès.
En matière de web scraping, c'est un scénario très courant. Pour contourner cette restriction, nous utiliserons donc des proxys provenant de ce pays spécifique. Vous pouvez commencer par essayer un proxy de centre de données. Si l'accès vous est toujours refusé, vous pouvez alors essayer des proxys ISP, qui offrent un taux de réussite plus élevé.
#2 : Envoi d'un grand nombre de requêtes
Lorsque nous souhaitons accéder à de nombreuses ressources sur un serveur, nous pouvons imposer une charge importante à ce serveur. Et les serveurs considèrent généralement cela comme un abus et bloquent l'adresse IP qui envoie toutes ces requêtes. En web scraping, pour éviter d'être bloqué, nous utilisons un système de rotation qui alterne entre les proxys ISP. De cette manière, le serveur « pensera » que ce sont différents utilisateurs résidentiels qui y accèdent. Ainsi, les requêtes en masse ne seront pas bloquées.
Comment utiliser les proxys ISP pour le web scraping ?
Il existe principalement deux types de scrapers web :
- Basés sur de simples clients HTTP
- Capables de rendre du JavaScript
Le premier type n’est pas très complexe et est généralement plus rapide, car il ne nécessite pas de rendu JavaScript. Cela revient à envoyer une commande `curl`. Cependant, la plupart des sites web modernes s’appuient fortement sur JavaScript. Un bon exemple est l’utilisation d’un simple client HTTP pour scraper une plateforme web construite avec React ou Next JS. Dans de tels cas, vous obtiendrez probablement un fichier HTML indiquant « veuillez activer JavaScript ». Voici un bon exemple d’application que j’ai développée avec React :
~ » curl https://<REACT_APP>.com
...<body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div></body></html>
Ainsi, si vous souhaitez créer un scraper moderne, vous devrez très probablement utiliser une version automatisée d’un navigateur web. Cela vous permettra de rendre le JavaScript et d’effectuer différentes actions sur votre cible.
J'utilise généralement JavaScript et Puppeteer pour mes exemples. Mais je pense que cette fois-ci, je vais passer à mon premier langage de programmation préféré : Python. Et la solution incontournable pour les pilotes Web en Python est Selenium. Voyons donc comment créer un scraper Web avec Selenium et des proxys ISP :
#1 : Créer un nouveau projet
Commençons par créer un nouveau répertoire qui contiendra nos fichiers. Ensuite, ouvrez le projet dans votre IDE préféré (le mien est Visual Studio Code) et ouvrez un nouveau terminal. Pour ouvrir un nouveau terminal depuis VSCode, allez dans Terminal > Nouveau terminal. Nous allons créer un nouvel environnement virtuel au sein du projet et l’activer :
~ » python3 -m venv env && source env/bin/activate
Dans votre projet, créons un nouveau fichier « scraper.py » et ajoutons-y du code. La structure de base d’un scraper avec Selenium, d’un point de vue de la programmation fonctionnelle, est la suivante :
from selenium import webdriver
def scrape_page(url):
driver = webdriver.Chrome()
driver.get(url)
return driver.page_source
Et c'est tout. En 5 lignes de code :
- Nous lançons un navigateur automatisé
- Nous accédons à notre cible
- Et nous collectons ses ressources.
Mais n’oubliez pas que nous voulons utiliser des proxys ISP avec Selenium. De sorte que notre navigateur ne soit pas le plus furtif, mais disons plutôt le plus indétectable. Heureusement, les choses sont assez simples en Python (et c’est pour ça que je l’adore). Voici comment nous introduisons des proxys dans Selenium :
from selenium import webdriver
def scrape_page(url, proxy):
options = webdriver.ChromeOptions()
options.add_argument('--proxy-server=%s' % proxy)
driver = webdriver.Chrome(options=options)
driver.get(url)
return driver.page_source
print(scrape_page('http://httpbin.org/ip', '75.89.101.60:80'))
Nous avons simplement ajouté quelques lignes supplémentaires à l'intérieur de la fonction. La dernière sert à appeler la fonction. Si vous exécutez le script maintenant, nous devrions probablement voir que la requête provient de 75.89.101.60. Pour les besoins de cet exemple, j’ai utilisé un serveur proxy gratuit disponible ici. Mais si vous souhaitez créer un véritable scraper, je vous conseille de vous tourner vers des sources plus fiables. De préférence, des fournisseurs de proxy qui proposent également des proxys ISP.
Comment vérifier l'origine d'une adresse IP ?
Il existe plusieurs façons de vérifier si une adresse IP provient d’un proxy ISP. Mais puisque nous parlons de DevOps aujourd’hui, vous devriez probablement vous familiariser avec l’utilisation du terminal. Aujourd’hui, je vais vous présenter `whois`.
Sous Unix et les systèmes d'exploitation de type Unix, `whois` est intégré. Il s'agit d'un utilitaire en ligne de commande qui permet aux utilisateurs de rechercher des informations sur des cibles. Ces cibles peuvent être soit des noms de domaine, soit des adresses IP. Ouvrons donc une nouvelle fenêtre de terminal et testons cette commande.
Tout d'abord, envoyons une commande `curl` à l'API proposée par ipify.org. De cette façon, vous pouvez obtenir votre propre adresse IP et effectuer le test en l'utilisant. Si vous ne connaissez pas bien `curl`, consultez simplement mon article sur l'utilisation de curl.
~ » curl api.ipify.org
<IP_ADDRESS>
Maintenant que nous avons une adresse IP à tester, envoyez simplement votre commande `whois`. J'ai utilisé ma propre adresse IP, mais n'hésitez pas à remplacer <IP_ADDRESS> par la vôtre :
~ » whois <IP_ADDRESS>
...
inetnum: 82.78.XX.0 - 82.78.XX.XX
netname: RO-RESIDENTIAL
descr: RCS & RDS Residential CGN
descr: City: Bucuresti
remarks: INFRA-AW
country: RO
...
Le résultat est plus long, mais je voulais vous donner un aperçu de la facilité avec laquelle une adresse IP résidentielle est détectée. Il existe également des API publiques qui suivent les adresses IP des centres de données, comme celle proposée par incolumitas.
Conclusions
Aujourd’hui, nous avons exploré à la fois les compétences DevOps et de codage nécessaires à la création d’un scraper web. Pour conclure, je vais vous poser une question simple. Peut-on dire que les proxys ISP ne sont rien d’autre que des proxys de centre de données, cachés derrière une adresse IP résidentielle ? Je pense que ce n’est pas la définition la plus précise, mais elle décrit certainement assez bien ces proxys.
Chez Web Scraping API, nous utilisons à la fois des proxys résidentiels et des proxys de centre de données. En effet, certaines cibles autorisent le trafic non résidentiel, tandis que d’autres ne le permettent pas. Si vous souhaitez en savoir plus sur la manière d’utiliser les proxys avec notre API, consultez notre documentation.




