Utilisation d'un proxy avec des Python Requests

Commentaires: 0

En résumé, les proxys sont des serveurs qui servent de couche externe de connexion aux services de réseau. Ils servent d'intermédiaires entre un ordinateur et le site dont un utilisateur veut extraire des informations. La demande de l'utilisateur, au lieu d'être directement envoyée au site concerné, est d'abord dirigée vers le proxy qui l'envoie ensuite au serveur final. C'est donc l'adresse IP du serveur mandataire que le site enregistre au lieu de celle de l'utilisateur.

Alors, pourquoi utiliser un proxy ?

  • L'anonymat :

Par exemple, s'il est nécessaire de recueillir des informations sur un site sans craindre les restrictions ou les blocages. Un proxy permet de masquer l'adresse IP de l'utilisateur réel et de modifier sa véritable identité numérique.

  • Contournement des restrictions :

Un proxy d'un pays spécifique où il n'y a pas de restrictions peut être utilisé. En effet, dans certains pays, l'accès à certains programmes et sites web est limité ou bloqué.

  • Équilibrage de la charge :

Si un grand nombre de demandes sont envoyées à un site particulier, il y a de fortes chances que le système soit chargé. Par conséquent, le risque de blocage est grand. L'utilisation simultanée de plusieurs serveurs mandataires permet aux utilisateurs de répartir uniformément les demandes vers le site en question, évitant ainsi le blocage.

Configuration et installation des Python Requests

Requests est une bibliothèque permettant d'envoyer des requêtes HTTP en utilisant Python. Elle simplifie l'envoi de requêtes GET et POST. L'utilisation de Requests Python sans proxy permet d'envoyer des requêtes HTTP, mais elle ne permet pas d'assurer l'anonymat ou de contourner les restrictions.

1. Installation de la bibliothèque des requêtes

Pour installer les requêtes, il suffit d'entrer la commande ci-dessous dans le terminal :


pip install requests

2. Vérification de l'installation

Pour vérifier que la bibliothèque requise est correctement configurée, vous devez ouvrir l'environnement de développement Python et exécuter la commande suivante :


import requests 

print(requests.__version__)

Si tout a été fait correctement, le script renverra le numéro de version.

Comment utiliser le proxy avec les Python Requests

Une fois la bibliothèque requests installée, nous pouvons commencer à exécuter des requêtes HTTP. Cependant, pour incorporer un proxy, certaines configurations dans Python doivent être effectuées.

Examinons les étapes à suivre pour configurer correctement un proxy pour les requêtes en Python. Nous examinerons séparément les Python Requests avec les configurations de proxies SOCKS.

1. Configuration du serveur proxy

L'utilisation de Python pour mettre en place un proxy est très facile pour les utilisateurs de la bibliothèque requests. Il faut que l'adresse du serveur mandataire soit transmise dans un dictionnaire, puis utilisée lors des requêtes HTTP.


proxies = {
    "http": "http://your-proxy-ip:port",
    "https": "http://your-proxy-ip:port",
}

response = requests.get("http://example.com", proxies=proxies)

2. Authentification par proxy

Lorsque l'on utilise Python Requests, l'authentification par proxy est facile à mettre en place. Regardons de plus près les détails.


proxies = { 
    "http": "http://username:password@your-proxy-ip:port", 
    "https": "http://username:password@your-proxy-ip:port", 
} 

response = requests.get("http://example.com", proxies=proxies)

Les deux nouveaux champs à remplir sont les suivants :

  • username - nom d'utilisateur proxy ;
  • password - mot de passe du proxy.

3. Utilisation des proxys SOCKS

Pour les utilisateurs qui ont besoin d'un niveau d'anonymat plus élevé, ou si vous travaillez avec des sites fortement restreints, les proxys HTTP standard peuvent ne pas fonctionner. Dans ce cas, les proxys SOCKS peuvent s'avérer plus efficaces.

Pour activer la prise en charge du proxy SOCKS, une bibliothèque supplémentaire doit être installée à l'aide de la commande ci-dessous :


pip install requests[socks]

Une fois installé, Python Requests vous permet de mettre en place un proxy SOCKS qui peut être utilisé comme indiqué dans l'exemple ci-dessous.


import requests

proxies = {
    "http": "socks5h://your-proxy-ip:port",
    "https": "socks5h://your-proxy-ip:port",
}

response = requests.get("http://example.com", proxies=proxies)

Si le serveur proxy a besoin d'une authentification, incluez-la comme indiqué ci-dessous.


proxies = {
    "http": "socks5h://username:password@your-proxy-ip:port",
    "https": "socks5h://username:password@your-proxy-ip:port",
}

Gérer les sessions avec des proxy dans les Python Requests

Lorsque vous effectuez plusieurs requêtes via un seul proxy, au lieu de l'ajouter à chaque requête, il est beaucoup plus efficace d'utiliser les sessions Python Requests avec le proxy.

Cette méthode d'utilisation des proxys permet de conserver les paramètres dans toutes les sessions. Elle simplifie également le code, améliore les performances et, surtout, facilite grandement la mise en œuvre.

1. Utilisation de sessions de Python Requests avec des proxy

Il est très facile de créer une session, il suffit de taper requests.Session().

Prenons l'exemple suivant:


import requests

# Création d'une session
session = requests.Session()

session.proxies = {
    "http": "http://username:password@your-proxy-ip:port",
    "https": "http://username:password@your-proxy-ip:port",
}

# Demande au cours de la session
response = session.get("http://example.com")

Toutes les Python Requests au sein de cette session utiliseront par défaut le proxy défini sans aucune configuration supplémentaire.

2. Gestion de plusieurs serveurs mandataires dans les Python Requests

Lorsque vous vous engagez activement sur un site web, que ce soit à des fins de scraping ou d'automatisation, l'utilisation répétée du même proxy peut entraîner le blocage de votre compte. Il est possible de gérer ce problème en faisant tourner les proxys si vous disposez de plusieurs serveurs proxy différents.

L'exemple suivant montre la mise en œuvre d'une boucle qui fait tourner les serveurs mandataires à chaque interaction avec la page web :


import requests
import random

proxies_list = [
    "http://username:password@your-proxy-ip[1]:port",
    "http://username:password@your-proxy-ip[2]:port",
    "http://username:password@your-proxy-ip[3]:port",
]

session = requests.Session()

for _ in range(5):
    proxy = random.choice(proxies_list)  # Choix aléatoire d'un mandataire
    session.proxies = {"http": proxy, "https": proxy}

    response = session.get("http://example.com")
    print(f"Used proxy: {proxy}")
    print(response.status_code)

Conclusion

En résumé, voici quelques suggestions qui pourraient vous aider à mieux gérer les proxies :

  • Utilisez des sessions pour ne pas avoir à définir un proxy à chaque demande.
  • Utilisez des proxys anonymes sans journaux pour une meilleure protection.
  • Pour éviter d'être bloqué, utilisez plusieurs proxies.

Dans cet article, nous avons abordé ce que sont les serveurs proxy, comment utiliser correctement un proxy dans les Python Requests, et gérer les proxys à travers des sessions pour simplifier le code. L'exemple montre également l'utilisation des proxys SOCKS et normaux, comment l'authentification est gérée, et la gestion des proxys.

Commentaires:

0 Commentaires