Introduction
Le web scraping est un outil puissant qui vous permet d'extraire des informations précieuses à partir de sites web. Cependant, il peut également surcharger les serveurs des sites que vous explorez, c'est pourquoi de nombreux sites bloquent les adresses IP qui envoient trop de requêtes. Pour éviter cela, vous pouvez utiliser des proxys pour envoyer vos requêtes. Dans cet article, je vais vous montrer comment utiliser Python avec des proxys et comment faire tourner les adresses IP des proxys pour éviter d'être bloqué.
Configuration
Avant de commencer, vous devez disposer des prérequis suivants :
✅ Python installé
✅ Une certaine expérience avec Python
✅ La bibliothèque Python requests également installée
✅ Une liste d'adresses IP et de ports proxy
Pour installer Python, vous devez télécharger le programme d'installation de Python depuis le site officiel de Python : https://www.python.org/downloads/
Vous pouvez choisir la dernière version de Python 3. Il est recommandé d'utiliser la dernière version de Python pour bénéficier des dernières fonctionnalités et mises à jour de sécurité.
Une fois le téléchargement terminé, lancez le programme d'installation et suivez les instructions pour installer Python sur votre ordinateur. Pendant le processus d'installation, veillez à cocher l'option permettant d'ajouter Python au PATH de votre système, ce qui vous permettra d'exécuter Python depuis la ligne de commande.
Une fois l'installation terminée, vous pouvez vérifier que Python est correctement installé en ouvrant une invite de commande ou un terminal et en exécutant la commande `python --version`. Cela devrait afficher la version de Python que vous avez installée.
Vous pouvez vérifier si le paquet `python-requests` est installé en ouvrant le terminal et en exécutant la commande suivante :
$ pip freeze
`pip` est un gestionnaire de paquets qui devrait être fourni avec les versions récentes de Python. Si, pour une raison quelconque, vous devez installer `pip` séparément, vous pouvez suivre les instructions de ce guide.
`pip freeze` affichera tous vos paquets Python actuellement installés ainsi que leurs versions. Vérifiez si le module `requests` figure dans cette liste. Si ce n'est pas le cas, installez-le en exécutant la commande suivante :
$ pip install requestsConfiguration des proxys
Je vais vous expliquer dans cette section comment configurer des proxys avec `python-requests`. Pour commencer, nous avons besoin d'un proxy opérationnel et de l'URL à laquelle nous voulons envoyer la requête.
Utilisation de base
import requests
proxies = {
'http': 'http://proxy_ip:proxy_port',
'https': 'http://secure_proxy_ip:proxy_port',
}
res = requests.get('https://httpbin.org/get', proxies=proxies)
Si vous ne disposez d'aucun proxy privé pour tester ce code, vous pouvez trouver un proxy public gratuit dans la liste disponible sur freeproxylists.net. Veuillez noter que les proxys de ce site ne sont pas destinés à être utilisés dans un environnement de production et peuvent ne pas être fiables.
Le dictionnaire `proxies` doit avoir exactement la même structure que celle indiquée dans l'exemple de code. Vous devez fournir un proxy à utiliser pour les connexions HTTP et un autre pour les connexions HTTPS. Ces proxys peuvent être différents ou non. Vous pouvez utiliser le même proxy pour plusieurs protocoles.
Notez également que j'ai utilisé le schéma HTTP dans l'URL du proxy pour les deux connexions. Tous les proxys ne disposent pas d'un certificat SSL. La connexion au proxy s'effectuera via HTTP dans les deux cas.
Pour vous authentifier auprès d'un proxy, vous pouvez utiliser cette syntaxe :
http://user:pass@working-proxy:portVariables d'environnement
Si vous ne prévoyez pas d'utiliser plusieurs ensembles de proxys, vous pouvez les exporter sous forme de variables d'environnement.
Voici comment exporter des variables d'environnement sur un shell Linux
$ export HTTP_PROXY='http://proxy_ip:proxy_port'
$ export HTTP_PROXYS='http://secure_proxy_ip:proxy_port'
Pour vérifier l'environnement, il suffit d'exécuter
$ env
Voici comment exporter des variables d'environnement sur PowerShell
>_ $Env:HTTP_PROXY='http://proxy_ip:proxy_port'
>_ $Env:HTTP_PROXYS='http://secure_proxy_ip:proxy_port'
Pour vérifier l'environnement, il suffit d'exécuter
>_ Get-ChildItem -Path Env:
Voici comment exporter des variables d'environnement dans l'invite de commande
\> set HTTP_PROXY='http://proxy_ip:proxy_port'
\> set HTTP_PROXYS='http://secure_proxy_ip:proxy_port'
Pour vérifier l'environnement, il suffit d'exécuter
\> set
De cette façon, vous n'avez pas besoin de définir de proxys dans votre code. Il suffit d'envoyer la requête et cela fonctionnera.
Comment lire la réponse ?
Vous pouvez lire vos données de nombreuses façons, mais dans la plupart des cas, vous souhaiterez les lire sous forme de texte brut ou de chaîne encodée en JSON.
Texte brut :
response = requests.get(url)
text_resp = response.text
JSON : pour les réponses au format JSON, le package requests fournit une méthode intégrée.
response = requests.get(url)
json_resp = response.json()Sessions proxy
Vous souhaiterez peut-être également extraire des données de sites web qui utilisent des sessions. Dans ce cas, vous devez créer un objet session. Commencez par créer une variable nommée `session` et attribuez-lui la méthode `Session()` de requests. Vous devez ensuite attribuer les proxys à l'attribut `.proxies` de la session. Envoyez ensuite votre requête en utilisant l'objet `session` déjà créé. Cette fois-ci, il vous suffit de passer l'URL en argument.
import requests
session = requests.Session()
session.proxies = {
'http': 'http://proxy_ip:proxy_port',
'https': 'http://secure_proxy_ip:proxy_port',
}
res = session.get('https://httpbin.org/get')
Veillez à remplacer `proxy_ip` et `proxy_port` par l'adresse IP et le port réels de votre proxy.
Comment faire tourner les adresses IP des proxys
Pour éviter d'être bloqué par les sites web, il est important de faire tourner vos adresses IP proxy. Une façon de procéder consiste à créer une liste d'adresses IP et de ports proxy, puis à sélectionner des proxys au hasard lors de l'envoi des requêtes.
Voici un exemple :
def proxy_request(url, **kwargs):
while True:
try:
proxy = random.randint(0, len(ip_addresses) - 1)
proxies = {
'http': ip_addresses(proxy),
'https': ip_addresses(proxy)
}
response = requests.get(url, proxies=proxies, timeout=5, **kwargs)
print(f"Currently using proxy: { proxy['http'] }")
break
except:
print("Error encoutered, changing the proxy...")
return response
print(proxy_request('https://httpbin.org/get'))Faites appel à un professionnel
Bien qu'il soit possible de gérer vos propres proxys à l'aide de Python, ce processus est chronophage et l'obtention d'un ensemble de proxys de qualité peut vous coûter beaucoup de temps et d'argent. Pour gagner du temps et de l'argent, vous pouvez utiliser un outil de scraping professionnel. WebScrapingAPI intègre des fonctionnalités de gestion et de rotation des proxys. Nous disposons d'un pool de proxys vérifiés et de haute qualité, qui sont plus fiables et peuvent vous faire gagner du temps et de l'argent à long terme.
Nous proposons également un mode proxy que vous pouvez essayer gratuitement. Pour obtenir une clé API gratuite, il vous suffit de créer un compte et de commencer l'essai de WebScrapingAPI. Voici un exemple de code illustrant comment utiliser notre mode proxy :
import requests
def get_params(object):
params = ''
for key,value in object.items():
if list(object).index(key) < len(object) - 1:
params += f"{key}={value}."
else:
params += f"{key}={value}"
return params
API_KEY = '<YOUR_API_KEY>'
TARGET_URL = 'http://httpbin.org/get'
PARAMETERS = {
"proxy_type":"datacenter",
"device":"desktop"
}
PROXY = {
"http": f"http://webscrapingapi.{ get_params(PARAMETERS) }:{ API_KEY }@proxy.webscrapingapi.com:80",
"https": f"https://webscrapingapi.{ get_params(PARAMETERS) }:{ API_KEY }@proxy.webscrapingapi.com:8000"
}
response = requests.get(
url=TARGET_URL,
proxies=PROXY,
verify=False
)
print(response.text)
Veuillez noter que si vous souhaitez vous connecter au mode proxy via https, votre code doit être configuré pour ne pas vérifier les certificats SSL. Dans ce cas, il s'agirait de `verify=False` puisque vous travaillez avec Python Requests.
Conclusion
L'utilisation de proxys est un moyen efficace d'éviter d'être bloqué lors du web scraping. En alternant les adresses IP des proxys et en utilisant un pool de proxys, vous pouvez réduire les risques de blocage et augmenter vos chances de réussite. Cependant, la gestion de vos propres proxys peut s'avérer fastidieuse et l'acquisition d'un ensemble de proxys de qualité peut demander beaucoup de temps et d'argent.
En vous abonnant à un service de proxy premium, tel que WebScrapingAPI, vous aurez accès à diverses fonctionnalités, telles que la rotation d'adresses IP et la possibilité de basculer entre des proxys de centre de données et des proxys résidentiels.
Nous espérons que cet article vous a permis de mieux comprendre comment utiliser un proxy avec HttpClient et comment cela peut vous aider dans vos besoins de scraping. Inscrivez-vous à notre essai gratuit de 14 jours pour tester notre service et découvrir toutes ses fonctionnalités.




