Maîtriser le Web Scraping : Comment faire pivoter les proxies en Python
Raluca Penciuc le 03 février 2023

À l'ère du numérique, l'utilisation du web scraping est devenue de plus en plus populaire. Toutefois, cette popularité croissante s'accompagne d'une surveillance accrue de la part des sites web et des services qui ne souhaitent pas que leurs données soient récupérées.
Si vous cherchez à automatiser vos tâches d'extraction de données, vous avez peut-être rencontré le besoin d'utiliser des proxys pour masquer votre adresse IP. Toutefois, si vous utilisez le même proxy pendant une longue période, vous risquez d'être bloqué. C'est là que la rotation de proxy entre en jeu.
Dans cet article, nous allons explorer comment faire tourner les proxys en Python, y compris l'installation des prérequis nécessaires, l'utilisation d'un seul proxy, et l'augmentation de la vitesse lors de la rotation des proxys. Nous discuterons également de quelques conseils sur la façon de tirer le meilleur parti de vos efforts de rotation de proxy.
À la fin de ce guide, vous serez en mesure de faire pivoter les proxies comme un pro et de vous assurer que vos efforts de grattage de sites Web restent discrets. C'est parti !
Mise en place de l'environnement
Avant de commencer, assurons-nous que nous disposons des outils nécessaires. Tout d'abord, téléchargez et installez la dernière version de Python, à partir du site officiel.
Pour ce tutoriel, nous utiliserons Visual Studio Code comme environnement de développement intégré (IDE), mais vous pouvez utiliser tout autre IDE de votre choix. Créez un nouveau dossier pour votre projet et un nouveau fichier index.py, dans lequel nous écrirons notre code.
Ouvrez maintenant le terminal et exécutez la commande suivante pour installer le paquetage nécessaire à l'envoi des requêtes :
pip install requests
Et c'est tout ! Nous pouvons commencer à coder.
Proxifier une requête GET
Commençons par envoyer une simple requête GET. Dans le fichier index.py nouvellement créé, écrivez le code suivant :
import requests
response = requests.get('https://api.ipify.org/?format=json')
print(response.text)
Exécutez ensuite le script à l'aide de la commande suivante :
py index.py
Vous remarquerez que le résultat est votre adresse IP réelle et que, quel que soit le nombre de fois que vous exécutez le script, il affichera toujours le même résultat.
L'idée de ce guide est de vous montrer comment vous pouvez cacher votre adresse IP réelle et comment obtenir une IP différente à chaque exécution de script. C'est là que les proxys entrent en jeu. Vous les trouverez sous la structure suivante :
http://proxy_username:proxy_password@proxy_host:proxy_port
Le protocole peut être "http", "https", "socks4" ou "socks5", tandis que le "proxy_username" et le "proxy_password" sont facultatifs.
Le code mis à jour devrait ressembler à ceci :
import requests
proxy_schema = {
"http": "http://proxy_username:proxy_password@proxy_host:proxy_port",
"https": "https://proxy_username:proxy_password@proxy_host:proxy_port"
}
URL = 'https://api.ipify.org/?format=json'
response = requests.get(URL, proxies=proxy_schema)
print(response.text)
Vous pouvez remplacer le modèle de proxy par un vrai, fourni par un service de proxy gratuit, juste pour les besoins du test. Il convient toutefois de préciser qu'ils ne sont pas fiables et ne doivent être utilisés qu'à des fins de test.
Quoi qu'il en soit, étant donné que même les meilleurs proxys peuvent parfois être instables, il est préférable de gérer les exceptions dans notre code :
try :
URL = 'https://api.ipify.org/?format=json'
response = requests.get(URL, proxies=proxy_schema, timeout=30)
print(response.text)
except :
print('Impossible de se connecter au proxy')
Si vous avez réussi à trouver un proxy gratuit qui fonctionne, après avoir exécuté le code, vous devriez remarquer que le résultat a changé, car il ne s'agit plus de votre véritable adresse IP.
Rotation des mandataires
Voyons maintenant comment utiliser plusieurs proxys pour anonymiser nos requêtes. En même temps, nous allons nous occuper de la vitesse de notre script. Nous enverrons les requêtes de manière asynchrone, en utilisant la bibliothèque "concurrent.futures".
Supposons tout d'abord que nous disposions de la liste suivante de mandataires (ou pool de mandataires) :
proxy_pool = [
"http://191.5.0.79:53281",
"http://202.166.202.29:58794",
"http://51.210.106.217:443",
"http://5103.240.161.109:6666"
]
Il peut être codé en dur ou lu à partir d'un fichier, au choix. À partir de là, nous pouvons écrire le code suivant :
from concurrent.futures import ThreadPoolExecutor
with ThreadPoolExecutor(max_workers=8) as pool :
for response in list(pool.map(scrape_job, proxy_pool)) :
pass
Nous initialisons un pool de threads avec un maximum de 8 travailleurs, pour exécuter la fonction "scrape_job" (qui sera bientôt définie), qui recevra comme paramètre un élément de la liste "proxy_pool".
Maintenant, la fonction "scrape_job" représentera le code que nous avons écrit précédemment, avec un petit ajustement :
def scrape_job(proxy):
try:
URL = 'https://api.ipify.org/?format=json'
proxy_scheme = {
"http": proxy,
"https": proxy
}
response = requests.get(URL, proxies=proxy_scheme, timeout=30)
print(response.text)
except:
print('Unable to connect to the proxy')
La variable "proxy_scheme" sera désormais attribuée dynamiquement, en fonction du proxy que nous envoyons en tant que paramètre. Le script peut être étendu à plusieurs URL, avec une valeur de timeout spécifique pour chacune d'entre elles.
L'exécution du script devrait envoyer plusieurs requêtes GET en même temps, dont le résultat serait des adresses IP différentes (si les proxys gratuits fonctionnent).
Augmentation de l'échelle
Lorsqu'il s'agit d'entamer la rotation des procurations, il existe quelques bonnes pratiques qui peuvent contribuer à rendre cette rotation aussi efficace que possible. Voici quelques conseils à garder à l'esprit :
Les proxies gratuits sont à proscrire
Bien que les services proxy gratuits puissent sembler une option rentable, ils sont souvent peu fiables et peuvent même mettre en péril vos efforts de scraping. Envisagez d'investir dans un service proxy premium qui offre un niveau de sécurité et de fiabilité plus élevé.
Tester avant de gratter
Avant de commencer le scraping, il est conseillé de tester votre rotation de proxy pour vous assurer qu'elle fonctionne comme prévu. Cela vous permettra d'identifier et de résoudre les problèmes éventuels avant qu'ils ne se produisent.
Utiliser la rotation des user-agents
La rotation de votre adresse IP est un moyen efficace de contourner les mesures anti-scraping, mais ce n'est pas la seule technique à utiliser. En associant la rotation de l'adresse IP à la rotation de l'agent utilisateur, qui modifie la signature du navigateur, vous pouvez rendre encore plus difficile la détection et le blocage de votre scraper par les sites web.
Services proxy premium
Tous les services proxy ne sont pas égaux, il est donc important de faire des recherches et de choisir un fournisseur qui offre un niveau élevé de sécurité et de fiabilité. Recherchez un service qui offre un large éventail d'IP et de lieux, ainsi que des fonctions telles que la rotation automatique des IP et la navigation anonyme.
Utiliser une API de scraping web
L'utilisation d'une API de web scraping peut être un excellent moyen de simplifier le processus de rotation des proxys, en particulier si vous êtes novice en matière de web scraping. Une bonne API de scraping s'occupera de la rotation des proxys pour vous et vous fournira une interface propre et facile à utiliser pour accéder aux données dont vous avez besoin.
Son mécanisme de rotation du proxy permet d'éviter complètement les blocages, et sa base de connaissances étendue permet de rendre aléatoires les données du navigateur afin qu'il ressemble à un véritable utilisateur.
Toutefois, si vous souhaitez vous en tenir à votre propre scraper, ou si votre cas d'utilisation est trop complexe, vous avez également la possibilité d'accéder à l'API en tant que proxy. La demande sera simplement redirigée vers l'API tandis que votre script profitera de la rotation du proxy.
Conclusion
En résumé, savoir faire tourner les proxys est une technique essentielle pour le web scraping, et Python la rend facile à mettre en œuvre. En suivant les étapes décrites dans ce guide, vous avez acquis des connaissances allant de la mise en place d'un proxy pour une requête unique à la façon d'accélérer le processus de rotation des proxys.
En outre, vous avez découvert quelques conseils supplémentaires sur la rotation des mandataires lorsqu'il s'agit d'augmenter la taille de votre projet.
N'oubliez pas qu'une rotation de proxy efficace peut considérablement augmenter le succès de vos projets de web scraping, et ce guide vous a fourni les outils et les connaissances nécessaires pour le faire comme un pro. Bon scraping !
Nouvelles et mises à jour
Restez au courant des derniers guides et nouvelles sur le web scraping en vous inscrivant à notre lettre d'information.
We care about the protection of your data. Read our <l>Privacy Policy</l>.Privacy Policy.

Articles connexes

Explorez la comparaison approfondie entre Scrapy et Selenium pour le web scraping. De l'acquisition de données à grande échelle à la gestion de contenus dynamiques, découvrez les avantages, les inconvénients et les caractéristiques uniques de chacun. Apprenez à choisir le meilleur framework en fonction des besoins et de l'échelle de votre projet.


Apprenez à utiliser les proxys avec Axios et Node.js pour un web scraping efficace. Conseils, exemples de code et avantages de l'utilisation de WebScrapingAPI inclus.


Découvrez 3 façons de télécharger des fichiers avec Puppeteer et construisez un scraper web qui fait exactement cela.
